Autor Beitrag
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 14.08.05 11:32 
Hallo!

Ich suche gerade schon eine ganze Weile nach einer Möglichkeit, wie ich eine MessageBox oder ein dazu gemachten TForm dazu bewegen kann, dass sie garantiert im Vordergrund bleibt.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
With CreateMessageDialog(AMessage,mtWarning,[mbOK]) do begin
 FormStyle:=fsStayOnTop;
 //BorderStyle:=bsToolWindow;
 Caption:=Form1.Caption;
 Font.Style:=[fsbold];
 ShowModal;
 Free;
end;


Das hatte ich bisher versucht. Funktioniert aber nicht...
Das erstellte Fenster ist eben leider ein Child-Window und damit bleibt es auch nur so lange im Vordergrund, wie die Hauptanwendung im Vordergrund ist. Gleiches gilt für praktisch alle anderen Methoden.

Das Warnfenster soll aber auch (oder gerade) funktionieren, wenn meine Anwendung zum Tray-Icon minimiert ist und soll dann auch im Vordergrund bleiben, bis der Benutzer es auch wirklich gesehen und bestätigt hat.

Vorschläge?

THX schonmal im Voraus :)
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: So 14.08.05 11:54 
ausblenden Delphi-Quelltext
1:
MessageBox(GetDesktopWindow, 'Text''Caption', MB_OK or MB_ICONEXCLAMATION or MB_SYSTEMMODAL);					

Bei einer TForm musst du SetWindowPos mit dem Parameter HWND_TOPMOST benutzen.

_________________
Ciao, Sprint.
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 14.08.05 22:13 
Ah ja... der MB_SYSTEMMODAL Flag war genau der Hinweis, den ich gesucht habe.

Letztlich fand ich dann aber die Kombination "MB_SETFOREGROUND or MB_TOPMOST" noch besser, weil die Nachricht mit MB_SYSTEMMODAL immer das Anwendungssymbol in der Titelleiste und einen eigenen Taskleisteneintrag hat.
klezmor
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Fr 09.09.05 09:58 
das habe ich gerade in der Delphi-Hilfe gefunden:
The following code causes “stay on top” forms to allow a MessageBox to appear on top. After the message box is closed, the topmost forms are restored so that they continue to float to the top.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Begin
  with Application do
  begin
    NormalizeTopMosts;
    MessageBox('This should be on top.''Look', MB_OK);
    RestoreTopMosts;
  end;
end;


Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt.