首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Delphi XE2,如何在改变VCL样式后保持表单在顶部

Delphi XE2,如何在改变VCL样式后保持表单在顶部
EN

Stack Overflow用户
提问于 2012-05-10 08:02:21
回答 3查看 1.2K关注 0票数 7

我在XE2上遇到了一个奇怪的问题:

我正在使用HWND_TOPMOST和SetWindowPos来设置我的表单在顶部,但是如果我在运行时切换VCL样式,窗口不再是最上面的,取消设置/重新设置它也不能修复它。

有什么办法解决这个问题吗?

EN

Stack Overflow用户

回答已采纳

发布于 2012-05-10 08:35:23

您的问题是由于样式更改而重新创建表单,并且由于VCL对此一无所知而丢失了其最顶层的样式。使用以下两种方法:

代码语言:javascript
运行
复制
FormStyle := fsStayOnTop; 

或者覆盖CreateWindowHandle,以便每次重新创建表单时都会调用SetWindowPos

代码语言:javascript
运行
复制
type
  TForm1 = class(TForm)
    ..
  protected
    procedure CreateWindowHandle(const Params: TCreateParams); override;
  ..

procedure TForm1.CreateWindowHandle(const Params: TCreateParams);
begin
  inherited;
  SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
end;

顺便说一句,我不能重复“取消设置/重新设置不能修复它”。在我的测试中,再次调用SetWindowPos修复了这个问题。

票数 8
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10525823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档