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 24-01-2010
FlacoNet FlacoNet is offline
Miembro
 
Registrado: jun 2003
Posts: 38
Poder: 0
FlacoNet Va por buen camino
Lightbulb Agregar clase Tform en medio de Herencia Visual

Buen dia. Resulta que esto de la herencia visual es bastante interesante, el unico problema que no esta hecho para que humanos como yo, que cometemos errores de diseño, lo utilice.
Vamos al grano, tengo una seria de formularios todos heredados de un antecesor:
Código:
Tform-> Tform1 -> Tform2 ...
por otro lado tambien tengo otra seria de herencias realizadas desde Tform
Código:
Tform-> Tforma -> Tformb ...
el tema que ahora me doy cuenta que podria, de hecho seria muy util, heredar Tform1 y Tforma desde una nueva clase como TFormPadre para que quede de la siguiente manera:
Código:
Tform ->TformPadre -> Tform1 -> Tform2 ...
                |
                |
                 \
                   ->  Tforma -> Tformb ...
Como se habran dado cuenta, como hago para crear un TFormPadre ya teniendo hijos. ¿O tengo que rearmar todo desde cero?

Desde ya muchas gracias

Esteban
Responder Con Cita
  #2  
Antiguo 24-01-2010
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
Acabo de hacer una prueba cambiando directamente el ancestro de TForm1 a TFormPadre en el código y ha fucionado bien. La única observación es que si TFormPadre tiene componentes, debes cerrar la unidad de TForm1 y volverla a abrir para que se vean reflejados los cambios.

// Saludos
Responder Con Cita
  #3  
Antiguo 05-02-2010
FlacoNet FlacoNet is offline
Miembro
 
Registrado: jun 2003
Posts: 38
Poder: 0
FlacoNet Va por buen camino
Thumbs up

que bueno, por suerte la solucion parecia facil y fue facil.

Muchas gracias por la respuesta

Esteban
Responder Con Cita
  #4  
Antiguo 05-02-2010
FlacoNet FlacoNet is offline
Miembro
 
Registrado: jun 2003
Posts: 38
Poder: 0
FlacoNet Va por buen camino
Cool No esta resuelto aun

probe lo que dijiste y funciona en primer lugar.

Pero cuando quiero agregar nuevos componentes en el padre 'incrustado' TFormPadre ya no se propagan esos objetos en los hijos. Es mas, agrego un mismo nombre de componente en TFormPadre y Tform1 y no me da error, cuando si es valida la herencia deberia dar error en el hijo por ya existir el componente en el padre.

Alguna idea para resolver el tema? Que pasa si tengo decenas de clases, acaso no podria 'ajustar' la herencia? Empezar de nuevo a heredad me parece una locura.

Saludos y gracias

Última edición por FlacoNet fecha: 05-02-2010 a las 22:19:20. Razón: Explicar mejor el error que tuve al probar lo propuesto
Responder Con Cita
  #5  
Antiguo 06-02-2010
romfrost13 romfrost13 is offline
Registrado
 
Registrado: jul 2003
Posts: 9
Poder: 0
romfrost13 Va por buen camino
Revisa los dfm y cambia la herencia alli tambien
Responder Con Cita
  #6  
Antiguo 07-02-2010
FlacoNet FlacoNet is offline
Miembro
 
Registrado: jun 2003
Posts: 38
Poder: 0
FlacoNet Va por buen camino
Question

Cita:
Empezado por romfrost13 Ver Mensaje
Revisa los dfm y cambia la herencia alli tambien
¿A que te refieres con revisar los dfm? Lo que hice fue poner los formulario como texto y ver que podia cambiar pero en ningun momento esta alli el codigo del padre.

Código:
inherited F_ABMGrilla2: TF_ABMGrilla2
  Left = 722
  Top = 113
  Width = 578
  Height = 634
  OldCreateOrder = True
  PixelsPerInch = 96
  TextHeight = 13
  object GroupBox2: TGroupBox [0]
    Left = 4
    Top = 272
    Width = 561
    Height = 261
    Caption = 'Grupo 2'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clBlue
...
Podrias ser mas exacto con respecto a lo q tengo q revisar?

gracias
Responder Con Cita
  #7  
Antiguo 07-02-2010
FlacoNet FlacoNet is offline
Miembro
 
Registrado: jun 2003
Posts: 38
Poder: 0
FlacoNet Va por buen camino
Thumbs up Resuelto

romfrost13 diste en el blanco.
Comento lo que hice para que quede documentado.

El codigo dfm del form que heredaba de Tform era el siguiente:
Tform->TF_ABMGRILLA1

Código:
object F_ABMGrilla1: TF_ABMGrilla1
  Left = 429
  Top = 215
  Width = 577
  Height = 368
  Caption = 'Administrador de TABLA'
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object b_BarraEstado: TStatusBar
    Left = 0
    Top = 319
...
lo que hice fue sustituir object por inherited como sigue:
Tform -> TF_ABM -> TF_ABMGRILLA1
Código:
inherited F_ABMGrilla1: TF_ABMGrilla1
  Left = 429
  Top = 215
  Width = 577
  Height = 368
  Caption = 'Administrador de TABLA'
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object b_BarraEstado: TStatusBar
    Left = 0
    Top = 319
...
y ahora sensillamente agrego un componente en TF_ABM y se propaga perfectamente en TF_ABMGRILLA1

Muchas gracias a todos,

Esteban

Última edición por FlacoNet fecha: 07-02-2010 a las 14:49:58. Razón: para que se entienda mejor el ejemplo final
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 visual y variables públicas rarratia OOP 20 07-11-2008 19:00:07
Problema herencia visual en form diegofhernando OOP 8 19-05-2008 16:41:33
Herencia visual en formularios... diegofhernando OOP 4 18-04-2008 10:54:05
Clase que hereda de TForm rocio84 OOP 3 29-10-2005 12:54:27
No se ven controles en herencia visual Sirkius OOP 10 07-06-2004 22:25:32


La franja horaria es GMT +2. Ahora son las 02:10:11.


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