AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MDI-Form & MDI-Child & DLL's

Ein Thema von RWarnecke · begonnen am 12. Dez 2007 · letzter Beitrag vom 29. Dez 2007
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Re: MDI-Form & MDI-Child & DLL's

  Alt 26. Dez 2007, 13:31
Danke erstmal für eure Antworten.
Zitat von hanspeter:
Falls es was kosten darf, würde ich Dir die Hydra-Plugins von Remobjects empfehlen.
Die erzeugen DLL und können problemlos als MDI eingebunden werden.
Das besondere von Delphi kann ein Hydra Plugin aufgerufen werden, welches das Net-Framework nutzt und in Netframework kann eine dll aufgerufen werden, welche in Delphi geschrieben ist.
Da ich nur mit Turbo Delphi Explorer arbeitet, ist glaube ich das Hydra Plugin nicht ganz das richtige.

Zitat von gmc616:
Das ist die Dll-Funktion:
Delphi-Quellcode:
procedure fCreateForm(PApp: TApplication; PForm: TForm); stdcall; // P Steht für Parameter nicht für Pointer, obwohls quasi einer ist
var
  dllApp: TApplication;
begin
  dllApp := Application;
  Application := PApp; // das Application-Objekt auf die Host-Anwendung einstellen
  frmDll := TFrmDll.Create(PForm); // MDI-Child erzeugen
  frmDll.ParentForm := PForm;
  frmDll.ParentApplication := PApp;
  frmdll.FormStyle := fsMDIChild;
  frmDll.Show;
  Application := dllApp; // das Application-Objekt zurücksetzen, damit die DLL vernünftig beendet werden kann
end;
Der Aufruf aus der Host-Anwendung könnte so aussehen:
fCreateForm(Application,Form1);
Ich habe diesen Code mal in verschiedenen Varianten ausprobiert, nur leider gibt es dann immer den Fehler, dass er keine MDI-Child Fenster erzeugen kann, weil keine MDI-Form zur Verfügung steht. Meine Procedure in der DLL sah bisher wie folgt aus :
Delphi-Quellcode:
procedure OptionBox(appHandle: THandle); stdcall;
begin
  if appHandle = 0 then
    apphandle := GetActiveWindow;
  Application.Handle := appHandle;
  try
    with TMainOptionBox.Create(Application) do
    try
      ShowModal
    finally
      Free;
    end
  except
    on E: Exception do
      Application.HandleException(E);
  end;
  Application.Handle := 0;
end;
Was muss ich jetzt ändern, damit ich ein MDI-Fenster in eine DLL packen kann und es dann in der MDI-Form angezeigt wird.
Rolf Warnecke
App4Mission
  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 06:02 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