Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Agregar clase Tform en medio de Herencia Visual (https://www.clubdelphi.com/foros/showthread.php?t=65958)

FlacoNet 24-01-2010 17:54:05

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

roman 24-01-2010 21:10:20

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

FlacoNet 05-02-2010 21:30:44

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

Muchas gracias por la respuesta

Esteban

FlacoNet 05-02-2010 22:12:50

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.:confused:

Saludos y gracias

romfrost13 06-02-2010 21:09:46

Revisa los dfm y cambia la herencia alli tambien

FlacoNet 07-02-2010 13:56:41

Cita:

Empezado por romfrost13 (Mensaje 353225)
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

FlacoNet 07-02-2010 14:47:37

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


La franja horaria es GMT +2. Ahora son las 07:06:37.

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