Announcement

Collapse
No announcement yet.

Formulare in einer DLL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formulare in einer DLL

    Hallo zusammen,

    ich habe mal wieder eine Frage an Euch.
    Ich möchte einen MDI Container entwickeln. Hierbei soll es sich lediglich um ein Frontend handeln, mit dem andere Module (Formulare) verwaltet werden können. Diese Formulare sollen vom Typ MDI Child sein und als Tochterfenster in der Mutteranwendundung (MDI Container) gehändelt werden. Diese Module oder Formulare sollen dynamisch in einem Menupunkt aufgelistet werde. Beim Klick auf einen dieser Menupunkte soll das MDI Child geöffnet werden. Diese Formulare sind in einer DLL definiert. Da ein solches System bereits existiert, sind natürlich entsprechend viele Module schon "codiert". Das neue Frontend (MDI Container) soll jetzt neue und alte Formulare (DLLs) verwalten können. Hat hierzu schon einer etwas gehört oder Erfahrungen sammeln können?

    Wie könnte ich soetwas realisieren, um nicht auf einen Schlag alles neu machen zu müssen?

    Im jetzigen System gibt es in jedem Form (DLL) einen gemeinsamen Einstiegspunkt (falls das hilft).

    Gruß

    Sascha

  • #2
    HauptFormular
    var
    dllHandle: THandle;
    OpenMDIChild: procedure (PApp: TApplication; PForm: TForm); stdcall;
    begin
    DllHandle := LoadLibrary('ProjectDll');
    @OpenMDIChild := GetProcAddress(dllHandle, 'ShowMDI001');
    if @OpenMDIChild <> nil then
    begin
    OpenMDIChild(Application, Self);
    end;
    end;

    Procedure
    procedure ShowMDI001(PApp: TApplication; PForm: TForm); export; stdcall;
    var
    Form: TForm001;
    dllApp: TApplication;
    begin
    dllApp := Application;
    Application := PApp; // das Application-Objekt auf die Host-Anwendung einstellen
    Form := TForm001.Create(PForm); // MDI-Child erzeugen
    Form.ParentForm := PForm;
    Form.ParentApplication := PApp;
    Form.Show;
    Application := dllApp; // das Application-Objekt zurücksetzen, damit die DLL vernünftig beendet werden kann
    end;

    Gruss

    Stefa

    Comment

    Working...
    X