窗体Form的FormStyle属性设置为fsStayOnTop时属性设置不起作用问题探讨。

这个问题是这样的:

在应用程序中加载两个窗体,一个是模态的,另一个是非模态窗体。其中非模态窗体的属性设置为fsStayOnTop就是让其一直在前方显示。这样的效果就是在操作模态窗体的时候,可以看得到非模态窗体,但是不可以操作非模态窗体,这样的效果是正确的。但是当程序执行某些操作之后,比如发了某个windows消息之后,这样的状态就会发生改变,导致非模态窗体不能正常显示。

问题是系统消息发送之后窗体的FormStyle属性依然为fsStayOnTop但是就是不在前方显示,此问题相当恶心啊。如果设置为模态窗体则当这个窗体出现的时候就不能操作其他窗体,设置为非模态的则会导致没有获得焦点时可以处于最上面,但一旦获取焦点,就被mainform遮住了 设置成fsStayOnTop好象没有什么作用。

 

研究了一段时间,也用度娘度了好久,才找到一个合适的解决方案。现在共享出来,希望大家遇到之后能迅速解决~~

重载窗体的这个方法,然后在这个方法中指定窗体的句柄。

procedure CreateParams(var Params: TCreateParams); override; 
复制代码
procedure MainForm.Createparams(var Params: TCreateParams);
begin
  inherited;
  With Params do
  begin
    WndParent := Application.MainForm.Handle;
    Params.ExStyle := WS_EX_TOPMOST;
  end;
end;
复制代码

这样之后,程序便可以顺利执行了。这是强制指定窗体的扩展属性啊!

posted on   癫狂编程  阅读(302)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2019-11-28 关于PLSQL配置了正确的Oracle客户端但是不能识别tnsnames.ora问题
2019-11-28 plsql 32位,Oracle Client 64位 无法读取tnsnames.ora文件
2019-11-28 PLSQL Developer数据库连接和tnsname.ora的配置
2019-11-28 PLSQL配置
2018-11-28 Delphi 之 编辑框控件(TEdit)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
好的代码像粥一样,都是用时间熬出来的
点击右上角即可分享
微信分享提示