主题:在带有菜单的顶层表单中运行另一个表单的问题?
pengwei0417
[专家分:0] 发布于 2008-05-30 22:29:00
主表单(表单一)作为顶层表单,有菜单。
选择一个菜单项后,执行另一个表单(表单二)(在顶层表单中)。
我想在执行表单二后,表单一的菜单项不可用,该怎么做?
前提是:
一、表单二不能用模式表单,因为那样无法调整表单一的大小了,表单二比较大。
二、我不想把表单一设为最大化。
或有什么更好办法解决此类问题,请指教。
回复列表 (共14个回复)
沙发
LuckyLine [专家分:1940] 发布于 2008-05-31 06:14:00
1.把表单二做成浮动表单,即ShowWindow属性为0或1,且DestTop属性值为.T.
2.在调用菜单之前设一public变量,例如lSkip,初值为.F.,在相应菜单项的skip for表达式书写变量名lSkip,当调用表单二时,在表单二的Init事件中,lSkip=.t.,在表单二的Destroy事件中恢复,lSkip=.f.
板凳
cbl518 [专家分:57140] 发布于 2008-05-31 07:48:00
禁用菜单:
表单二的Init事件中
SET SKIP OF MENU 你的菜单名 .T.
3 楼
cbl518 [专家分:57140] 发布于 2008-05-31 07:50:00
恢复菜单的使用:
表单二的 Destroy 事件中
SET SKIP OF MENU 你的菜单名 .F.
4 楼
cbl518 [专家分:57140] 发布于 2008-05-31 07:55:00
菜单是独立的特殊窗口,它不属于任何窗口。它只是作为子窗口显示在某个窗口中!
5 楼
pengwei0417 [专家分:0] 发布于 2008-05-31 10:12:00
嗯,谢谢老师!
还有一个小问题,我在调用表单二时,我把表单二的AUTOCENTER设为.T.后,执行,表单二的顶部就是标题栏被表单一的菜单给挡住了,无法移动,把表单二的AUTOCENTER设为.F.后,标题栏出现了,但不居中,在表单一的左上方.
怎么样才能让表单二的标题栏不被遮挡,又能居中,前提是在顶层表单中.
谢谢!
6 楼
pengwei0417 [专家分:0] 发布于 2008-05-31 11:36:00
[quote]1.把表单二做成浮动表单,即ShowWindow属性为0或1,且DestTop属性值为.T.
[/quote]
这样调整后,表单二没有在表单一中,是怎么回事?
我想让表单二在表单一中.
7 楼
cbl518 [专家分:57140] 发布于 2008-05-31 11:50:00
表单二的顶部就是标题栏,被表单一的菜单给挡住了。
如果是居中影响的,那只好用代码校正了!
在 init 事件中:
this.AUTOCENTER=.T
this.top=this.top+20
8 楼
pengwei0417 [专家分:0] 发布于 2008-05-31 12:43:00
是这样。
为什么拖动表单一的上边界,表单二也跟着动,能不能让表单二不动?
9 楼
pengwei0417 [专家分:0] 发布于 2008-05-31 13:08:00
[quote]禁用菜单:
表单二的Init事件中
SET SKIP OF MENU 你的菜单名 .T.[/quote]
老师,我试了,不行呀,还是没有禁用,我菜单名是 主菜单,这样写的在表单二的INIT中:
SET SKIP OF MENU 主菜单 .T.
,执行表单二后,菜单还是可以使用,也没有变灰,是代码写错了吗?
10 楼
pengwei0417 [专家分:0] 发布于 2008-05-31 15:16:00
行了,是这样的:
表单一:INIT
DO 主菜单.MPR WITH THIS,"ZCD"
表单二:INIT
SET SKIP OF "ZCD" .T.
但还有一点不明白,一直没搞懂 DO XXX.XXX WITH XXX , XX
这个逗号后面的部分有什么作用,有时是.T.,现在又是"XXX".
我来回复