![]() |
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:
So sieht das Package1.dpk aus - ist auch dabei in der Anlage
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. ![]() Kann mir da jemand helfen. Das muss so ähnlich gehen! Vielen Dank für eure Hilfe und hoffentlich jede Menge Tipps. Gruß Firefox |
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?
Grüße vom marabu |
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 |
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