Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-02-2014
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
[SOLUCIONADO] Extraño comportamiento de paquetes

Hola amigos estoy intentando dividir mi aplicación en paquetes, ya lei todas las ayudas que hay aquí en el foro, vi el video que recomiendan, etc.

logro hacer lo siguientes:

Forma principal:
Código Delphi [-]
procedure TFrmModCatalogos.SpeedButton1Click(Sender: TObject);
Var
  PackageModule: HModule;
  Aclass: TPersistentClass;
begin
  PackageModule:= Loadpackage('PackCtrlClasiClientes.bpl');
  if PackageModule <> 0
    Then Begin
      Aclass:= GetClass('TFrmGBCLasiClient1');
      if Aclass <> nil
        Then Begin
          FormaHija:= TComponentClass(Aclass).Create(Application) as TForm;
          if Assigned(FormaHija)
            then FormaHija.OnClose:= ChildFormClose
            else begin
              UnloadPackage(PackageModule);
              PackageModule:= 0;
            end;
        End;
    End;
end;

Creo el paquete PackCtrlClasiClientes.bpl con las siguientes formas
Forma 1:
Código Delphi [-]
unit UniFrmGBCLasiClient;

.....

type
  TFrmGBCLasiClient = class(TForm)
    ....
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmGBCLasiClient: TFrmGBCLasiClient;

implementation


{$R *.dfm}

 .......

initialization
  RegisterClass(TFrmGBCLasiClient);
finalization
  UnRegisterClass(TFrmGBCLasiClient);

end.

Forma 2:

Código Delphi [-]
unit UniFrmGBCLasiClient1;

...

type
  TFrmGBCLasiClient1 = class(TFrmGBCLasiClient)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmGBCLasiClient1: TFrmGBCLasiClient1;

implementation

{$R *.dfm}

initialization
  RegisterClass(TFrmGBCLasiClient1);
finalization
  UnRegisterClass(TFrmGBCLasiClient1);

end.

He suprimido el código de los componentes de las formas para ahorrar espacio

Como veran en la forma principal al hacer click en un boton cargo el paquete y mando a llamar a la forma 2 (TFrmGBCLasiClient1) y esto funciona de forma correcta no hay ningun problema, pero al agregar una tercera forma a mi paquete

Forma 3:
Código Delphi [-]
unit UniFrmAMClasiClient;

....
type
  TFrmAMClasiClient = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmAMClasiClient: TFrmAMClasiClient;

implementation

{$R *.dfm}

.....

initialization
  RegisterClass(TFrmAMClasiClient);
finalization
  UnRegisterClass(TFrmAMClasiClient);

end.

En ejecutarlo en el programa principal AClass siempre me da nil

Código Delphi [-]
      Aclass:= GetClass('TFrmGBCLasiClient1');
      if Aclass <> nil

Alguna idea para crear esta 3° Forma? o como corregir el error

Gracias
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita
  #2  
Antiguo 17-02-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La forma más sencilla de poder probarlo y ayudarte (para no probar cada uno una cosa diferente) es que prepares un pequeño proyecto de ejemplo con el paquete los formularios y el ejecutable y lo subas.
De esa forma podemos probar todos sobre lo mismo y ayudarte.

Es una sugerencia.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 18-02-2014
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
Listo ahí esta lo que llevo del proyecto. La forma UniFrmAMClasiClient es la que cuando anexo al proyecto de marca el error.

Cualquier comentario sobre el funcionamiento del proyecto es mas que bien venido

Gracias
Archivos Adjuntos
Tipo de Archivo: rar administracion.rar (100,8 KB, 4 visitas)
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita
  #4  
Antiguo 18-02-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jzginez Ver Mensaje
Listo ahí esta lo que llevo del proyecto. La forma UniFrmAMClasiClient es la que cuando anexo al proyecto de marca el error.
Cualquier comentario sobre el funcionamiento del proyecto es mas que bien venido
Revisando el proyecto, lo que he visto es que el problema está en el form UniFrmAMClasiClient, porque si se añade otro (uno nuevo funciona perfectamente).
Eso me ha hecho pensar que había algo "raro" en este formulario, que impedía la carga o que hacía que las clases no se registraran correctamente.
Total que mirando el código me han sonado extraño estas dos units añadidas al uses: QComCtrls, QMask

No pertenecen a la VCL (antigua compatibilidad con Kylix, imagino).
Si las quitas, verás que el problema desaparece.

Buen trabajo con paquetes.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 18-02-2014
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
Cita:
Empezado por Neftali;.........
Total que mirando el código me han sonado extraño estas dos units añadidas al uses: [B
QComCtrls, QMask[/b]

Gracias Neftali esas dos unidades las uso para el procedimiento escribe archivo, para el componente SpinEdit y MaskEdit respectivamente, las quite y aún así no funciono, ya volví a crear una forma nueva y funciona bien así que voy a tener que ir agregando poco a poco el código de la forma e ir probando para encontrar el error
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita
  #6  
Antiguo 19-02-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Pues a mi me ha funcionado perfectamente el proyecto.
Es verdad que previamente a esas 2 units, he tenido que eliminar algunas cosas más, pero al final, el quitar esas 2 ha sido lo que lo ha hecho funcionar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 21-02-2014
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
Gracias Neftali no se que paso pero ya creada la nueva forma funciona y agrege poco a poco las funciones que estaban comentadas en el que te envie y haciendo algunos cambios de código, obligados por cambiar de una aplicación normal a una por paquetes, y ya esta funcionando

Nuevamente gracias

p.d. como marco este hilo como cerrado?
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita
  #8  
Antiguo 21-02-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jzginez Ver Mensaje
p.d. como marco este hilo como cerrado?
No lo cierres, por si más adelante otro usuario quiere añadir algo o comentar/preguntar.
Si quieres puedes cambiar el título y añadir al inicio un [SOLUCIONADO].

Estaría bien.

AÑADO: He realizado una prueba y lo he añadido yo...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Un comportamiento extraño. TiammatMX Varios 5 03-09-2013 22:54:07
Comportamiento extraño de current_timestamp erickperez6 Firebird e Interbase 4 07-12-2011 07:42:24
Extraño comportamiento de un ComboBox r1d2m3 OOP 2 09-07-2011 17:36:45
Extraño comportamiento de ADO r1d2m3 Conexión con bases de datos 3 12-12-2009 19:08:32
Comportamiento extraño dataModule brandolin OOP 9 08-07-2004 14:25:47


La franja horaria es GMT +2. Ahora son las 23:52:12.


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
Copyright 1996-2007 Club Delphi