Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cargar form desde un paquete bpl (https://www.clubdelphi.com/foros/showthread.php?t=93840)

jlrbotella 01-04-2019 16:53:40

Cargar form desde un paquete bpl
 
Buenas,
He creado un paquete con un form (TmessageBox1) y lo cargo de la manera siguiente:
Código Delphi [-]
var
  FormScroll: TForm;
  FormClass: TFormClass;
  HandlePack: HModule;
begin
// try to load the package
  HandlePack := LoadPackage ('mipaquete.bpl');
  if HandlePack > 0 then
  begin
    FormClass := TFormClass(GetClass ('TMessageBox1'));
    if Assigned (FormClass) then
    begin
      FormScroll := FormClass.Create (Application);
      try
        FormScroll.ShowModal;
      finally
        FormScroll.Free;
      end;
    end
    else
      ShowMessage ('Form class not found');
    UnloadPackage (HandlePack);
  end
  else
    ShowMessage ('Package not found');
end;

El problema es que carga el paquete pero no encuentra la clase TMessageBox1, devuelve FormClass = nil.

Y el nombre de la clase esta bien.

La clase TmessageBox1 es:
Código Delphi [-]
unit ShowMessageForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TMessageBox1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MessageBox1: TMessageBox1;

implementation

{$R *.dfm}

procedure TMessageBox1.Button1Click(Sender: TObject);
begin
  ShowMessage('Hola');
end;

initialization
  RegisterClass(TMessageBox1);

finalization
  UnregisterClass(TMessageBox1);

end.

Gracias

Neftali [Germán.Estévez] 02-04-2019 09:45:53

Lo más sencillo en estos casos es que crees un pequeño proyecto con los ficheros mínimos y lo subas.
Es la manera más rápida de ver y detectar los problemas.


* Puede tener que ver con las opciones del proyecto (runtime packages)
* Puede tener que ver con RTTI
* ...

jlrbotella 02-04-2019 15:42:25

Hola Neftali:

Tienes razón, no he mercado la opción de " Link with runtime packages" en el proyecto de VCL aplicación.^\||/

Gracias.

Neftali [Germán.Estévez] 02-04-2019 17:06:41

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 07:50:21.

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