Delphi - Erkennen, wenn meine App ein modales Dialogfeld öffnet
-
26-09-2020 - |
Frage
Ich habe eine Delphi 2006-App, die ein Modal-Alarm-Dialogfeld auftaucht, wenn ein Fehlerzustand erkannt wird.Wenn der Scheck für die Fehlerbedingung in einem Leerlaufhandler erfolgt, kann der Dialog über den oberen Rand eines anderen modalen Dialogfelds angezeigt werden, falls dieser angezeigt wird.Dies kann zu einer verwirrenden Situation für den Benutzer führen, in der das Anwendungs-Hauptformular nicht den Fokus ergibt, nachdem das Alarmdialog geschlossen ist, da diese ein weiteres dünnetes modales Dialogfeld ist.
Was ich tun möchte, ist, die Alert-Popups zu verschieben, während die App alle modalen Dialoge öffnet.
Ich habe GetLastActivePopup (myMainWindow.Handle) versucht, aber es scheint die ganze Zeit nicht-Null zurückzukehren.
Lösung
siehe TAPPLICATION.ModalLevel oder das TAPPLICATION.ONMODALBEGIN und TAPPLICATION.ONMODMODALEND Ereignisse.Siehe auch Diese Frage .
Andere Tipps
nur testen
generasacodicetagpre.Dies würde sich auch auf Situtationen kümmern, wenn ein Nicht-Delphi-Dialogfeld modal ist, wie in generakodicetagcode.oder ein Common Dialog zeigt (d. H. A topendialog).
Verwenden Sie AnyPopup () Funktion
über getlastacypopup ().Es kann den Wert zurückgeben wie der HWND-Parameter, wenn
- Das von HWND identifizierte Fenster war zuletzt tätig.
- Das von HWND identifizierte Fenster besitzt keine Popup-Fenster.
- Das Fenster identifiziert von HWND ist kein oberstes Fenster, oder es ist im Besitz eines anderen Fensters.