使用WindowState = wsNormal在MdiChild后面创建无模式窗体?

时间:2011-09-14 19:04:34

标签: delphi

是否有可能在MDIChild表单后面显示一个无模式的“wsNormal”WindowsState表单?我想创建一个始终落后于其他形式的NOTE表单(但总是在MDI表单之前),除非你把它带到前面。例如,当您点击它时。

2 个答案:

答案 0 :(得分:2)

对于不属于MDI容器的子窗口,这在技术上是不可能的。

MDI子项是MDI容器的子窗口,它是主窗体的子窗口。如果窗口位于主窗体的前面,则它位于MDI子窗口的前面。如果它在主要表格后面,那么它就是MDI儿童的背后。

答案 1 :(得分:2)

通常不,MDI父级是MDI子级的根父级,您要么低于MDI父级,要么高于MDI级别。但您可以将顶级表单的父级设置为MDICLIENT。

我不会建议这种方法,因为它可能会有复杂性(也许(?)你可以通过调整一些其他MDI客户端类来实现相同的效果)。但是,如果您想尝试创建一个新的“MDI应用程序”项目,并将从Help-> About菜单项运行的代码更改为:

procedure TMainForm.HelpAbout1Execute(Sender: TObject);
begin
//  AboutBox.ShowModal;
  windows.SetParent(AboutBox.Handle, ClientHandle);
  AboutBox.Show;
  SetWindowPos(AboutBox.Handle, HWND_BOTTOM, 0, 0, 0, 0,
      SWP_NOSIZE or SWP_NOMOVE);
end;