Ver Mensaje Individual
  #1  
Antiguo 15-09-2004
walrus walrus is offline
Miembro
 
Registrado: ago 2004
Posts: 40
Reputación: 0
walrus Va por buen camino
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:
  1. "Bad design". Basicamente, si hubiera pensado antes en crear un TFrame base y simplemente heredar visualmente no tendría este problema. Buen razonamiento, si señor, pero le diré que yo personalmente también deseo poseer una máquina del tiempo y rectificar muchas cosas. La bonoloto de la semana pasada, por ejemplo.
  2. "Cut&Paste" hasta el infinito y más allá. A veces, me siento a cenar y me dicen qué por qué tamborileó de una manera tan extraña, con los dedos índice y la mano rigida y estirada, en vez de con los pulgares, que es lo habitual, y apoyando los dedos meñiques, como teniendo pulsado algo.
He pensado en lo siguiente: pasar olimpicamente de la herencia visual y escribir directamente en la declaración del Frame:

Código Delphi [-]
type
    TFrameEx1 = class(TFrameEx)

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.
Responder Con Cita