![]() |
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? |
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. |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Vieleicht hilft dir das:
![]() ![]() |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Jau, danke! Werde erstmal eine Weile brauchen, um das zu verstehen :gruebel:
|
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:
Unit in Package:
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;
Delphi-Quellcode:
Woran könnte das liegen? :gruebel:
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. |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Hmm... wenn ich den initialization-Abschnitt so verändere...
Delphi-Quellcode:
...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? :|
initialization
begin Windows.Beep(500, 100); RegisterClass(TModuleForm); FindClass('TModuleForm'); end; |
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 |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Schon gut... danke
|
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:
Zitat:
In den Heften Nr. 3 und 4 - 2002, kam dan dies Zitat:
Aber schau selbst ![]() 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 |
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 04:37 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-2025 by Thomas Breitkreuz