一个用Show显示窗口只保持一个窗口(MAINFORM)的最上方,不能用简单用fsStayOnTop(50分)

  • 主题发起人 主题发起人 sunys
  • 开始时间 开始时间
S

sunys

Unregistered / Unconfirmed
GUEST, unregistred user!
一个用Show显示窗口只保持一个窗口(MAINFORM)的最上方,不能用简单用fsStayOnTop
[不要和我说 showmodal :) ] 这里注意只是MAINFORM的最上方。
 
用ktop控件。
 
form2.parent:=mainform
 
form2.parent:=mainform 啊,这个我试过的,好象标题不能ACTIVE。
还有第三方构件我也不想用,
 
我有办法:)

用个定时器,再写上
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE);
就可

绝对没问题
 
声明:
protected
procedure CreateParams(var Params:TCreateParams); override;
实现:
procedure TChildForm.CreateParams(var Params:TCreateParams);
//让拥有者成为父
begin
inherited CreateParams(Params);
// Params.ExStyle:= Params.ExStyle or WS_EX_APPWINDOW;
if Owner is TForm then
Params.WndParent:=TForm(Owner).Handle;
end;
//建立时要用TChildForm.Create(mainForm);
 
还有什么方法吗,更简单点的。
 
ka52
我可能要多个窗口都SHOW出来的,定时器不太好吧/。
 
你用继承的方法,只用写一遍代码就行了
 
ysai,谢谢,我现在是用继承的方法的。你的方法也可以的。
但是,我也有MDI窗口在MAINFORM上,这样的话,我的MDI窗口都始终在下面了。
你的方法和SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE);
是一样的。

就是我的意思SHOW出来的窗口只是在MAINFORM上,其他窗口都可以在SHOW出来的FORM上了。
其实也可以这么认为,MAINFORM怎么把他放在最下面。


 
就好象设置MAINFORM的背景一样吗?

可以在主程序的客户区设置一个panel,把要显示的窗体设置为FRAMES,显示在panel上
这样,就可以随意切换并且显示隐藏了,
 
放PANLE啊,不行的。因为我也有MDI窗体的,PANLE不能放,而且MDI窗体比较多,现在改动也比较麻烦。
 
多人接受答案了。
 
后退
顶部