一个关于菜单的问题,请高手指点

zhf_1021 2006-09-04 11:41:41
在一个MDI窗体中有2个子窗体:w_child1,w_child2,在窗体w_child1的Open事件中:changemenu(m_child1),窗体child2没有菜单,MDI窗体有一个菜单为:m_main。
我先opensheet w_child2,此时MDI窗体上方的菜单为仍为m_main,我再opensheet w_child1, 菜单变为m_child1,我再关闭w_child1,此时菜单变为m_child1而不是m_main,只有关闭w_child1后才变回m_mian,请问这是什么原因,如何在w_child1不关闭时把菜单便会m_main(希望不使用changemenu)
...全文
288 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rightyeah 2006-09-08
  • 打赏
  • 举报
回复
刚才试验了一下,确实如楼主所说的。在这里有一点要注意的是:w_child1必须不指定menuname,然后用changemenu的时候,才会出现这种效果。一但指定了menuname,那么w_child1关闭的时候还是会自动改变菜单的。另外,打开了两个sheet后,就算切换sheet,其菜单也是不变的。
我还另外试了试在w_child2上加了个按钮,执行parent.changemenu(m_sheet2),这时候2个sheet都是用changemenu来绑定菜单,其结果就是关闭sheet2,保留sheet1的时候,菜单也是不变化的。而且切换2个sheet的时候,菜单始终不变。
我的结论是:pb系统在处理mdi框架的菜单的时候,
1、优先显示当前sheet的菜单,若没有当前sheet,则显示框架的菜单。
2、若是在sheet之间切换(这里的切换,不仅仅指用ctrl+tab换当前sheet,还包括打开新sheet,关闭某个sheet),每个sheet自己来实现菜单的改变,其实就是由sheet自己在获得焦点的时候,把菜单变成自己的菜单(若框架获得焦点,也就是所有的sheet都关闭了,就由框架自己设置菜单)
3、各sheet改变菜单的依据就是:menuname的值,如果没有指定menuname,那么它就什么也不做了。
4、对楼主的建议,就是不要在open里面写changemenu,而是写在activate事件里面,这才是合适的地方
rightyeah 2006-09-08
  • 打赏
  • 举报
回复
楼主的做法我没有实践过,不过对于一般的应用来说,是不需要使用changemenu的
AFIC 2006-09-04
  • 打赏
  • 举报
回复
child如果没有菜单,那就默认使用parent的,
所以你只要给w_child2一个m_main菜单不就行了。
zhf_1021 2006-09-04
  • 打赏
  • 举报
回复
上面写的有点错误,重写一遍:
在一个MDI窗体中有2个子窗体:w_child1,w_child2,在窗体w_child1的Open事件中:changemenu(m_child1),窗体child2没有菜单,MDI窗体有一个菜单为:m_main。
我先opensheet w_child2,此时MDI窗体上方的菜单为仍为m_main,我再opensheet w_child1, 菜单变为m_child1,我再关闭w_child1,此时菜单变为m_child1而不是m_main,只有把w_child2也关闭后才变回m_mian,请问这是什么原因,如何在w_child1关闭而w_child2不关闭时把菜单变回m_main(希望不使用changemenu)
zhf_1021 2006-09-04
  • 打赏
  • 举报
回复
如果在设计时就指定w_child1的menuname,而不是使用changemenu改变的话,关闭w_child1后w_child2使用的菜单是parent的菜单m_main,而不是m_child1,但这里在w_child1的open事件中使用了changemenu(m_child1),关闭w_child1后w_child2便使用了m_child2,而不是m_main不知为什么?
yifu1126 2006-09-04
  • 打赏
  • 举报
回复
如果打開的子窗體(w_child2)沒有菜單的話,菜單欄會默認為當前菜單,既你最近使用的菜單(m_child1)
zhf_1021 2006-09-04
  • 打赏
  • 举报
回复
但在这里奇怪的就是w_child2使用的不是parent的菜单m_main,而是w_child1的菜单m_child1

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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