Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi Formulare als Datei speichern und zur Laufzeit laden? Wie? (https://www.delphipraxis.net/28426-formulare-als-datei-speichern-und-zur-laufzeit-laden-wie.html)

Dani 24. Aug 2004 17:08


Formulare als Datei speichern und zur Laufzeit laden? Wie?
 
Hallo :hi:

Ich möchte ein im Designer estelltes Formular inklusive aller Komponenten, Methoden, Eigenschaften, Ereignissen usw. in compilierter Form in einer Datei speichern. Diese Datei soll nachher sozusagen als Plugin von einer Übergeordneten Anwendung geladen werden, sodass wieder Instanzen des Formulars erzeugt werden können. Konkret handelt es sich um MDI-Childs. Der Inhalt der Plugin-Formulare soll aber völlig beliebig sein.

Lässt sich sowas mit BPL-Packages erledigen? Falls ja, wie speichere/lade ich ein Formular in/aus einer BPL-Datei?

Dani 25. Aug 2004 15:32

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Okay, wie man ein Form in einem Package speichert, ist klar... aber wie lädt man das jetzt dynamisch zur Laufzeit? Sorry, ich steh total auf dem Schlauch :(

LoadPackage() gibt ein Handle zurück, mit dem kann ich aber nichts anfangen.

Bernhard Geyer 25. Aug 2004 15:42

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Vieleicht hilft dir das:

Dynamische Laden von packages funktioniert nicht
Packages, alles oder nichts ?

Dani 25. Aug 2004 16:31

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Jau, danke! Werde erstmal eine Weile brauchen, um das zu verstehen :gruebel:

Dani 29. Aug 2004 11:26

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Hallo nochmal,

ich hätte da gerne mal ein Problem. :mrgreen:
Aus einem mir verborgenem Grund findet FindClass() die modulare Formklasse nicht, obwohl sie im initialization-Abschnitt der Package-Unit mit RegisterClass registriert wird. Hier der Code:

Form laden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 aClass: TClass;
 frmMod: TForm;
begin
  aClass := nil;
  // Package laden
  LoadPackage('Package1.bpl');
  // Klasse finden
  aClass := FindClass('TModuleForm');
  // Instanz erzeugen
  If Assigned(aClass) then
   begin
    frmMod := TFormClass(aClass).Create(self);
    frmMod.Show;
   end;
end;
Unit in Package:
Delphi-Quellcode:
unit uMod1;

interface

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

type
  TModuleForm = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

implementation

{$R *.dfm}

procedure TModuleForm.Button1Click(Sender: TObject);
begin
 close;
end;

initialization
 RegisterClass(TModuleForm);
finalization
 UnRegisterClass(TModuleForm);

end.
Woran könnte das liegen? :gruebel:

Dani 30. Aug 2004 16:17

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Hmm... wenn ich den initialization-Abschnitt so verändere...
Delphi-Quellcode:
initialization
begin
 Windows.Beep(500, 100);
 RegisterClass(TModuleForm);
 FindClass('TModuleForm');
end;
...gibts hier bei FindClass keine Exception. Hat das damit zu tun, dass der Aufruf von FindClass in einer anderen Unit statt findet? Sollte RegisterClass die Klasse nicht für die gesamte Anwendung registieren? :|

MrKnogge 30. Aug 2004 16:20

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Hi, du könntest die Formulare auch als DLL-Compilieren, dann kannst du sie ganz normalanzeigen.

gruss

Dani 30. Aug 2004 19:11

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Schon gut... danke

Alter Mann 31. Aug 2004 04:37

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Hi Dani,

in der Toolbox wurde einmal eine Artikelserie zu dem Thema der modularen
Programmentwicklung veröffentlicht. Sie nutze die Möglichkeit des nachladen
von *.BPL Dateien, die nichts anderes als DLL's sind (wenn ich mich recht erinnere).
Es fing im Heft 1 von 2002 damit an
Zitat:

Intelligenter Programmaufbau und Optimierung mit Packages – Michaël Van Canneyt
und hörte schon in Heft 2 von 2002
Zitat:

Navigation in Form-Masken – Michaël Van Canneyt
auf.
In den Heften Nr. 3 und 4 - 2002, kam dan dies
Zitat:

Packages – Die ganz besonderen DLLs
.
Aber schau selbst Toolbox.

Von Van Canneyt kammen im laufe des Jahres noch weitere Artikel die sich mit Design-Fragen
beschäftigten, unter anderem Formulare.
Man kan die Hefte nachbestellen, kosten aber auch je Ausgabe 10 €.

Gruss

Dani 31. Aug 2004 09:12

Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
 
Naja wenn die Ausgabe 1/2002 mit Sicherheit weiterhilft, wären die 10€ die Sache schon wert... wenn nicht... Pech...

Falls ich rausfinde, woran es liegt, poste ich es halt hier rein. Vielleicht ist das ganze Modulare-Forms-Zeug ja auch nen Eintrag in der Code-Library wert...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.
Seite 1 von 2  1 2      

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