![]() |
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... |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Hi Dani,
mal eine kleine Frage: Willst Du ein Plugin oder in einer MDI-Anwendung dynamisch MDI-CHILD'S nachladen? Für den letzen Fall noch einige Anmerkungen zur Toolbox 1'2002. Ich habe den Artikel ebend kurz überflogen, er beinhaltet: - Modularer Aufbau einer Datenbankanwendung mittels Module und Packages - Erläuterungen warum das laden/erzeugen eines Formulars aus einer DLL nicht funktioniert - Modulverwaltung mittels Formularmanager (Registrieren/Dergistrieren von Formularen, Zitat:
Gruss PS Ich bin nicht am Umsatz der Toolbox beteidigt :cry: , aber empfehlen kann ich den Artikel. |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Na ganz toll, jetzt ist die Ausgabe 1 / 2002 auch noch vergriffen :twisted:
Wäre evtl. jemand bereit, mir sein Exemplar für 10€ zu überlassen? (Versand zahle ich) Und ja, es sollen MDI-Child's nachgeladen werden :-) |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alle Miteinander,
da der Toolbox-Verlag einer Anfrage zur Veröffentlichung nicht zugestimmt hat, habe ich mir die ganze Geschichte mal durch gelesen und folgendes Ergebniss "zusammengeschustert" :wink: Ich habe es mit Delphi 7 fabriziert, sollte aber mit ein paar Änderungen auch mit anderen Delphi-Versionen laufen. Kern der ganzen Sache ist das Pakage Formmanage.dpk, in ihr wird die erforderliche Unit "Frmmgr" gebunden. Für den modularen Anwendungsaufbau muss diese Unit immer eingebunden sein(siehe Beispiel). In den Units, die Formulare enthalten muss so nur noch ein Initialization und ein Finalization zum registrieren der Formulare eingefügt werden. Im Hauptprogramm kann dann mittels der vorhandenen Informationen auf das jeweilige Formular zugegriffen und dynamisch geladen werden. |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Hi Leute!
Ich steh auch gerade aufm Schlauch und hab ein Brett vorm Kopp. Ich hab mir mal das Beispielprojekt runtergeladen und angeschaut. Gut, da werden dann ein paar Einträge in ein Memo geschrieben. Jetzt haben form1 und form2 nicht so die Wahnsinnsfunktionalität. Könnte mir mal jemand ein Beispiel-Package rüberschicken, die ein Formular mit nem Button enthält und erzählen, wie ich aus dem Hauptprojekt das Formular aufrufe? Würde mir wirklich weiterhelfen. Hab nämlich noch gar nix mit modularem Programmaufbau unter Delphi gemacht, und mir gehen diese riesigen Echsen auf den Geist. |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Zitat:
Liege ich mit der annahme richtig? |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Ich bin mir nicht sicher, aber gehört das
Delphi-Quellcode:
den in das Package? Ich würde es in die Anwendung schreiben.
initialization
RegisterClass(TModuleForm); Oder irre ich mich?. |
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Zitat:
|
Re: Formulare als Datei speichern und zur Laufzeit laden? Wi
Zitat:
Liege ich mit der annahme richtig? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 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