为VFP5的编辑控件定义右键弹出式菜单
一种方法是,设计能进行这些操作功能的菜单,但使用中要选择菜单,鼠标移动距离大,操作显得繁琐。
另一种方法是,设计一个右键弹出式菜单,这样使用起来较为简便。本文介绍的就是这一种方法。
可通过编写这些控件的RightClick事件代码(在事件代码中定义右键弹出式菜单),实现文本复制、粘贴、剪切、删除等操作。
为简化RightClick事件代码,可将菜单代码作为一个独立的程序文件或自定义函数保存。下面就是RightClick事件代码和菜单程序代码。
1.RightClick事件代码:
st=this.seltext
va=this.value
do rightmenu with st,va
上述代码中,seltext属性返回在控件的文本输入区中所选择的文本内容,或返回一个空串(如果没有选择文本)。
value属性指在控件的文本输入区中所输入的文本内容。
2.Rightmenu.prg为程序文件(即菜单代码),其代码如下:
para st,va && 参数st为选定的文本内容,参数va为输入的所有文本内容
define popup popright shortcut relative from mrow(),mcol() && 定义弹出式菜单,菜单名popright
define bar _med_copy of popright prompt ″复制(\<C)″ skip for empty(st) && 定义菜单项
define bar _med_paste of popright prompt ″粘贴(\<P)″ skip for !empty(st)
define bar 3 of popright prompt ″\-″ && 菜单项分隔线
define bar _med_cut of popright prompt ″剪切(\<T)″ skip for empty(st)
define bar _med_clear of popright prompt ″删除(\<A)″ skip for empty(st)
define bar 6 of popright prompt ″\-″
define bar _med_slcta of popright prompt ″全选(\<L)″ skip for empty(va)
define bar _med_undo of popright prompt ″撤消(\<U)″
activate popup popright && 激活菜单
编写好上述代码后,设计一个表单,在表单上放置Text1、Edit1和Combo1三个控件,如上所述编辑它们的RightClick事件代码后,保存该表单。
在保存上述表单的文件目录(路径)中,建立上述菜单程序文件rightmenu.prg(在命令窗口中用modi comm命令建立)。
运行表单,在TextBox、EditBox、ComboBox的文本输入区中输入文本,在输入区内任意位置单击鼠标右键,则在鼠标所在位置出现一个弹出式菜单,该菜单具有上述程序定义的菜单项,而菜单选项是否可选,遵循下列规律:
①选择文本内容后,“复制”、“剪切”、“删除”菜单项可选,“粘贴”菜单项不可选;
②没有选择文本内容时,“复制”、“剪切”、“删除”菜单项不可选,“粘贴”菜单项可选;
③文本输入区没有输入文本时,“全选”菜单项不可选,输入文本后,“全选”菜单项可选。
④对ComboBox控件,因value属性只读,“全选”菜单项不可选;对EditBox控件,“撤消”菜单项不起作用。
上述代码和程序在VFP5.0中运行通过,有兴趣的编程爱好者可试一试。