Delphi5 MDI 子窗体的问题(100分)

  • 主题发起人 主题发起人 zjm120
  • 开始时间 开始时间
Z

zjm120

Unregistered / Unconfirmed
GUEST, unregistred user!
各位兄弟:
MDI 程序中如果有多个子窗体,如何使其中一个窗体始终在各子窗体的背后,
即使鼠标单击也不会跑来其它子窗体之前。作程序界面需救急,一定送分。
谢谢!!!
 
这样的话,你不如将它隐藏起来.
form1.visble=false;
需要时再true;
 
你应该在主窗体上画需要的界面,而不是想这中办法.
 
楼上所说的可能不行哦,作窗体,肯定有窗体控件。那样可能MDI主窗体就不对了。
我觉得可以采用Windows消息,使其永远置后。
 
如何用Windows消息让其永远置后呢?
 
你看试一下截获WM_WINDOWPOSCHANGING消息,lParam指向一个WINDOWPOS结构,有一个
数据hwndInsertAfter,你把它设成HWND_BOTTOM试试看有没有用,我这里不能试,抱歉
 
crystal 朋友 你说的 lParam指向一个WINDOWPOS结构 怎么作,
我试过了但只有在窗体移动时它才能在背后。可能上方法不对吧。
 
你在背景窗体的OnActivate 事件中加入这么一句:
MainForm.Next
 
给点分了
 
我试了一下成功了,挺好玩的,但是昨天的消息写错了 :)

设Form1为MDIForm,Form2,Form3为MDIChild

在Form2, Form3的代码中加入函数头:
procedure SendBack(var Msg : TWMWindowPosMsg); message WM_WINDOWPOSCHANGING;

函数体是:
procedure TForm2.SendBack(var Msg: TWMWindowPosMsg);
begin
inherited;
Msg.WindowPos^.hwndInsertAfter := HWND_BOTTOM;
Msg.Result := 0;
end;

这样子就怎么点都不会到前面来,但是可以照常操作,实现了置底的功能
 
谢谢 crystal 还有其他热心的册友
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
804
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
693
SUNSTONE的Delphi笔记
S
后退
顶部