Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Probleme mit LoadPackage Fehler: TForm2 ist nicht registrier (https://www.delphipraxis.net/46130-probleme-mit-loadpackage-fehler-tform2-ist-nicht-registrier.html)

firefox 19. Mai 2005 09:21


Probleme mit LoadPackage Fehler: TForm2 ist nicht registrier
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich bin echt am verzweifeln und hoffe jetzt hier auf Hilfe. Ich möchte ein Formular aus einem Package.bpl dynamisch laden und im Hauptprogramm auf ein Panel setzen. Hatte das auch schon mal geschafft, aber den Code nicht mehr. Das Problem ist: beim aufrufen (Button1 des Hauptprogramms) kommt der Fehler: TForm2 ist nicht registriert. Obwohl ich in der Unit des Package.bpl die Klasse registriere mit:

initialization
RegisterClass(TForm2);
finalization
UnregisterClass(TForm2);

Habe mal ein Beispiel für hier erstellt: (Im Anhang ist das komplette Projekt als ZIP File drin)

Das Hauptprogramm:

Delphi-Quellcode:
program Project1;

uses
  Forms,
  MainUnit1 in 'MainUnit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

unit MainUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    MainPanel: TPanel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  phm: HModule;
  FormClass: TFormClass;
  Form: TForm;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   Application.ProcessMessages;
   phm := SysUtils.LoadPackage('Package1.bpl');

   If phm > 0 then begin
       FormClass := TFormClass(Classes.GetClass('TForm2'));
    If FormClass = nil then
      raise Exception.Create('TForm2' + ' ist nicht registriert');
      if assigned(FormClass) then begin
         Application.CreateForm(FormClass, Form);
         Form.Parent := MainPanel;
         Form.Position := poDesigned;
         Form.BorderStyle := bsNone;
         Form.WindowState := wsMaximized;
         Form.Show;
      end;
   end;
 end;

initialization
   RegisterClass(TForm1);
finalization
   UnregisterClass(TForm1);
end.
----------------------------------------------------------------------------------------------------------

Das Nebenprogramm bzw. auch die Unit (xUnit2.pas) welche im Package1.bpl verwendet wird mit der Form2 die angebeblich nicht registriert ist

Delphi-Quellcode:
program xProject2;

uses
  Forms,
  xUnit2 in 'xUnit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.


unit xUnit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ToolWin, StdCtrls;

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

initialization
   RegisterClass(TForm2);
finalization
   UnregisterClass(TForm2);
end.
So sieht das Package1.dpk aus - ist auch dabei in der Anlage

http://x-power.de/package.jpg

Kann mir da jemand helfen. Das muss so ähnlich gehen!
Vielen Dank für eure Hilfe und hoffentlich jede Menge Tipps.

Gruß Firefox

marabu 19. Mai 2005 12:29

Re: Probleme mit LoadPackage Fehler: TForm2 ist nicht regist
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo firefox,

ich musste dein Projekt etwas modifizieren. Was habe ich gemacht?
  • Ich habe xUnit2 wieder in Project1 zurück gestellt.
  • Dann habe ich Project2 aus der Makedatei entfernt und gelöscht.
  • Zum Schluß habe ich in den Project1-Optionen "Compile with Run-Time-Packages" aktiviert
Nun geht das.

Grüße vom marabu

firefox 19. Mai 2005 12:49

Re: Probleme mit LoadPackage Fehler: TForm2 ist nicht regist
 
Hallo marabu,
vielen Dank für deine Mühe. Leider schein es nicht zu gehen bei mir. Die Dateien im ZIP (DynamicForm.zip) sind die gleichen (Uhrzeit Stempel) wie ich sie hochgladen habe??? Ist da was schief gelaufen.
Würdest Du so nett sein und das nochmal posten?

Vielen Dank
Gruß
Firefox

marabu 19. Mai 2005 13:22

Re: Probleme mit LoadPackage Fehler: TForm2 ist nicht regist
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hatte vergessen vor dem Packen zu Speichern - das Alter...

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz