AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi tForm ähnlich wie ein "Popup-Menü" verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von gkoeder · begonnen am 30. Dez 2004 · letzter Beitrag vom 30. Dez 2004
 
gkoeder

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

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

  Alt 30. Dez 2004, 00: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
 


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 07:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz