工具栏的合并问题(200分)

  • 主题发起人 主题发起人 ldbyj
  • 开始时间 开始时间
L

ldbyj

Unregistered / Unconfirmed
GUEST, unregistred user!
在MDI程序中怎样使其子窗口的工具栏获得焦点时自动将自己的工具栏合并到主窗口上,<br>而且在其失去焦点时工具栏则不显示,注意在这儿子窗口很多且都有工具栏需要合并,<br>而且还有Stay On Top窗口,如果Stay ON Top窗口获得焦点时工具栏并不消失,请问<br>各位大虾怎么实现?
 
&nbsp;这个我做过的。<br>&nbsp; 用主窗口的 TControlBar 作为 ToolBar 的容器。ToolBar.Parent := TControlbar;<br>&nbsp; 当 MDI Child Active/Deactive 的时候控制切换不同的 ToolBar 就可以了,不过要注意<br>在切换新的 ToolBar 的时候要记得把先前的 ToolBar 还给原来的窗口(ToolBar.Parent := FormXXX)。
 
非得用TControlBar 作为 ToolBar 的容器吗. <br>----NO<br>---只需切换父亲即可.<br><br>
 
关键我的程序是一个多文档,而且在打开子窗口的时侯还要打开Stay on Top类型的窗口,<br>当焦点从子窗口转移到Stay on top类型的窗口时,工具栏不能隐藏,而这时侯子窗口的<br>焦点失去了,而焦点又从Stay On Top类型的窗口再重新回到另外一个子窗口时这时侯就<br>会出现两个子窗口的工具栏,同时我想给程序的工具栏加上Dock特性。所以BaKuBaKu与<br>笑傲江湖两位老兄的方法可能会遇到麻烦!
 
&nbsp;你需要严格控制 MDI Child 的切换,具体说就是不允许用鼠标和 Ctrl+Tab 等方法<br>自动在 MDI Child 之间切换,一切切换都在你的控制之下,比如自己用菜单列出 Child <br>标题,通过菜单切换。这样就可以自由地合并你的工具栏了。<br>&nbsp; 重载子窗口类的 CreateParams 可以关掉子窗口的 Caption 和 Border ,截获 WM_COMMAND<br>可以过滤掉 Ctrl+Tab ,这样做了以后,就可以把子窗口的切换完全控制在你的代码中了。<br>&nbsp;
 
多人接受答案了。
 
几位高人可否给不弟一段代码.<br>如何合并,我试不出来啊!
 
后退
顶部