如何让程序的子窗体始终位于所有其它进程的最前端?

zyb 2000-01-06 03:57:00
...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
光明山人 2000-01-07
  • 打赏
  • 举报
回复
你的意思是不是即使Application处理非活动状态时,该子窗体依然在最前端?
在你的子窗体的protected中加入这个方法:
procedure CreateParams(var Params: TCreateParams); override;

该方法这样写:
procedure TForm3.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW;
Params.WndParent := 0; // 这是必须的,否则当App变为后台时会将该窗体设置为不TopMost
end;

注意:如果你不加上WS_EX_TOOLWINDOW或没将BorderStyle设置为带有ToolWindow的属性,则在任务条上将出现该窗体的图标按钮。
看看我这个行不行?

才10分呀,太少了。
渤海海峡 2000-01-07
  • 打赏
  • 举报
回复
:
form1.FormStyle:= fsStayOnTop;
limodou 2000-01-07
  • 打赏
  • 举报
回复
有时需要一个窗体总在另一个窗体的上面,但不是最上面,如何实现呢?
需要重写窗体的CreateParams过程
type
TForm2 = class(TForm)
protected
procedure CreateParams( var Params: TCreateParams );override;

//...
end;
implementation


uses Unit1; //这个别忘了

{$R *.DFM}
procedure TForm2.CreateParams( var Params: TCreateParams );
begin
inherited CreateParams( Params );
with Params do
begin
Style := Style or ws_Overlapped;
WndParent := Form1.Handle; //父窗体为form1
end;
end;
不知这个与你的要求是否一致?
kxy 2000-01-07
  • 打赏
  • 举报
回复
SetWindowPos(handle,HWND_TOPMOST,0,0,0,0,
SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