如果让一个窗口永远保持在本程序的最前端?
如果让一个窗口永远保持在本程序的最前端(包含显示与输入),用户无法切换到本程序已打开的其它窗口。
目前我已知的一个方法是写一个OnDeactive事件,一但离开就SetFocus()一次,但感觉还是不太好用。。。
还有一个方法就是,在知道最前端的窗体的TForm指针后,让此TForm-> Enabled=false;然后,再显示我要的这个永远最前端的窗体,这样,就可以让这个窗口永远显示在“本程序”所有窗体的最前端了。。。
但,查找某个最前端窗口的API是GetFrontWindow(),此API可以得到最前端的窗体HWND,但需要从HWND到TForm好像很复杂,不知道如何继续。。。
[解决办法]
FormStyle = fsStayOnTop;
[解决办法]
要让用户无法切换,恐怕不太容易
[解决办法]
我已经找到好方法了,要注意我的条件是“本程序”的最前端。。。
所以,joyous的方式不对,但看在你支持我的贴子上,给2分。。。
如果要让一个非model窗口永远显示在“本程序”的最上方:
正确的做法是,通过Screen-> ActiveForm获得当前程序最前的窗口,然后,在显示那个需要永远在最上方的窗口前,把ActiveForm-> Enabled=false,这样,那个程序就永远在“本程序”的最上方了。直到那个永远在最上方的窗口关闭后,再AcitveForm-> Enabled=true;
[解决办法]
我壹分也不要。