Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2015
gaunmanuel gaunmanuel is offline
Miembro
 
Registrado: may 2015
Posts: 48
Poder: 0
gaunmanuel Va por buen camino
Herencia de componentes

Que tal, tengo un pequeño dilema del cual espero explicarme y que me puedan dar un tip.
Datos Generales:
1. Trabajo con Delphi 7.0
2. Windows 8.1 64 Bits.

Pues bien, tengo un Sistema con el estilo de forma MDIForm, en la cual tengo un forma principal y el resto formas Child...
Todas las formas Child son heredadas de una clase llamada TfrmCatalogo, ésta clase es una forma en la cual tengo componentes que establecen un estilo a todas las formas Child, uno de los componentes principales y que se hereda a cada forma child, es el PageControl, el cual desde la forma principal (TfrmCatalogo) tiene creado 2 TabSheets, hasta aqui todo muy bien.
Como aclaración la clase TfrmCatalogo fue diseñada con la intención de que si se hace algún cambio visual pues simplemente se aplique a esta clase y en automático se aplique a todas las formas child heredadas...
Pues bien, mi dilema ahora se encuentra en que quiero cambiar el componente PageControl nativo, por otro componente PageControl de otra compañia, y Bueno lo que hago es cambiar en la clase TfrmCatalogo la clase del componente PageControl y posterior cambiar las declaraciones en el archivo dfm:
Código con la declaración actual:
Código Delphi [-]
type
  TfrmCatalogo = class(TForm)
    PageControl1: TPageControl;
    tabCaratula: TTabSheet;
    tabGeneral: TTabSheet;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Código con la nueva Declaración:
Código Delphi [-]
type
  TfrmCatalogo = class(TForm)
    PageControl1: TElPageControl;
    tabCaratula: TElTabSheet;
    tabGeneral: TElTabSheet;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Hasta aqui todo funciona muy bien, en automático las formas child heredadas de TfrmCatalogo se actualizan con el nuevo componente.
Sin embargo, en muchas formas Child se les creo un tabSheet independiente a los heredados, es precisamente donde tengo el problema, en estas formas Child la declaración de ese tabSheet creado desaparece en el archivo dfm y obviamente todos los componentes que pudiera haber tenido dicho tabSheet tambien desaparecen, aunque en la clase (archivo .pas) la declaración del TabSheet sigue ahi, pero al compilar me manda un mensaje que si quiero remover dicha declaración ya que no encuentra un enlace. Inclusive en el archivo .pas de la forma Child cambié la clase del tabSheet por la nueva clase TElTabSheet pero no resulto ya que al ver la forma como texto la declaración del objeto tabSheet desaparacio.
Que me sugieren? sera que tengo que cambiar primeramente en cada forma CHILD la clase del nuevo componente? o algo estoy haciendo incorrecto? o de plano estoy alucinando y lo que quiero hacer hasta fuera del lugar?

gracias.
saludos.
Responder Con Cita
  #2  
Antiguo 30-09-2015
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 tengo mucha idea de porqué hace lo que comentas. Sin embargo, ¿has probado usar los GExperts? Se instalan en el IDE de delphi y, entre muchas otras cosas tienen una herramienta para reemplazo de componentes que te evita estar modificando a mano el .PAS y el .DFM.

// Saludos
Responder Con Cita
  #3  
Antiguo 30-09-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No es mejor usar TFrame en estos casos?
Responder Con Cita
  #4  
Antiguo 30-09-2015
gaunmanuel gaunmanuel is offline
Miembro
 
Registrado: may 2015
Posts: 48
Poder: 0
gaunmanuel Va por buen camino
Roman, el GExperts es muy Buena herramienta, sin embargo, la opción para reemplazar componentes, no funciona cuando estos son heredados.

Voy a revisar el TFrame, sin embargo la aplicación ya esta desarrollada sin TFrame y sin cientos de de formas, pero vere que como funciona el TFrame y si puedo hacer algo con lo que ya se tiene desarrollado, sinceramente nunca he usado el TFrame.

gracias.
Responder Con Cita
  #5  
Antiguo 01-10-2015
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 gaunmanuel Ver Mensaje
Roman, el GExperts es muy Buena herramienta, sin embargo, la opción para reemplazar componentes, no funciona cuando estos son heredados.
Caray, pues lo probé justo antes de escribir el mensaje, y puedo constatar que sí funciona. Claro que no probé con el componente que usas porque no lo tengo pero probé sustituir un TEdit en el formulario base por un TMaskEdit y funcionó bien en el formulario heredado.

Lo de los frames tampoco me queda claro pues estosse usan para agrupar un con conjunto de componentes de manera de poder reusarlo en distintas partes, pero aquí estamos hablando del formulario como un todo.

// Saludos
Responder Con Cita
  #6  
Antiguo 01-10-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo creo que dependerá de cómo esté definido el nuevo componente de la clase TElPageControl y los TElTabSheet.
Depende de la herencia que tengan.

Define un nuevo formulario con el nuevo componente y con tabsheets y mira en el DFM qué estructura tiene. Luego compáralo con el antiguo formulario TfrmCatalogo y los dericvados de este.

Si pones un trozo del DFM antiguo (TfrmCatalogo), de algun formulario heredado de este y del nuevo, tal vez te podamos ayudar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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 externa de componentes (BPL)(RTTI) jednavlop OOP 4 05-11-2010 18:37:14
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


La franja horaria es GMT +2. Ahora son las 16:06:52.


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