Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   redefinir constructor de TForm (https://www.clubdelphi.com/foros/showthread.php?t=62371)

Bauhaus1975 18-12-2008 20:06:31

redefinir constructor de TForm
 
Hola a todos, disculparme de nuevo si es muy trivial la pregunta.

Necesito redefinir el constructor de TForm para uno de mis formularios. Lo he hecho con otras clases, definiendo constructor en la sección public etc. Pero nunca sobre una clase 'predefinida' como el TForm. Por tanto no sé que hacer con el parámetro que recibe 'Owner', donde normalmente hacemos miForm := TForm.Create(Application) yo necesito pasar más parámetros ( miForm := TForm.Create(Application,p1,p2,..) ) y luego en la implementación de constructor.Create asignarlos a propiedades del form.
Espero no haberos liado mucho con la pregunta.

Gracias y un saludo.

coso 18-12-2008 21:45:38

Hola, tansolo tendras que hacer overload del create

Código Delphi [-]
type
  TForm1 = class(TForm)
    procedure Button1Click(Sender: TObject);
  private
  public
     constructor Create(AOwner : TComponent);  overload; override;
     constructor Create(AOwner : TComponent; s : string); overload;
  end;

var
  Form1: TForm1;

implementation

constructor TForm1.Create(AOwner : TComponent);
begin
     ShowMessage(AOwner.ClassName);
     inherited Create(AOwner);
end;

constructor TForm1.Create(AOwner : TComponent; s : string);
begin
     ShowMessage(s);
     Create(AOwner);
end;

Bauhaus1975 19-12-2008 19:28:48

Hola de nuevo Coso,
Muchas gracias, justamente es todo lo que necesitaba.
He visto que el tema se había tratado antes, mis disculpas por no haber mirado mejor antes de preguntar.
He probado y funciona, pero no entiendo por qué tienen que existir dos métodos 'create' sobrecargados.
Un saludo.

coso 19-12-2008 21:41:18

No hace falta, lo puse tansolo para que se viese el recorrido.

PD: si quisieras, podrias modificar la clase TForm directamente...

Código Delphi [-]
type
  TForm = class(forms.TForm)
  private
  public
     constructor Create(AOwner : TComponent; s : string); overload;
end;

Bauhaus1975 20-12-2008 18:06:40

Entendido.
Muchas gracias por tu ayuda y un saludo.


La franja horaria es GMT +2. Ahora son las 11:31:44.

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