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 19-05-2003
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 21
lafirma Va por buen camino
Constructor de forms

necesito enviar parametros a un form, se me ocurre hacerlo al momento de contruirlo (por lo que los parametros de este constructor son varias ademas de owner), pero cuando escribo el constructor me da un warning indicandome que mi constructor sobreescribe el constructor de TCustomForm
que puedo hacer para solucionar esto y poder hacer constructores sin problemas?
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #2  
Antiguo 19-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Mira de hacer un inherited de TForm en el Contructor, algo asi

Código:
private
    MiVarLocal: integer;

public
   constructor Create2(Aowner : TComponent; _MiVarLocal: integer);

......

implemantation

constructor TForm1.Create2(Aowner : TComponent; _MiVarLocal: integer);
begin
     inherited Create(Aowner);

     MiVarLocal := _MiVarLocal;
end;
Espero te sirva
Responder Con Cita
  #3  
Antiguo 19-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Yo te recomendaría utilizar el evento OnCreate, pero si esto no te sirve, lo que tenés que hacer es sobrescribir el método:

Código:
  TForm1 = class(TForm)
  public
    constructor Create(AOwner: TComponent); override;
  end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 31-05-2003
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Buen día a todos!

Lafirma:

El mensaje de precaución del compilador te indica que estás creando en una clase un nuevo método con el mismo nombre de una clase ancestral, lo cual dificulta que el método ancestral pueda ser llamado desde las unidades que utilicen la nueva clase.

Para evitar este problema, procuro darle nombres únicos a los nuevos métodos, a menos que se trate de una redefinición sustitutiva o envolvente (como sucede con los métodos virtuales). Te recomiendo darle el nombre "Crear" a tu nuevo constructor.

Si éste ha de recibir el parámetro AOwner (además de los nuevos parámetros), dentro de él coloca la sentencia

Create (AOwner);

la cuál es preferible sobre


Inherited Create (AOwner);

Esto último es muy importante ya que el constructor virtual Create podría ser redefinido (Override) después en la nueva clase o en una clase descendiente de ella. Bajo esa situación, el no usar Inherited permite llamar al constructor Create correcto.

Espero esto sea de utilidad. Seguimos en contacto.

Al González .
Responder Con Cita
  #5  
Antiguo 01-06-2003
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 21
lafirma Va por buen camino
Bueno, ya he solucionado un poco mi situacion, lo que hice fue que en el constructor nuevo aplique la directiva reintroduce, el codigo quedo asi:
constructor Create(AOwner: TComponent; Data: TIBDataSet; Op: Char); reintroduce;
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #6  
Antiguo 07-11-2006
Flecha Flecha is offline
Miembro
 
Registrado: nov 2006
Posts: 59
Poder: 18
Flecha Va por buen camino
Question

Cita:
Empezado por lafirma
Bueno, ya he solucionado un poco mi situacion, lo que hice fue que en el constructor nuevo aplique la directiva reintroduce, el codigo quedo asi:
constructor Create(AOwner: TComponent; Data: TIBDataSet; Op: Char); reintroduce;
Una pregunta. ¿En qué se diferencian exactamente "reintroduce" y "override"?

Con "override" el compilador muestra el warning que comentais, y con "reintroduce" no. ¿Es esa la única diferencia, o hay algo más?

Me preocupa que sólo se diferencien en eso. Si no se diferencian en nada más, yo prefiero dar otro nombre a los métodos en los casos que "override" avisa con warnings.

Muchas gracias.
Responder Con Cita
  #7  
Antiguo 07-11-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Si utilizas la opción buscar del foro encontrarás algunos artículos al respecto, entre los cuales este explica justo lo que preguntas, aunque no lo hace en los primeros mensajes así que tendrás que leer un poco...
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 09:15:16.


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