Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Herencia de formularios entre Packages (https://www.clubdelphi.com/foros/showthread.php?t=43718)

DarKraZY 18-05-2007 14:45:54

Herencia de formularios entre Packages
 
Hola a todos!!

Estoy intentando modularizar mi aplicación y así poder reutilizar la jerarquía de formularios entre diversos proyectos.

Tengo una jerarquía de herencia de formularios de unos 4 o 5 niveles (por ejemplo: TForm -> TFrmBase -> TFrmChild -> TFrmMante...)

Ahora quería poner estos formularios dentro de una bpl (paquete o package) para que desde otro package poder llamarlos.

Pero no logro hacerlo.

El primer problema es que así no tengo forma de añadir nuevos forms heredados al nuevo paquete. Así que tuve que añadirlos al repositorio.

Ahora, cuando creo un nuevo form me añade toda la jerarquía de forms al nuevo paquete. Pero no es lo que quiero, ya que estos forms están en el primer paquete bpl.

¿Alguna idea o sugerencia para mejorarlo?

Muchas gracias!

Neftali [Germán.Estévez] 18-05-2007 17:11:04

1 Archivos Adjunto(s)
No entiendo cual es el problema. Te adjunto un ejemplo donde se muestra cómo crear dos packages diferentes con un formulario en cada uno y de los cuales uno deriva del otro.

Creo que es lo que necesitras y no veo dónde está el problema.

jhonny 18-05-2007 17:30:50

El ejemplo que Neftali te muestra es correcto, pero escribo solo para resaltar el hecho de que observes en ese ejemplo que el paquete Base esta referenciado en la sección Required de el paquete Derivado y de esa manera no debe haber problema... A menos de que haya una especie de referencia ciclica entre las unidades que estas usando.

DarKraZY 18-05-2007 18:58:05

Gracias a ambos en responder!

Ya he visto cual era mi problema. Yo tengo los dos paquetes, como los del ejemplo. Pero cuando se abre el paquete derivado en Delphi, sin tener abierto en un ProjectGroup el paquete base, al abrir el formulario da error.

Bueno, la solución al error es tener un ProjectGroup con todos los paquetes necesarios y no pretender como yo abrir tan sólo el paquete derivado.

Me sigue quedando una duda (no sé como hacerlo). ¿Cómo creo un nuevo formulario heredado en el paquete Derivado desde el IDE de Delphi? ¿Es posible?

jhonny 18-05-2007 19:07:40

Cita:

Empezado por DarKraZY
Me sigue quedando una duda (no sé como hacerlo). ¿Cómo creo un nuevo formulario heredado en el paquete Derivado desde el IDE de Delphi? ¿Es posible?

Según lo que entendí de tu pregunta, pues solo bastaría con hacer click en el botón New del Project Manager, seleccionar la pestaña que tiene el nombre de tu proyecto, luego el form que quieres heredar, verificar que de los Radio Botones que están abajo este seleccionado el de Inherit y por ultimo presionar Ok.

Neftali [Germán.Estévez] 18-05-2007 19:20:56

Cita:

Empezado por DarKraZY
Me sigue quedando una duda (no sé como hacerlo). ¿Cómo creo un nuevo formulario heredado en el paquete Derivado desde el IDE de Delphi? ¿Es posible?

Aunque se puede hacer "a mano" cambiando la clase Base en el PAS, lo más sencillo es que añadas el form Base al repositorio, como antes comentabas.

DarKraZY 21-05-2007 10:25:14

Cita:

Empezado por jhonny
...hacer click en el botón New del Project Manager, seleccionar la pestaña que tiene el nombre de tu proyecto, luego el form que quieres heredar...

Este método sería muy complicado, ya que debo "activar" el proyecto base para poder heredar el formulario, entonces se agregaría al proyecto base y sería más costoso hacer los cambios entre packages.

Cita:

Empezado por Neftali
se puede hacer "a mano" cambiando la clase Base en el PAS

Cita:

Empezado por Neftali
que añadas el form Base al repositorio

La del repositorio es la mejor opción, aunque cuando se recompila el package avisa y elimina las unidades repetidas que agregó automáticamente.

Pues nada, ya tengo claro lo que quería hacer. Gracias a ambos por las respuestas. Es curioso que no haya a día de hoy (porque supongo que en Delphi 2007 será igual) una forma rápida y correcta de hacer esto. Ya que creo que es la mejor forma de poder reutilizar los formularios en multitud de proyectos.

Saludos!


La franja horaria es GMT +2. Ahora son las 04:26:14.

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