关于右键菜单的写法
关于右键菜单的使用有点疑问
我想在gridde TEXT1中用右键激活一个菜单,多所点击的栏位进行操作
代码如下
绑定事件 RIGHTCLICK 到 thisform.kqk_rightclick:
=BINDEVENT(ThisForm.Pageframe1.Page2.Grid1.Column4.text1,"rightclick",this,"kqk_rightclick" )
thisform.kqk_rightclick的代码
DEFINE POPUP kqk_right_pop RELATIVE FROM MROW(),MCOL() TITLE "请选择"
DEFINE BAR 1 OF kqk_right_pop prompt "直接补签此栏位"
DEFINE BAR 2 OF kqk_right_pop prompt "加入补签申请表"
DEFINE BAR 3 OF kqk_right_pop prompt "清除补签数据"
DEFINE BAR 4 OF kqk_right_pop prompt "清除签卡异常状态<迟到、早退>"
DEFINE BAR 5 OF kqk_right_pop prompt "恢复签卡异常状态<迟到、早退>"
ON SELECTION POPUP kqk_right_pop ;
wait window nowait BAR() &&&这里好像只能输入一行命令
ACTIVATE POPUP kqk_right_pop AT MROW(),MCOL()
得到的效果如下图
现在的问题是
1 这个效果很难看, 标题的字体如何更改
2.点选一个选项后, 菜单不会消失. 还在屏幕上,要在菜单外 点击2下才会消失
3. ON SELECTION POPUP 后面好像只能输入一行命令 不支持代码块, 处理代码应该写在 哪里(不使用外部PRG的情况下, 不想在这个表单文件以外在附加一PRG过程).
尝试过 如下方法
第一种
ON SELECTION POPUP kqk_right_pop ;
DO choice with bar()
....
proc choice
lpara _cur_sele
do case
case _cur_sele=1
.....
case _cur_sele=12
....
endcase
系统提示, 不能在方法里定义过程
第二种
thisform. choice with bar()
系统提示, 不能无效的参数传递
第三种
DO choice with bar()
编写 choice.prg 处理
这倒是可以使用但是, 到了PRG 里面, 表单的所有属性和方法都无法引用了....
请各位指点
[解决办法]
请参考:
表单右键菜单例子代码
*-------------------
*--表单的Init事件代码:
Define Popup shortcut shortcut Relative From Mrow(),Mcol()
Define Bar 1 Of shortcut Prompt " <关闭菜单> "
Define Bar 2 Of shortcut Prompt "\-"
Define Bar 3 Of shortcut Prompt "复制 (\<C)"
Define Bar 4 Of shortcut Prompt "粘贴 (\<P)"
Define Bar 5 Of shortcut Prompt "\-"
Define Bar 6 Of shortcut Prompt "操作A (\<A)"
Define Bar 7 Of shortcut Prompt "\-"
Define Bar 8 Of shortcut Prompt "操作B (\<B)"
*如果不够用,照着加几个即可。
On Selection Bar 3 Of shortcut MyForm.CMD_MenuClick.Click(1)
On Selection Bar 4 Of shortcut MyForm.CMD_MenuClick.Click(2)
On Selection Bar 6 Of shortcut MyForm.CMD_MenuClick.Click(3)
On Selection Bar 8 Of shortcut MyForm.CMD_MenuClick.Click(4)
*--表单的RightClick事件代码:
Activate Popup shortcut At Mrow(),Mcol()
*--然后在表单上建一个Command按钮,其Visible设为.F.,其Click事件代码:
Parameters tnMenuID
Do Case
Case tnMenuID=1
Messagebox("你的相应代码1...",64,"信息提示")
Case tnMenuID=2
Messagebox("你的相应代码2...",64,"信息提示")
Case tnMenuID=3
Messagebox("你的相应代码3...",64,"信息提示")
Case tnMenuID=4
Messagebox("你的相应代码4...",64,"信息提示")
Endcase
*--最后运行你的表单时:
Public MyForm
Do Form 你的表单文件名.Scx Name MyForm
或
Do Form 你的表单文件名.Scx Name MyForm Linked
*--表单运行后,在表单上右单击鼠标即可显示菜单。