回 帖 发 新 帖 刷新版面

主题:表单内的右键菜单如何屏蔽?

用_screen作为主窗口,在主程序中有一句为 ON KEY LABEL RIGHTMOUSE do kjcd.prg  (jxcd.prg中为定义快捷菜单的命令,内容为两行:
DEACTIVATE POPUP 
DO kjcd.mpr,

这样可在主窗口中直接右键调用菜单命令。但现在的问题是,一旦打开了某个表单,则在表单区域内也能调用快捷菜单。曾试图通过在表单的load事件中使用  DEACTIVATE POPUP 命令,以便可以在表单加载时阻止使用快捷菜单,但宣告失败——当表单打开时如果快捷菜单能起作用,则可能会导致打开相应的表文件从而引起数据错误。。


请教:如何在表单运行期间快捷菜单失效而只有在主窗口(screen)中点击才有效?

回复列表 (共6个回复)

沙发

_________________________________________________________
新建的java超级群,有兴趣的可以加一下,大牛小虾汇聚一堂! 哈哈!
共享有很多资料,可以供高手进阶,新手学习!

名字:In'8 技术联盟[精英]
群号:93133286   

板凳

在表单的load 事件里添加如下代码: 
push key
on key label 你的定义

在表单的unload事件里添加如下代码:
pop key 

原理是这样的:在表单创建之初,将_screen定义的快捷键压入堆栈,然后定义本表单要用的快捷键(也可以不定义),释放表单时再恢复ON KEY LABEL 指定键值

3 楼

不知道为什么测试未能成功。但是还是谢谢你!!

4 楼

试试

ON KEY LABEL RIGHTMOUSE

5 楼

ON KEY LABEL RIGHTMOUSE确实能屏蔽,但是又导致表单中的按钮点击后都没反应了。何解?

6 楼

是吗?为了证实这一点,我新建了一个表单。以下代码是从.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]

但我没发现问题啊。再检查一下。

我来回复

您尚未登录,请登录后再回复。点此登录或注册