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 04-04-2007
Decker Decker is offline
Miembro
 
Registrado: feb 2005
Posts: 29
Poder: 0
Decker Va por buen camino
Problema con herencia

Hola compañeros, queria añadir una propiedad published a un formulario, para ello público la propiedad antes declarada en un antecesor.

Código Delphi [-]
Antecesor (abuelo):
 
type
  TBoton=(Uno, Dos, Tres);
  TBotones=set of TBoton;
  TForm1 = class(TForm)
  private
    { Private declarations }
    FBotones: TBotones;
    procedure WBotones(Value: TBotones);
  protected
    property Botones: TBotones read FBotones write WBotones;
  public
    { Public declarations }
  end;

procedure TForm1.WBotones(Value: TBotones);
begin
  FBotones:=Value;
end;
 
PreAntecesor(Padre):
 
type
  TForm2 = class(TForm1)
  private
    { Private declarations }
  public
    { Public declarations }
  published
    property Botones;
  end;
 
Form en cuestión:
 
type
  TForm3 = class(TForm2)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Si hago lo mismo con TPanels, en la barra de propiedades (F11), me aparece una nueva Propiedad del tipo Set, si lo hago con formularios, no funciona. ¿Alguien sabe el porque?

Última edición por Decker fecha: 04-04-2007 a las 14:49:11.
Responder Con Cita
  #2  
Antiguo 04-04-2007
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
No funciona porque debes registrar la nueva clase de formulario con el IDE para que la reconozca el inspector de objetos. El procedimiento viene explicado en gexperts. En la sección Open Tools FAQ, busca el apartado "How can I add published properties to a TForm descendent?"

// Saludos
Responder Con Cita
  #3  
Antiguo 04-04-2007
Decker Decker is offline
Miembro
 
Registrado: feb 2005
Posts: 29
Poder: 0
Decker Va por buen camino
Sigo sin entenderlo.

Ya habia leido ese artículo, pero no es muy explicativo. Mi reino por un ejemplo.
Responder Con Cita
  #4  
Antiguo 04-04-2007
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
Bueno, ahi va paso a paso, según acabo de hacerlo:
  1. Creas tu formulario en el IDE y agregas la propiedad deseada. Por ejemplo:

    Código Delphi [-]
    type
      TrmForm = class(TForm)
      private
        FAuthor: String;
      published
        property Author: String read FAuthor write FAuthor;
      end;

  2. Guardas el formulario, digamos en urmform.pas.

  3. Agregas el formulario al repositorio (menú contextual del formulario|Add to Repository...)

  4. Creas un paquete de ejecución (Runtime only), digamos rmforms.dpk, al que agregas el formulario (es decir, agregas urmform.pas en la sección Contains). Compilas y guardas el paquete.

  5. Creas un paquete de diseño (Designtime only), digamos rmformsdesign.dpk, al que agregas los paquetes designide y rmforms en la sección Requires (simplemente seleccionas la sección, oprimes el botón Add y escribes designide y repites para rmforms). designide es parte de Delphi y rmforms es el paquete de ejecución que acabas de crear.

  6. Creas una nueva unidad, digamos urmformsreg.pas en el paquete de diseño (File|New|Unit) que se verá así:

    Código Delphi [-]
    unit urmformsreg;
    
    interface
    
    procedure Register;
    
    implementation
    
    uses
      urmforms, DesignIntf, DesignEditors;
    
    procedure Register;
    begin
      RegisterCustomModule(TrmForm, TCustomModule);
    end;
    
    end.
  7. Compilas, instalas y guardas el paquete.

Con esto debe bastar. Para usar un fomulario de éstos, recuerda que debes heredar (opción inherit en el repositorio).

// Saludos
Responder Con Cita
  #5  
Antiguo 24-04-2007
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 Decker
Mi reino por un ejemplo.
¿Y bien?, ¿donde está el reino?



// Saludos
Responder Con Cita
  #6  
Antiguo 02-06-2007
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
¿Nada aún?

Responder Con Cita
  #7  
Antiguo 06-09-2012
Avatar de pablonill
pablonill pablonill is offline
Miembro
 
Registrado: dic 2006
Posts: 92
Poder: 18
pablonill Va por buen camino
Fantastico roman, cuando junte plata para un reino te lo regalo!
Responder Con Cita
  #8  
Antiguo 06-09-2012
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
Ja, ja. Gracias. Algo es algo

// Saludos
Responder Con Cita
  #9  
Antiguo 06-09-2012
Avatar de pablonill
pablonill pablonill is offline
Miembro
 
Registrado: dic 2006
Posts: 92
Poder: 18
pablonill Va por buen camino
Hola roman, antes que nada muchas gracias por el ejemplo!, muy practico y entendible!, te hago una consulta. Aplique el ejemplo y todo perfecto, pero como hago para que el dfm aparezca en el formulario que heredo, ya que en tiempo de diseño no aparecen los controles que puse en el formulario padre, pero si aparecen en tiempo de ejecución. Muchas gracias.
Responder Con Cita
  #10  
Antiguo 06-09-2012
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
Mmm. Creo que eso tiene que ver con esto que comentan en el enlace que puse en el mensaje #2:

Cita:
Note that the IDE will not allow you to add both published properties and components to a custom module at the same time. The workaround is to create a form with your custom properties in a package, and then have a descendent form in the repository which adds the components you want there by default.
// 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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Herencia miguel867 OOP 6 12-01-2007 23:08:20
Herencia... dunia_lv C++ Builder 3 29-05-2006 22:43:00
Problemas de Herencia Migpal OOP 1 04-11-2005 22:05:48
Herencia vegalisandro OOP 8 15-09-2003 14:30:42
Herencia con FreeReports jmselesan Impresión 1 23-05-2003 14:32:08


La franja horaria es GMT +2. Ahora son las 23:47:55.


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