方法一:
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
Application.NormalizeTopMosts;
SetWindowPos(Form2.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
end;
方法二:
https://blog.csdn.net/xiaowei_sql/article/details/50829178?tdsourcetag=s_pcqq_aiomsg
窗口置頂
setwindowpos(self.handle,HWND_TOPMIOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);//窗口置頂
setwindowpos(self.handle,HWND_NOTOPMIOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);//取消窗口置頂
非主窗口置頂
在Delphi中,非主窗體如何置頂
SetWindowPos(Form1.Handle, HWND_TOPMIOST, Left, Top, Width, height, SWP_SHOWWINDOW)可以將窗口放在所有窗口的最前面,但是這僅對一個應用程序的主窗口有效,非主窗口只能在這個應用程序的內部被置前,但是其他應用程序的窗口仍然會蓋住他。
解決方法是將Form1的父窗口設為桌面,如:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
with Params do
begin
WndParent := GetdesktopWindow();
end;
end;
但是這樣會在進程管理器中的應用程序中多出一個Form1,怎樣才能不讓出現這個Form1了,其實解決方法很簡單的,只需要將Form1的caption屬性設為空就可以:Form1.Caption := '';
//下面這一種我使用過了,比較喜歡這種 ,很方便
還有另外一種可以不用將Form1的父窗口設為桌面也可以置前,那就是在窗體創建置前調用
Application.NormalizeTopMosts;
然后再調用SetWindowPos也可以實現將窗口置前的效果
---------------------
作者:CherryDuth
來源:CSDN
原文:https://blog.csdn.net/xiaowei_sql/article/details/50829178
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!