FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Herencia visual con TFrames y otros asuntos
Hola a todos.
Quiero simplificar un proyecto y pienso utilizar herencia visual para ello. Aparte de Forms he visto que se puede heredar visualmente de un TFrame, lo cual es lo que quiero hacer. Sin embargo, como ya tengo hecha la interfaz de las ventanas quisiera hacer el proceso lo mejor posible. La manera que suelo emplear es: creo un TFrame heredando del TFrame base o padre; del Frame original copio y pego al nuevo los compos que no se heredan, y cut&paste también del código extra. Una vez creo que tengo todo, cruzo los dedos, quito la unit del proyecto (hago una copia de seguridad de la misma... a veces), y a continuación guardo la nueva unit (con el nuevo TFrame heredado visualmente) con el mismo nombre que la original. Esto es, sustituyo el frame original por el heredado. Finalmente, añado la nueva unit al proyecto. Esta es my way de emplear OOP a proyectos ya hechos. Cositas malas en este esquema:
Donde TFrameEx es el TFrame base y TFrameEx1 el que pienso sustituir. Luego quedaría basicamente eliminar todo aquello que ya viene heredado. ¿Me dará problemas? ¿Qué me pierdo por no usar herencia visual? Por otro lado, dado que no se puede usar herencia visual con Forms que contienen algunos componentes de D7 (y creo que de D6) como el TActionManager, TActionToolBar, TActionMainMenuBar, etc ... ¿Podría ser esta una manera de esquivar esta restricción? Agradecería cualquier comentario. |
#2
|
||||
|
||||
La herencia visual en Delphi es muy transparente, no se porque lo haces por un camino tan complicado (¿Conoces File \ New \ Aplicación \ Clase a Heredar?)
Ten en cuenta que la herencia visual, no solo queda guardada la unit, también queda en el DFM. Además de cambiar la clase desde la unit, tendrías que modificar el dfm: object TFrameEx: TFrameEx por inherits TFrameEx: TFrameEx Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. Última edición por delphi.com.ar fecha: 15-09-2004 a las 20:58:25. |
#3
|
||||
|
||||
Cita:
// Saludos |
#4
|
||||
|
||||
Cita:
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
Cita:
Partiendo de un Frame ya hecho, extraigo todo lo que puede ser común para todos los demás (código y compos) y lo meto en otro: FrameBase. A partir de FrameBase, creo varios Frames mediante herencia visual. Copio los compos y el código propios de cada Frame (esto es, lo que no tiene FrameBase) a los Frames heredados. Finalmente, sustituyo los frames originales por los frames equivalentes pero que derivan de FrameBase en el proyecto. Identico proceso sería para los Forms... La cuestión que planteaba era si se conocia algún medio aparte del que yo empleo para hacer esto más llevadero (demasiado cut&paste y los eventos dan más trabajo aún). Por eso, sugeria no emplear herencia visual directamente, para no tener que hacer un Frame nuevo sino trabajar con el original. Lo que me faltaba era saber que había que modificar también el .dfm, aparte del .pas. Creo que lo probaré de esta manera. Por otro lado, creo que no hay medio de usar herencia visual con el TActionManager (entre otros) y es una pena, pues me rompe el diseño que me había propuesto y me obliga a replicar los componentes que no puedo heredar con el conseguiente trabajo extra. Un saludo y muchas gracias a los dos, que sois unos ases, de verdad. |
#6
|
||||
|
||||
.... Y dice el novato..... crea un component Template para despues meterlo dentro del Tframe.
Lo acabo de probar y funciona, de hecho el Component Template tenia un Tframe dentro y al ponerlo TODO en un nuevo TFrame, Delphi lo incrustó sin problemas, previo mensaje: " El Component Template tiene un Tframe FrameExploreTAble (el embebido) desea añadirlo a su proyecto?" Respondiendo SI, pues sin problemas. Con esto te olvidas del copy & paste, aunque no sé si será viable. |
#7
|
|||
|
|||
El comentario de Lepe me recuerdó al instante el siguiente artículo de Ian Marteens:
http://www.marteens.com/trick2a.htm Hasta ahora no había usado los component templates, pero me serán muy utiles en mi labor migratoria (parecemos cigüeñas), tras comprobar que efectivamente es un técnica más potente que copiar y pegar. Gracias de nuevo!!! A los tres!!! |
|
|
|