| vfp实例教程 | vfp基础教程 | vfp初级教程 | vfp中级教程 | vfp高级教程 | vfp网上文摘 | vfp等级考试 | vfp源码下载 |
| 第八课 优化菜单 一、跳过 我们在使用WINxx软件时,经常可以看到它们的某些菜单项在某种情况下被屏蔽掉(字成为灰色),这时这些菜单项就不可用,这也叫跳过。 这是一个非常有用的功能,比如当一个数据表没有打开时,就不能执行查询的功能,这时如能将“查询”菜单项屏蔽岂不很酷,那么VFP能否做到这一点呢?能!而且很容易,方法是:
当程序运行时,在启动菜单之前必须先为所有的跳过变量赋值,否则菜单启动后会发生变量找不到的错误,因为菜单程序会根据这些变量值的“真”、“假”来确定这些菜单项是否可用。 如果您希望菜单一启动某个菜单项就不可用,那么在菜单启动前就给相应的变量赋值“.T.”,否则为“.F.”。 在程序中什么时候要想让这个菜单项不可用,只需要将变量设为“真”即可,又想让它可用,再设为“假”。 比如我们可以给前面的人事档案程序的查询等菜单项设一跳过表达式: .not. dkda 这里为什么要加个“.not.”呢?因为在菜单的初始化代码中,该变量是设为“假”的,因为这时档案还没有打开,菜单一启动,查询功能应该不可以用,我们前面说过,当跳过表达式为“真”时不可用,这时dkda变量为“假”,我们又想“查询”不可用,于是就取其反面,加上一个“.not.”,整个表达式的值就为真了,反之,当dkda为“真”时,即档案已打开,这时表达式就为假,因此“查询”就可以用了。 初学者看上面这段话,可能会有点晕,多看两遍。 二、给菜单加说明 在许多的软件中我们都会看,当鼠标指到某个菜单项时,在下面的状态栏上可看到该菜单项的详细说明,这个功能是怎么实现的呢,方法如下:
三、给菜单加分隔线 为了使菜单易于查看和调用,常常需要在菜单中加入分隔线,如图6,下面讲做分隔线的方法:
四、增加热键 如果要给某个菜单项增加热键,方法如下:
五、插入栏 很多朋友一定想在自己的软件中做出象VFP中的菜单中的一些功能,比如剪切、复制、粘贴等,这些功能如果自己编可就太麻烦,如能直接调用VFP的相应功能那就太好了,完全可以做到,方法是:
这样您的菜单也就有了VFP的相应功能了,而且还可以使用它的快捷键,如ctrl+x、ctrl+c等等。
六、增加快捷键 这里所说的快捷键与上面所说的热键有什么不同呢?说起来要一大堆话,相信您看了图13就明白了,制作的方法为:
七、制作快捷菜单(弹出式菜单) 我们都知道在WIN95/98中可以按右键弹出一个快捷菜单,那么在VFP中怎样制作快捷菜单呢?方法如下:
八、给菜单项作标记 如果想给菜单的某个选项打勾(作标记),如图17,怎么办呢?用如下命令:
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.,则表明没有作。 注意: 如果菜单里面加了分隔线,因为分隔线也要算一个菜单项,因此分隔线下的菜单项的序号要增加,比如图17中的“退出”要加标记,就应该是: 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 POPUP 后面所跟的就是各子菜单的真实名称,在作标记是必须用这个名称。 |