您当前位置为:鲲鹏学习主页>>文档中心>>FOXPRO文章>>详细文章 提示:双击鼠标滚屏
Foxpro 优化菜单

FROM:http://www.ddvip.net

一、跳过

我们在使用WINxx软件时,经常可以看到它们的某些菜单项在某种情况下被屏蔽掉(字成为灰色),这时这些菜单项就不可用,这也叫跳过。

这是一个非常有用的功能,比如当一个数据表没有打开时,就不能执行查询的功能,这时如能将“查询”菜单项屏蔽岂不很酷,那么VFP能否做到这一点呢?能!而且很容易,方法是:

1.进入菜单设计器;
2.找到需要屏蔽的菜单项;
3.按该项后的选项按钮;
4.按后出现 图(略) ,在“跳过”文本框中输入一个表达式,其值以后会是逻辑值,当此值为“真”时该菜单项就被屏蔽,比如 图(略) ;
5.输入完后,确定,会看到选项按钮中有一个钩,表示选项中有内容,如 图(略) ;
6.将所有菜单项的跳过逻辑表达式设好,重新生成新的菜单程序,关闭菜单设计器就行了。
当程序运行时,在启动菜单之前必须先为所有的跳过变量赋值,否则菜单启动后会发生变量找不到的错误,因为菜单程序会根据这些变量值的“真”、“假”来确定这些菜单项是否可用。

如果您希望菜单一启动某个菜单项就不可用,那么在菜单启动前就给相应的变量赋值“.T.”,否则为“.F.”。

在程序中什么时候要想让这个菜单项不可用,只需要将变量设为“真”即可,又想让它可用,再设为“假”。

比如我们可以给前面的人事档案程序的查询等菜单项设一跳过表达式:

.not. dkda

这里为什么要加个“.not.”呢?因为在菜单的初始化代码中,该变量是设为“假”的,因为这时档案还没有打开,菜单一启动,查询功能应该不可以用,我们前面说过,当跳过表达式为“真”时不可用,这时dkda变量为“假”,我们又想“查询”不可用,于是就取其反面,加上一个“.not.”,整个表达式的值就为真了,反之,当dkda为“真”时,即档案已打开,这时表达式就为假,因此“查询”就可以用了。

初学者看上面这段话,可能会有点晕,多看两遍。

二、给菜单加说明

在许多的软件中我们都会看,当鼠标指到某个菜单项时,在下面的状态栏上可看到该菜单项的详细说明,这个功能是怎么实现的呢,方法如下:

1.进入菜单设计器;
2.找到要加说明的菜单项;
3.按选项按钮;
4.在“信息”一栏输入相应的说明,注意,字符要加引号,如 图(略) ;
5.确定;
6.重新生成。
三、给菜单加分隔线

为了使菜单易于查看和调用,常常需要在菜单中加入分隔线,如 图(略) ,下面讲做分隔线的方法:

1.进入菜单设计器;
2.找到要做分隔线的地方,在菜单名称中输入“\-”,其它都不用变,如 图(略) 。如果需要做分隔线的地方已经有菜单项了,那么就按“插入”插入一空栏再输入;
3.重新生成即可。
四、增加热键

如果要给某个菜单项增加热键,方法如下:

1.进入菜单设计器;
2.找到要加说明的菜单项;
3.按选项按钮;
4.用鼠标点一下“快捷方式”的“键标签”;
5.按下您所需要的键,比如“F2”或者“Ctrl+A”,按了之后出现如 图(略) ;
6.这时在键说明中也会出现与键标签中一样的内容,键说明是用于显示在菜单上以提示菜单项的热键是什么,如 图(略) 。当然您也可以不要隐含的这个说明,而输入自己的说明,比如“^A”
7.确定及重新生成,再去看看菜单有什么变化,是不是更酷了。
五、插入栏

很多朋友一定想在自己的软件中做出象VFP中的菜单中的一些功能,比如剪切、复制、粘贴等,这些功能如果自己编可就太麻烦,如能直接调用VFP的相应功能那就太好了,完全可以做到,方法是:

1.进入菜单设计器;
2.进入一个子菜单,注意这些功能是不能加在主菜单上的;
3.将光标放在适当位置,按“插入栏”按钮 ;
4.这时会弹出一个插入栏选择框,找到您所要插入的功能,然后按“插入”按钮;
5.插入后的效果如 图(略) ;
6.剩下的事情不用我再说了吧。
这样您的菜单也就有了VFP的相应功能了,而且还可以使用它的快捷键,如ctrl+x、ctrl+c等等。

