![]() |
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? |
Mira de hacer un inherited de TForm en el Contructor, algo asi
Código:
private |
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) |
¡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 :). |
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; |
Cita:
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. |
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...
|
La franja horaria es GMT +2. Ahora son las 01:21:32. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi