主题:表单内的右键菜单如何屏蔽?
ihorse
[专家分:970] 发布于 2011-08-29 23:35:00
用_screen作为主窗口,在主程序中有一句为 ON KEY LABEL RIGHTMOUSE do kjcd.prg (jxcd.prg中为定义快捷菜单的命令,内容为两行:
DEACTIVATE POPUP
DO kjcd.mpr,
这样可在主窗口中直接右键调用菜单命令。但现在的问题是,一旦打开了某个表单,则在表单区域内也能调用快捷菜单。曾试图通过在表单的load事件中使用 DEACTIVATE POPUP 命令,以便可以在表单加载时阻止使用快捷菜单,但宣告失败——当表单打开时如果快捷菜单能起作用,则可能会导致打开相应的表文件从而引起数据错误。。
请教:如何在表单运行期间快捷菜单失效而只有在主窗口(screen)中点击才有效?
回复列表 (共6个回复)
沙发
chenge [专家分:0] 发布于 2011-09-01 17:12:00
_________________________________________________________
新建的java超级群,有兴趣的可以加一下,大牛小虾汇聚一堂! 哈哈!
共享有很多资料,可以供高手进阶,新手学习!
名字:In'8 技术联盟[精英]
群号:93133286
板凳
lbscyb [专家分:4780] 发布于 2011-09-02 23:00:00
在表单的load 事件里添加如下代码:
push key
on key label 你的定义
在表单的unload事件里添加如下代码:
pop key
原理是这样的:在表单创建之初,将_screen定义的快捷键压入堆栈,然后定义本表单要用的快捷键(也可以不定义),释放表单时再恢复ON KEY LABEL 指定键值
3 楼
ihorse [专家分:970] 发布于 2011-09-15 18:15:00
不知道为什么测试未能成功。但是还是谢谢你!!
4 楼
moz [专家分:37620] 发布于 2011-09-15 23:33:00
试试
ON KEY LABEL RIGHTMOUSE
5 楼
ihorse [专家分:970] 发布于 2011-10-08 10:39:00
ON KEY LABEL RIGHTMOUSE确实能屏蔽,但是又导致表单中的按钮点击后都没反应了。何解?
6 楼
moz [专家分:37620] 发布于 2011-10-08 18:29:00
是吗?为了证实这一点,我新建了一个表单。以下代码是从.SCT里剪出来的。
[quote]
Name = "Command1"
FPROCEDURE Click
ON KEY LABEL RIGHTMOUSE
MESSAGEBOX("OK")
ENDPROC
Name = "Command2"
`PROCEDURE Click
MESSAGEBOX("ABC")
ENDPROC
PROCEDURE RightClick
MESSAGEBOX("RABC")
ENDPROC
Name = "Command3"
aPROCEDURE Click
MESSAGEBOX(123)
ENDPROC
PROCEDURE RightClick
MESSAGEBOX("R123ABC")
ENDPROC[/quote]
但我没发现问题啊。再检查一下。
我来回复