Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Von MDI Child einer DLL auf Funktion in Main zugreifen

  Alt 14. Mär 2006, 15:47
Hallo,

Dein Problem ist folgendes:
Du greifst von der DLL aus auf Deine Hauptanwendung zu. Die Hauptanwendung soll die DLL rausschmeissen und dann zur DLL zurückkehren. Das kann natürlich nicht funktionieren.

Hier die Lösung:

Du baust Dir eine eigene Message-Konstante:
Delphi-Quellcode:
const
  WM_CLOSEFORM = WM_USER + 1;
Jetzt baust Du Dir eine Methode, die die Message verarbeitet:
Delphi-Quellcode:
private
  procedure CloseForm(var Msg: TMessage); message WM_CLOSEFORM;
.
.
.
procedure TForm1.CloseForm(var Msg: TMessage);
begin
  FreeLibrary(Msg.WParam);
end;
In Deiner DLL musst Du jetzt nur noch die Message abschicken (mit der richtigen Nummer als Argument):
Delphi-Quellcode:
procedure TmdForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
   N: Integer;
begin
  N := 1;
  PostMessage(Application.MainForm.Handle, WM_CLOSEFORM, N, 0);
end;
Dadurch wird sichergestellt, dass Deine Hauptanwendung die Message erst verarbeitet, wenn die DLL fertig ist.

Gruß
xaromz
  Mit Zitat antworten Zitat