使用FoxPro菜单生成器的三个经验
使用菜单生成器建立的菜单,是建立在FoxPro系统菜单上的,菜单名为-MSYSMENU。在默认情况下,菜单条置于屏幕的第0行,不需要用户定义。然而,在应用程序中,有时需要把菜单定义在某一行上。此时可以在菜单生成器的SETUP程序段中写上以下语句:
DEFINE MENU -MSYSMENU BAR AT LINE<行号>
即可把菜单定义在<行号>指定的行上。
二、定义弹出菜单名(POPUP NAME)
在UCDOS汉字系统支持下使用西文版FoxPro开发应用软件时,菜单选项常常使用汉字提示。笔者在开发应用软件的实践中发现,当使用到某些汉字时,菜单生成器生成的菜单程序有时会产生语法错误。例如,当菜单主功能选项(PAD)的提示为“系统维护”时,生成的菜单程序就会出错。出错的程序行如下:
DEFINE PAD -r5r1a2451 OF -MSYSMENU PROMPT "系统维护";
COLOR SCHEME 3
ON PAD -r5r1a2451 OF -MSYSMENU ACTIVATE POPUP N
DEFINE POPUP N MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF N PROMPT "系统初始化"
经分析生成的菜单程序发现,出错的主要原因是,菜单生成器自动生成的弹出菜单名为“N”,属于非法的菜单名。因此,这个菜单程序不能正确运行。
解决的方法是,在进行菜单设计时,如果发现弹出菜单名为“N”,此时应从MENU菜单中选择“N OPTIONS...”选项,然后在MENU OPTION窗口的NAME输入框中把“N”改成合法的弹出菜单名即可。
在编程实践中,笔者还遇到这样一种情况:在FoxPro环境中主控菜单程序能够正确运行,但用编译工具编译成.EXE文件后,在DOS环境中执行应用程序时,主控菜单程序却不能正常运行,菜单出现后异常返回到DOS提示符。
解决的方法是,在用菜单生成器生成菜单系统时,在CLEANUP程序段中加上以下语句:
READ VALID .F.
需要退出应用系统时,在退出系统模块中使用QUIT命令即可。