Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - MessageDlg kommt nicht in den Vordergrund


tortom1000 - Mi 20.01.10 18:26
Titel: MessageDlg kommt nicht in den Vordergrund
Hallo,
ich habe ein Programm, welches ohne sichtbares Fenster in der Systray "schlummert" und bei bestimmten Systemzuständen via MessageDlg abfragen an den User tägigt, welche dann entsprechend "verarbeitet" werden.

Leider ist es so, das der Dialog stets hinter anderen bereits existierenden Fenstern aufpoppt.
Kann man beeinflussen, das der MessageDlg stets ganz vorne angezeigt wird?

Die Einstellung StayOnTop im FormStyle der Form, welches nur kurz beim Programmstart angezeigt wird, beeinflusst die Position des MessageDlg leider nicht.

Viele Grüße
Tortom


ffgorcky - Mi 20.01.10 21:26

Also ich könnte mir das ganze einfach so vorstellen, dass Du da ein Fenster (meinetwegen auch einfach nur direkt unter dem MessageDialog) aufmachst, dass Du dann z.B. mit dem Code von BringToFront: MACHEN, nicht nur in Taskleiste blinken! [http://www.delphi-forum.de/viewtopic.php?t=83712&start=0&postorder=asc&highlight=application+bringtofront] in den Vordergrund bringst und dann dann den MessageDialog aufmachst.
Bei Bestätigung des Dialogs kannst Du dann ja das Fenster auch wieder schließen.
Das kann ich aber im Moment nicht prüfen, weil ich nicht an meinem Programmier-PC sitze.


jaenicke - Mi 20.01.10 21:45

Was spricht dagegen einfach ein eigenes Formular statt einer normalen MessageBox zu benutzen? Dieses kannst du dann nach Belieben steuern. BringToFront, StayOnTop, TopMost, ... alles möglich. ;-)


tortom1000 - Do 21.01.10 09:15

Gute Idee mit dem "richtigen" Fenster für diese Abfage.
Werde das mal so ausprobieren.

Vielen Dank dafür...

(das man da nicht selbst drauf kommt...)


thepaine91 - Do 21.01.10 09:40

Unit Windows

Messagebox() hat auch schon die Eigenschaft Systemmodal.


max1235 - Do 21.01.10 12:44

wenn du keine variablen drin haben willst dann benutz application.messagebox. kann auch sein, dass das mit variablen geht. glaube aber nicht