AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Probleme mit LoadPackage Fehler: TForm2 ist nicht registrier
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit LoadPackage Fehler: TForm2 ist nicht registrier

Ein Thema von firefox · begonnen am 19. Mai 2005 · letzter Beitrag vom 19. Mai 2005
Antwort Antwort
firefox
(Gast)

n/a Beiträge
 
#1

Probleme mit LoadPackage Fehler: TForm2 ist nicht registrier

  Alt 19. Mai 2005, 08:21
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
Angehängte Dateien
Dateityp: zip loadpack_900.zip (435,6 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Probleme mit LoadPackage Fehler: TForm2 ist nicht regist

  Alt 19. Mai 2005, 11:29
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
Angehängte Dateien
Dateityp: zip dynamicform_100.zip (14,3 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
firefox
(Gast)

n/a Beiträge
 
#3

Re: Probleme mit LoadPackage Fehler: TForm2 ist nicht regist

  Alt 19. Mai 2005, 11:49
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Probleme mit LoadPackage Fehler: TForm2 ist nicht regist

  Alt 19. Mai 2005, 12:22
Hatte vergessen vor dem Packen zu Speichern - das Alter...

marabu
Angehängte Dateien
Dateityp: zip dynamicform_195.zip (13,4 KB, 33x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz