使用FoxPro菜单生成器的三个经验

Author: 广西 莫治雄 Date: 1996-11-08

        一、菜单条(MENU BAR)的定位
        使用菜单生成器建立的菜单,是建立在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命令即可。