Thema: Delphi Problem: SetWindowPos

Einzelnen Beitrag anzeigen

Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Problem: SetWindowPos

  Alt 10. Mai 2007, 04:54
Hallo Marvin.

Zitat von Z23:
Der Tipp mit hwnd_bottom hat leider auch nichts geändert.
Das stimmt soweit. HWND_NOTOPMOST ist in diesem Fall schon richtig.

Zitat von Z23:
Ich fummel da jetzt schon etwas länger dran rum. Solangsam weiß ich nicht mehr woran es noch liegen kann.
Tja, wo soll ich anfangen? Das liegt unter anderem daran, dass für die Mainform andere Regeln gelten, dass es ein unsichtbares Fenster für die Application gibt, dass die Application als Mama auf ihre Kinderchen aufpasst und ihnen sagt was sie tun sollen, auch wenn Marvin was anderes sagt, am Wetter und was weiß ich noch.

Deshalb spielt auch das ShowModal eine Rolle, wie bitsetter sagte. (Hier ein Gruß an bitsetter, der mir schon öfter wertvolle Hilfe geleistet hat!)

Da du ein Demoprojekt angehängt hast, hab ich mir die Sache auch angesehen. Ist nämlich wirklich ein komplexes Thema mit diesem Topmost. Eine mögliche Lösung ist die Verwendung von "Mamas" (Application) NormalizeAllTopMosts:

Delphi-Quellcode:
if checkbox1.Checked=true then
begin
  SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0,
    SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  showmessage('Form1 ist nun im Vordergrund');
end
else
begin
  SetWindowPos(Form1.Handle, HWND_NOTOPMOST, 0, 0, 0, 0,
    SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  showmessage('Form1 ist nun nicht mehr im Vordergrund');
end;

Application.NormalizeAllTopMosts;
Mögliche Nebenwirkungen musst du selbst abchecken!

Gruß,
Guido.


Edit: NormalizeTopMosts ersetzt durch NormalizeAllTopMosts = incl. Mainform.
  Mit Zitat antworten Zitat