Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2004
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Modificando el "constructor Create" del Form

Buenas,

Ultimamente he tenido que modifificar el constructor de los formularios de mi aplicación para agregar uno o más parámetros que me permiten "personalizar" en tiempo de ejecución los formularios de mi aplicación.

Algo tan simple como cambiar el caption, ocultar componentes, seleccionar las tablas a usar y eso.

Normalmente uso un código así:

Código Delphi [-]
f := TfActComprasOrd.Create(Self, IdFormulario, TComponent(Sender).tag, CampoClave);
If f <> nil Then
   Begin  
   Try
      f.ShowModal;
   Finally
      f.Free;
      End;
   End;

Donde:
IdFormulario me dice el archivo a usar
TComponent(Sender).tag es el tag de los botones incluir/modificar/Borrar y
CampoClave es el valor del campo clave (index) del registro a usar

Con esa estructura me ahorro programar independientemente una acción para cada una de las funciones disponibles. Asigno un Tag a cada boton y/o Acción y enlazo el OnExecute al código anterior.

Para que todo funcione tengo que sobreescribir el Constructor del formulario generamente algo así:

Código Delphi [-]
constructor Create(Owner: TComponent;IdFormulario, IdAccion : Integer; 
                           CampoClave: String); Virtual;

Por supuesto la primera línea del código del metodo es:

Código Delphi [-]
inherited create(Owner);

Mi duda es si debo usar Virtual u Overrride (o algún otro modificador) para asegurarme de que la herencia del constructor Create sea la correcta ¿?

Cambio la pregunta:

¿ Esa forma de trabajar es Correcta en OOP ?

Gracias
__________________
Sitrico
Responder Con Cita
  #2  
Antiguo 01-10-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
La unica diferencia a la manera como yo lo trabajo(no se si e la correcta) es q en lugar de virtual al momento de declararlolo coloco como override, de resto todo igual
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 01-10-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por sitrico
...Para que todo funcione tengo que sobreescribir el Constructor del formulario generamente algo así:

Código Delphi [-]
constructor Create(Owner: TComponent;IdFormulario, IdAccion : Integer; 
CampoClave: String); Virtual;

Mi duda es si debo usar Virtual u Overrride
Override lo que te asegura es que sobreescribes un método de la clase padre; sólo puedes utilizar override si los parámetros de tu método son los mismos que los de la clase padre.
En cuanto a virtual, lo que indicas es que ese método puede ser sobreescrito (utilizando override) en las clases heredadas de la actual.

En principio en tu constructor no puedes utilizar override puesto que la clase padre es TForm (lo supongo pq no dices lo contrario) y son diferentes parámetros (creo que el compilador se quejará si intentas hacerlo...); Sí puedes utilizar Virtual (si lo deseas), y lo que estás diciendo es que en posibles clases heredadas se podrá volver a redefinir el create (si no estás pensando en heredare nada es irrelevante).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:28:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi