hik*_*ari 7 delphi delphi-xe2 vcl-styles
我在XE2遇到了一个奇怪的问题:
我正在使用HWND_TOPMOST和SetWindowPos将表单设置在顶部,但是如果我在运行时切换VCL样式,那么窗口不再是最顶层的,并且取消设置/重新设置它也不会修复它.
有任何解决这个问题的方法吗?
你的问题是,由于VCL对此没有任何了解,因为样式发生了变化并且失去了最顶级的风格,因此正在重新创建表单.使用:
FormStyle := fsStayOnTop;
Run Code Online (Sandbox Code Playgroud)
或覆盖,CreateWindowHandle
以便SetWindowPos
每次重新创建表单时调用:
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;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我无法复制"取消设置/重新设置无法修复".通过我的测试,SetWindowPos
再次调用修复它.
归档时间: |
|
查看次数: |
1130 次 |
最近记录: |