![]() |
herencia entre paquetes
buen dia:
mi duda es como logro crear un objeto en un paquete desde un paquete base. :confused: yo tengo un paquete base que esta compuesto de una unidad y quiero definir un boton para que al cargar otro paquete que contiene una forma y esta forma es creada de la que se encuentra en el paquete base (su hija) ya contenga el boton creado en el paquete base. algo que yo estoy trabajando es crearle al paquete base un metodo donde es creado el boton pero al ser llamado en el paquete con la forma hija el metodo se reinscribe y pierdo el metodo del padre como puedo hacer eso. parte del codigo es: codigo del paquete base unit UFormaBase; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFormaBase = class(TForm) // declaracion de clase de tipo TForm private public{ bloque de metodos generales } procedure CreaButton(const PNLeft, PNTop : Integer); virtual;implementation { creacion de metodos generales } procedure TFormaBase.CreaButton(const PNLeft, PNTop : Integer); var begincmdFija : TButton; cmdFija := TButton.Create(cmdFija); cmdFija.Parent := cmdFija; cmdFija.Left := PNLeft; cmdFija.Top := PNTop;end; end. codigo de otro paquete con una forma hija unit Catalogo; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DB, ADODB, Grids, DBGrids, Activex, UFormaBase, DMCatalogo, fpGenerales;type TfrmCatPlazos = class(TFormaBase) // forma hija private public procedure CreaButton(const PNLeft, PNTop : Integer); override; // aqui es donde llamo al metodoend; end. Espero y puedan ayudarme de antemano muchas gracias. |
En el procedimiento CreaButton de la forma hija ¿estás llamando al procedimiento heredado (inherited)?
// Saludos |
inherited
no se como utilizarlo podrias mostrarme.
gracias de antemano :D |
Código:
procedure TfrmCatPlazos.CreaButton(const PNLeft, PNTop : Integer); |
Gracias por la respuesta sobre el inherited. funcion
ahora me marca un error cuando lee el metod ' A control cannot have itself as its parent' es en la linea de codigo siguiente: cmdFija := TButton.Create(Self); cmdFija.Parent := Self; y ya intente con cmdFija.Parent := Parent; no se como poder solucionarlo |
Cita:
Código:
cmdFija := TButton.Create(cmdFija); // Saludos |
si en efecto tenia el segundo codigo pero el mensaje de error me lo ejecuta cuando termina de leer la siguiente linea cmdFija.Parent := cmdFija; , luego la cambie por la primera cmdFija.Parent := Self; y tambien ya intente con cmdFija.Parent := Parent;
Asi que no entiendo el mensaje de error. no se si es porque el codigo se encuentra en el paquete base y no en donde se esta creando la forma hija.? |
Hola roman:
creo que resolvi el problema. la propiedad de Parent se tiene que poner en la forma hija ya que ahi se utilizara. en conclusion en el procedimiento del paquete base solo se le tiene que quitar esa linea de codigo y ponersela en el procedimiento de la forma hija. de antemano muchas gracias por la ayuda. |
con respecto al codigo inicial de todo este hilo ahora tengo un problema que no puedo activar el evento del objeto creado en la forma hija
el evento que me interesa es el de click ... donde tengo que poner su evento en el padre o en el hijo? de antemano muchas gracias |
Pues puedes hacerlo en ambos lados ya que la asignación la vas a hacer dinámicamente. Si el evento va a ser distinto en cada hija entonces ponlo en cada hija. Si es común a todas ellas ponlo en el padre.
// Saludos |
La franja horaria es GMT +2. Ahora son las 01:39:28. |
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