Ver Mensaje Individual
  #1  
Antiguo 15-02-2014
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Reputación: 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