Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problema con Uso de Formularios Heredados y en Package (https://www.clubdelphi.com/foros/showthread.php?t=56785)

Efren2006 27-05-2008 18:05:27

Problema con Uso de Formularios Heredados y en Package
 
Espero explicar lo mas sencillo que puedael problema que tengo

Estoy desarrollando una aplicacion en Delphi 2006 e Interbase, como esta aplicacion tienes muchos modulos, decidi colocar un Package para cada modulo, es decir, Todos los Formularios de un modulo en un Package, el problema es que estos formularios son Heredados de unos Formularios Base, y tengo un projecto Principal donde cargo Dinamicamente los Package y asu vez los formularios, esto trabaja bien, el problema es que en el formulario Base tengo una llamada a un Formulario (Impresion) que esta Declarado tanto en el Formulario Base como en el Projecto principal porque tengo todo encapsulado en una unidad. pero cuando mando a crear el Formulario me arroja el Siguiente Error (Anexo Imagen)..

Pienso que un Problema de Conflicto de Clases , pero no estoy 100% Claro

Si necesitan mas detalles del problema, les seguire comentando

Gracias de Antemano

Efren2006 27-05-2008 18:40:25

Disculpen no subio la imagen ,, el error es :

Access Violation at address O19573EE in module 'PCNT.bpl' Read of address 00000090

Esto ocurre exactamente al Pulsar un boton que ejecuta este Procedimiento:

procedure TFTabla.EjeReporte(Reporte:String;Valor:Variant);
Var
VentImp:TFormaImpresion;
NoReport:Boolean;
Begin
Try
NoReport:=True;
VentImp:=TFormaImpresion.Create(Self);
...

poliburro 27-05-2008 19:33:47

En el package debes agregar los DCP del paquete conteniendo la forma base y el formulario de impresión.

Efren2006 28-05-2008 19:49:31

Cita:

Empezado por poliburro (Mensaje 289417)
En el package debes agregar los DCP del paquete conteniendo la forma base y el formulario de impresión.

:confused: Disculpa

Los Archivos DCP ??? ,, esos formularios hay que agregarlos a un nuevo Package para luego referenciarlos .. ?

Neftali [Germán.Estévez] 28-05-2008 23:00:50

Cita:

Empezado por Efren2006 (Mensaje 289397)
Access Violation at address O19573EE in module 'PCNT.bpl' Read of address 00000090

VentImp:=TFormaImpresion.Create(Self);

Es raro ese error en esa línea.
Asegúrate de que el apuntador a la clase es correcto.
También puedes redefinir el método create del formulario para ver si llega a ese punto.
Si ese formulario depende (deriva/hereda) de otro, revisa el formulario base.
Recompila todos los packages.

poliburro 29-05-2008 14:18:04

Cita:

Empezado por Efren2006 (Mensaje 289671)
:confused: Disculpa

Los Archivos DCP ??? ,, esos formularios hay que agregarlos a un nuevo Package para luego referenciarlos .. ?

Yo trabajo con una arquitectura similar a la tuya.

Tenemos una forma base de la cual se heredan todos nuestros formularios. Esta forma Base está empaquetada.

Cada formulario de la aplicación se hereda de esta formabase y a su vez es empaquetado con su respectivo Datamodule.

En el paquete del formulario Hijo, se debe agregar el Dcp del paquete quec ontiene la forma base.

Expero haberme logrado explicar.

Neftali [Germán.Estévez] 29-05-2008 14:53:13

Cita:

Empezado por poliburro (Mensaje 289853)
...se debe agregar el Dcp del paquete quec ontiene la forma base.

Correcto, yo también trabajo con estructura similar a esta, pero en este caso "petaría" en compilación. No le veo sentido a que eso falle en Runtime con un Access Violation ¿no?

Efren2006 29-05-2008 16:27:49

Cita:

Empezado por Neftali (Mensaje 289863)
Correcto, yo también trabajo con estructura similar a esta, pero en este caso "petaría" en compilación. No le veo sentido a que eso falle en Runtime con un Access Violation ¿no?

La verdad ya lo solucione el problema, es que yo tengo creado en el Projecto Principal un TDataModulo con Consultas Generales del sistema, y en los Formularios Tanto como el Base como los hijos utilizo dicha TDatemodulo, el problema al parecer es que delphi (por alguna Razon que desconozco), no permite utilizar cualquier Unidad Definida en el projecto con los Formularios del Package, es mas yo tenia una Unit declarada en todos mis formulario para las variables publicas de todo el sistema y los Formularios Hijos no la reconocen, tuve que asignarle el Valor a las Varibles al crear el Formulario, incluso define una Varibale del Tipo Tdatamodulo para asigna la unidad ya creada en el projecto.

Si alguien sabe algo mayor ha este punto le agradeceria el comentario.

Saludos y Gracias por su Valioso tiempo


La franja horaria es GMT +2. Ahora son las 20:49:46.

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