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 25-02-2004
Nidia H. Ochoa Nidia H. Ochoa is offline
Miembro
 
Registrado: feb 2004
Posts: 24
Poder: 0
Nidia H. Ochoa Va por buen camino
Exclamation herencia entre paquetes

buen dia:
mi duda es como logro crear un objeto en un paquete desde un paquete base.
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
cmdFija : TButton;
begin
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 metodo
end;
end.

Espero y puedan ayudarme de antemano muchas gracias.
__________________
La ignorancia se supera cuando se atreve uno a preguntar.
Responder Con Cita
  #2  
Antiguo 25-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En el procedimiento CreaButton de la forma hija ¿estás llamando al procedimiento heredado (inherited)?

// Saludos
Responder Con Cita
  #3  
Antiguo 25-02-2004
Nidia H. Ochoa Nidia H. Ochoa is offline
Miembro
 
Registrado: feb 2004
Posts: 24
Poder: 0
Nidia H. Ochoa Va por buen camino
Question inherited

no se como utilizarlo podrias mostrarme.
gracias de antemano
__________________
La ignorancia se supera cuando se atreve uno a preguntar.
Responder Con Cita
  #4  
Antiguo 25-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Código:
procedure TfrmCatPlazos.CreaButton(const PNLeft, PNTop : Integer);
begin
  inherited;

  { Otro código }
end;
// Saludos
Responder Con Cita
  #5  
Antiguo 25-02-2004
Nidia H. Ochoa Nidia H. Ochoa is offline
Miembro
 
Registrado: feb 2004
Posts: 24
Poder: 0
Nidia H. Ochoa Va por buen camino
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
__________________
La ignorancia se supera cuando se atreve uno a preguntar.
Responder Con Cita
  #6  
Antiguo 25-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Nidia H. Ochoa
cmdFija := TButton.Create(Self);
cmdFija.Parent := Self;
¿Estás segura de que estas líneas son las que te marcan el error? Porque anteriormente tenías

Código:
cmdFija := TButton.Create(cmdFija);
cmdFija.Parent := cmdFija;
en donde, en efecto, te madaría tal error.

// Saludos
Responder Con Cita
  #7  
Antiguo 25-02-2004
Nidia H. Ochoa Nidia H. Ochoa is offline
Miembro
 
Registrado: feb 2004
Posts: 24
Poder: 0
Nidia H. Ochoa Va por buen camino
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.?
__________________
La ignorancia se supera cuando se atreve uno a preguntar.
Responder Con Cita
  #8  
Antiguo 26-02-2004
Nidia H. Ochoa Nidia H. Ochoa is offline
Miembro
 
Registrado: feb 2004
Posts: 24
Poder: 0
Nidia H. Ochoa Va por buen camino
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.
__________________
La ignorancia se supera cuando se atreve uno a preguntar.
Responder Con Cita
  #9  
Antiguo 26-02-2004
Nidia H. Ochoa Nidia H. Ochoa is offline
Miembro
 
Registrado: feb 2004
Posts: 24
Poder: 0
Nidia H. Ochoa Va por buen camino
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
__________________
La ignorancia se supera cuando se atreve uno a preguntar.
Responder Con Cita
  #10  
Antiguo 26-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
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 23:25:38.


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