首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

关于右键菜单的写法解决思路

2014-01-03 
关于右键菜单的写法关于右键菜单的使用有点疑问我想在gridde TEXT1中用右键激活一个菜单,多所点击的栏位进

关于右键菜单的写法
关于右键菜单的使用有点疑问
我想在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

*--表单运行后,在表单上右单击鼠标即可显示菜单。

热点排行