Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi "Echte" StayOnTop Form öffnen (https://www.delphipraxis.net/105131-echte-stayontop-form-oeffnen.html)

lasermouse 16. Dez 2007 23:04


"Echte" StayOnTop Form öffnen
 
Es gibt ja bei Delphi die Option "StayOnTop" für Forms...aber so richtig geht das nicht....die Form überdeckt zwar andere Forms,
aber wie kann man es machen, das diese IMMER im Vordergrund bleibt? Also wenn man jetzt ein Fenster auf die Form schiebt, dann überdeckt dies diese...es soll aber dahinter verschwinden

Weiss jemand wie das geht?

Hab diesen COde gefunden:
SetwindowPos(Form2.Handle,HWND_TOPMOST,0,0,0,0, SWP_NOMOVE or SWP_NOSIZE);

Das geht auch...allerdings bleibt es nur bei delphi eigenen fenstern im vordergrund...andere anwendungen überdecken die form weiterhin


EDIT: Wenn ich das ganze auf die Mainform anwende, dann klappt es so wie es soll..bloß wie geht das für Form2??

holliesoft 17. Dez 2007 07:22

Re: "Echte" StayOnTop Form öffnen
 
Hallo,

Du must beim TApplication.OnDeactivate ein Application.RestoreTopMosts ausführen.

Gruß
Patrick

Kroko1999 17. Dez 2007 08:27

Re: "Echte" StayOnTop Form öffnen
 
Wollen wir hoffen, dass nicht zur gleichen Zeit ein Programm läuft, was das selbe tut, sieht dann bestimmt gut aus, :|

lasermouse 17. Dez 2007 23:58

Re: "Echte" StayOnTop Form öffnen
 
Zitat:

Zitat von holliesoft
Hallo,

Du must beim TApplication.OnDeactivate ein Application.RestoreTopMosts ausführen.

Gruß
Patrick

Das bringt leider auch nichts ;( Die Form verdeckt weiterhin bloß Delphi-Forms.

Hier der aktuelle Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
delay(100);
SetWindowPos(form2.Handle ,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;

procedure TForm2.FormDeactivate(Sender: TObject);
begin
Application.RestoreTopMosts;
end;

lasermouse 18. Dez 2007 14:50

Re: "Echte" StayOnTop Form öffnen
 
Könnte den Beitrag jemand in die WinAPI Ecke verschieben? Denke der wäre dort besser aufgehoben...

bitsetter 18. Dez 2007 16:44

Re: "Echte" StayOnTop Form öffnen
 
Hallo,

folgendes funktioniert bei mir:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  form2.show;
end;
und dann im onShow Ereignis von Form 2:
Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
begin
  Application.NormalizeAllTopMosts;
  SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;

DP-Maintenance 18. Dez 2007 18:14

DP-Maintenance
 
Dieses Thema wurde von "r_kerber" von "VCL / WinForms / Controls" nach "Windows API / MS.NET Framework API" verschoben.
Das hat eher etwas mit der WinAPI zu tun

lasermouse 18. Dez 2007 21:49

Re: "Echte" StayOnTop Form öffnen
 
@Bitsetter

Das geht! Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz