delphi 在VCL中显示一个非激活状态的窗口


本文整理自网络,侵删。

 在VCL中,调用窗体的TForm.Show时,窗口被自动激活到前台,从而令前面的窗口失去了焦点。有的时候,这并不是我们需要的效果,我们可能只是显示一个比较复杂的提示窗口,这个窗口默认并不需要获取焦点,而VCL并没有提供这样一个函数。

今天在群里话询问时,以前一直没有想明白怎么搞定TForm的Visible属性,不得闲给出了一个很简单解决办法,直接@属性的地址强制赋值即可。好吧,剩下的事情就简单化了,下面的函数用于实现这一效果:


procedure ShowNoActive(AForm: TForm);
begin
ShowWindow(AForm.Handle, SW_SHOWNA);
PBoolean(@AForm.Visible)^ := True;
AForm.Perform(CM_VISIBLECHANGED, 1, 0);
end;
要显示一个初始为非激活状态的窗口时,只需要调用一句 ShowNoActive(AForm) 即可,而隐藏它直接调用原来的Hide或Visible赋值为False即可。这再一次证明了属性是一个语法糖的传言。

相关阅读 >>

Delphi idtcp上传文件

Delphi 系统服务状态获取管理员用户名

Delphi中指针和地址切换的方法

Delphi 百度输入提示 Delphi 实现

Delphi 获取公网ip地址

Delphi isdirectory 判断是否是目录

Delphi读取android设备联系人.Delphixe6中编译通过

Delphi 下载一个jpg图片保存为bmp图片

Delphi 2010 fastmm 内存泄露使用方法

Delphi 的tjpegimage跟image区别

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...