Einzelnen Beitrag anzeigen

gkoeder

Registriert seit: 15. Jun 2004
84 Beiträge
 
Delphi 2010 Professional
 
#1

tForm ähnlich wie ein "Popup-Menü" verwenden

  Alt 30. Dez 2004, 01:33
Hallo!

ich habe folgendes Problem und komme nicht so recht weiter: In meinem Programm möchte ich ein Fenster anzeigen, wenn der User auf einen Button klickt. Danach kann der User in diesem Fenster eine Option auswählen und anschließend soll dieser Wert als Rückgabewert zurückgegeben und das Fenster geschlossen werden.

Prinzipiell ist das ganze ja nicht so schwierig und ich hab' mir das ganze so gedacht:

Das "Hauptfenster" ruft eine Funktion des "Popupfensters" auf und mittels dieser Funktion wird der Rückgabewert als Result zurückgeliefert. Damit das "Hauptfenster" nicht gleich weiterrödelt, rufe ich das "Popupfenster" als modales Fenster auf. Also so in etwa:

Code:
Teil der Prozedur im "Hauptfenster":
DesiredObject := frm_browser_navigation.GetNavigationPath(Popup_Left, Popup_Top);

... und die entsprechende Funktion im "Popupfenster":

Function Tfrm_browser_navigation.GetNavigationPath(WindowLeft, WindowTop: Integer ): String;
Begin
  Left := WindowLeft;
  Top := WindowTop;
  ShowModal;
  Result := 'c:\';
End;

Der Rückgabewert ist hier nur zu Testzwecken fest hinterlegt
Soweit, so gut. Nur sollte das "Popupfenster" sich schließen, wenn der User neben das Fenster klickt und dann als Result einen leeren String zurückliefern. Und genau hier ist das Problem: Wenn ich mit ShowModal erzwingen will, dass das Hauptprogramm auf den Rückgabewert wartet, dann wird z.B. onDeactivate des "Popupfensters" nicht mehr ausgelöst (Modale Dialoge können den Fokus nicht verlieren). Wenn ich das Fenster nur mit "Show" anzeige, dann funktioniert zwar onDeactivate aber das Hauptprogramm wartet nunmal nicht auf die Beendigung des "Popupfensters".
Vielleicht hab' ich auch nur nen Denkfehler aber ich komm bei dem Problem nicht so recht weiter und würd mich freuen, wenn jemand eine Idee hätte.

Greetings
Gerald

P.S. Ich hab' auch schonmal geschaut, ob ich irgendwie das Problem per Windows Messages beheben könnte und hab' die Messageqeue des "Popupfensters" überwacht. Nur wenn ich z.B. neben das Fenster klicke, um es zu deaktivieren, kommt bei einem Modal-Window scheinbar auch keine Message an. Einzig wenn ich den Fokus komplett zu einer anderen Anwendung wechsle werden diverse auswertbare Messages verschickt - nur kann ich nicht immer die komplette Anwndung wechseln ...
  Mit Zitat antworten Zitat