超烦:DELPHI的多窗体显示问题

bcrun 2011-02-12 01:33:26
注意,这里说的不是MDI,也不是模态对话框,而是指一个进程中要显示超过一个标准窗体。

自从DELPHI2007版里默认增加了
Application.MainFormOnTaskbar := True;
控制,给用户增加了一个可以去掉强制的任务栏上对应TApplication的窗口按钮之后,其实这方面的麻烦并没减少多少。
一是,Form类还是没有ShowInTaskbar这样的常用属性,整个进程在任务栏上还是只能对应一个按钮
二是,现在在主窗体里调用类似如下的代码显示别的窗体时,那个窗体竟然就一直傻傻地浮动在主窗体上面,强制把主窗体当作他的所有者窗体了,也没参数控制可让主窗体切换到他上面来显示。除了类似编辑程序中显示查找对话框这样的情况,有很多需求并不需要这样浮动的。唉,真是“压下葫芦浮起瓢”。
...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcrun 2011-02-14
  • 打赏
  • 举报
回复
注:VCL的这方面设计是有难以完全弥补的问题的,这次就先讨论到这吧,单纯SetWindowLong在有些时候够用了。
bcrun 2011-02-12
  • 打赏
  • 举报
回复
嗯,实在不行的话还是得试SetWindowLong这种老办法。
就是Form2.Show这样写啊。
bdmh 2011-02-12
  • 打赏
  • 举报
回复
第一个:没有那个属性,但是可以通过子类化窗口实现,在要创建的窗体的OnCreate事件中写上
  SetWindowLong(Handle,GWL_HWNDPARENT,0);


第二个,不知道你怎样写的
bcrun 2011-02-12
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;

5,388

社区成员

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

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