Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TPopUpMenu *nicht* modal anzeigen (https://www.delphipraxis.net/203865-tpopupmenu-%2Anicht%2A-modal-anzeigen.html)

BlueStarHH 1. Apr 2020 15:53

TPopUpMenu *nicht* modal anzeigen
 
Hallo,

mit folgendem Code wird ein TPopupMenu modal angezeigt. D.h. die Zeile nach dem Popup wird erst aufgerufen, nachdem das Menü geschlossen ist. Das Programm soll jedoch nach Popup sofort weiter laufen und wie hier im Beispiel EineFunktion aufrufen, ohne auf einen Mausklick vom User zu warten. Hat jemand eine Idee? Sinn des ganzen ist, dass ich ein PopUpMenu programmgesteuert öffnen und auch programmgesteuert, ohne weitere User-Interaktion, wieder schließen möchte/muss.

Delphi-Quellcode:
APopUpMenu.Popup(10, 50);
EineFunktion;

Uwe Raabe 1. Apr 2020 16:08

AW: TPopUpMenu *nicht* modal anzeigen
 
Ein TPopupMenu.Popup ist nun mal modal, da kann man nichts dran ändern. Also entweder kein Popup oder die nötigen Tasks in einen TThread verlagern und in dessen OnTerminate-Event das Popup-Menü mit EndMenu schließen.

Delphi.Narium 1. Apr 2020 16:17

AW: TPopUpMenu *nicht* modal anzeigen
 
Vorher 'nen Timer starten und in dessen Timerereignis EineFunktion; aufrufen?

Wird bei APopUpMenu.Popup(10, 50); das Ereignis OnPopup ausgelöst? Dann dort EineFunktion; aufrufen?

Kurzer Test mit Delphi 7 ergab, dass die zweite Variante funktionieren müsst.

Variante eins scheint auch zu funktionieren.

Ob damit eine gezielte Programmsteuerung möglich ist, weiß ich nicht.

himitsu 1. Apr 2020 17:22

AW: TPopUpMenu *nicht* modal anzeigen
 
Wie jetzt?
  • du willst das Popup öffnen und "automatisch" eine Funktion (Item) davon auf aufrufen
  • oder du willst das Popup öffnen und falls der Nutzer eine gewisse Zeit nichts macht das wieder schließen (Nutzer macht innerhalb von 30 Sekunden nix, dann wieder zu)



Zitat:

Wird bei APopUpMenu.Popup(10, 50); das Ereignis OnPopup ausgelöst? Dann dort EineFunktion; aufrufen?
OnPopup kommt vor dem Anzeigen und bis dahin wartet das .Popup natürlich auch auf dessen Beendigung.

Dinge verzögert/parallel starten: Timer, PostMessage, TThread.ForceQueue oder eben "richtig" asynchron in einem Thread.
Bei der Vaiante mit dem Timeout (nach x Sekunden zu) wäre der Timer doch passend.

venice2 1. Apr 2020 18:17

AW: TPopUpMenu *nicht* modal anzeigen
 
Falls es so ist wie @himitsu sagt.
Hier ein einfaches Beispiele.

Scheint wohl nicht das richtige zu sein daher entfernt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 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