注 意
不能在您的菜单中禁止系统菜单,也就是不能用这个命令:
set sysmenu off
否则系统菜单中的功能就不能用了。如要不出现系统菜单应使用:
set sysmenu to
菜单设计器会自动在生成的程序中加入这一句,一般您不去动生成的程序(.mpr)就不会有问题。

六、增加快捷键

这里所说的快捷键与上面所说的热键有什么不同呢?说起来要一大堆话,相信您看了 图(略) 就明白了,制作的方法为:

1.进入菜单设计器(老生常谈);
2.找到所要的菜单项,在菜单名称后加一个括号,括号中加一个您想要的字母或数字,在该字符前面加上“\<”,如 图(略) ,如果是英文菜单,直接在菜单名称中找一个字符就行了。
3.好了。
多学一招:
按同样办法可以给一些控件加快捷键,比如要给一个按钮加上快捷键,用同样方法设置它的caption属性就行了,设好后如 图(略) ,运行时按“Alt+Q”即可调用“退出”按钮。

七、制作快捷菜单(弹出式菜单)

我们都知道在WIN95/98中可以按右键弹出一个快捷菜单,那么在VFP中怎样制作快捷菜单呢?方法如下:

1.在项目管理器的“其它”中选择“菜单”,按“新建”;
2.出现如 图(略) ,按“快捷菜单”;
3.出现与制作顶部下拉菜单类似的菜单设计器,这时可按制作下拉菜单同样的方法输入所需要的菜单项等内容;
4.制作完后同样需要“保存”、输入文件名、“生成”;
5.调用的方法也与下拉菜单一样,即在需要的地方输入命令:do 快捷菜单名 .mpr 。比如您可以在一表单或某个控件的“rightclick”事件输入这个命令,那么当您在表单或这个控件上按鼠标右键时就会弹出这个菜单。
注 意
控件的rightclick事件优先于表单的rightclick事件,也就是说您把命令放在了表单的rightclick事件中,而没有放在控件中时,那么在这个控件上按右键是不会有作用的。

八、给菜单项作标记

如果想给菜单的某个选项打勾(作标记),如 图(略) ,怎么办呢?用如下命令:

set mark of bar 1 of '系统' to .t.

意思是给主菜单上的“系统”下的子菜单中的第 1 个菜单项作上标记,如要去除标记,则:

set mark of bar 1 of '系统' to .f.

要给整个子菜单的所有选项作标记:

set mark of popup '系统' to .t.

想要知道某个菜单项是否作了标记,用如下函数:

MRKBAR('系统',1)

如该函数返回 .T.,则代表“系统”主菜单下的第 1 个子菜单项作了标记,如是 .F.,则表明没有作。

注意:

如果菜单里面加了分隔线,因为分隔线也要算一个菜单项,因此分隔线下的菜单项的序号要增加,比如 图(略) 中的“退出”要加标记,就应该是:

set mark of bar 5 of '系统' to .t.

而不是:

set mark of bar 4 of '系统' to .t.

另外,如果主菜单加了快捷键,那么它的名称会改变,比如“系统”可能变成“a系统s”,这要打开菜单的源代码才能看到,可用如下命令打开来看:

modify command 菜单文件名 .mpr

您会看到其中有类似下面这样的程序:

ON PAD _rxz17gfg2 OF _MSYSMENU ACTIVATE POPUP a系统s
ON PAD _rxz17gfgm OF _MSYSMENU ACTIVATE POPUP ab进货j
ON PAD _rxz17gfgo OF _MSYSMENU ACTIVATE POPUP 销售x
ON PAD _rxz17gfgp OF _MSYSMENU ACTIVATE POPUP 代销d
ON PAD _rxz17gfgr OF _MSYSMENU ACTIVATE POPUP 库存k
ON PAD _rxz17gfgt OF _MSYSMENU ACTIVATE POPUP 维护w

POPUP 后面所跟的就是各子菜单的真实名称,在作标记是必须用这个名称。

关闭本窗口 | 上一篇:使用FOXPRO编一个完整的软件 | 下一篇:Foxpro 软件的编译及制作安装盘 | TOP↑
如本文牵涉到版权问题,请联系站长.谢谢!