直接使用参数编写 VFP 仅有一级(PAD)通用菜单有时候由于实际应用不必使用多级菜单,只仅需使用一级菜单(即仅有 PAD 菜单栏),当然亦可以用弹出式菜单,下面介绍是通用一级菜单(仅有 PAD)的实用程序供读者参考。我们只需用一个小程序调用即可,下面假设调用程序为 MYMENU.PRG 菜单的内容为"新增,编辑,删除,筛选,导出,打印,退出",而对应的应用模块名称为"新增,编辑,删除,筛选,导出,打印,退出"。实际应用时,用户可根据具体需要,设定菜单的内容。 PROCEDURE MYMENUUnitarymenu("新增,编辑,删除,筛选,导出,打印,退出")RETURNPROCEDURE Unitarymenu***************************************** 单一菜单模块 最后修改时间 2011.01.16****************************************PARAMETERS CANSHUBIAO && 户菜单参数表IF PARAMETERS()=0DEFINE WINDOW CDCSB AT 0,0 SIZE 20,70 ;SYSTEM CLOSE TITLE "单一菜单调用格式"ACTIVATE WINDOW CDCSBMOVE WINDOW CDCSB CENTERTEXT 单一菜单调用格式:Unitarymenu(‘用户菜单参数表’) 范例:菜单只有菜单栏(PAD):新增,编辑,删除,筛选,导出,打印,退出 Unitarymenu("新增,编辑,删除,筛选,导出,打印,退出") 而对应的应用模块亦为 PROCEDURE 新增 ...... RETURN PROCEDURE 编辑 ...... RETURN PROCEDURE 删除 ...... RETURN PROCEDURE 筛选 ...... RETURN .......ENDTEXTREADRELEASE WINDOWS CDCSBRETURNENDIFCLEAR**********************************************************STORE 0 TO ZONGHE && 计算逗号的个数FPAD=CANSHUBIAO DO WHILE .T. DOUHAO=AT(",",FPAD) && 搜索逗号位置 IF DOUHAO>0 && 若有逗号 FPAD=SUBSTR(FPAD,DOUHAO+1) && 把逗号后面的字符串赋值 ZONGHE=ZONGHE+1 && 逗号的个数+1 ELSE EXIT && 无逗号时退出循环 ENDIF ENDDO**********************************************************SET SYSMENU SAVE SET SYSMENU TORELEASE MYPAD && 删除变量DIMENSION MYPAD(ZONGHE+1) && 定义数组FPAD=CANSHUBIAO && 重新赋值FOR SPAD=1 TO ZONGHE && 循环 ZONGHE 次DOUHAO=AT(",",FPAD) && 搜索逗号位置MYPAD[SPAD]=LEFT(FPAD,DOUHAO-1) && 截取菜单栏的内容FPAD=SUBSTR(FPAD,DOUHAO+1) && 把剩下的字符再赋值MPAD="NEWPAD"+ALLTRIM(STR(SPAD)) && PAD 对应的名称****** 定义菜单栏 ****************************************DEFINE PAD &MPAD OF _MSYSMENU PROMPT MYPAD[SPAD]****** 激活菜单栏 ****************************************ON SELECTION PAD &MPAD OF _MSYSMENU ;DO choice IN Unitarymenu WITH PROMPT()ENDFOR && 退出循环后SPAD自动+1 MYPAD[SPAD]=FPAD && 把最后的字符串赋值*---------------------------------------------------------MPAD="MENUPAD"+ALLTRIM(STR(SPAD))****** 定义最后菜单栏 ************************************DEFINE PAD &MPAD OF _MSYSMENU PROMPT MYPAD[SPAD]****** 激活最后菜单栏 ************************************ON SELECTION PAD &MPAD OF _MSYSMENU ;DO choice IN Unitarymenu WITH PROMPT()IF FPAD#"退出" && 若最后 PAD 不等于"退出"MPAD="EXIT_MENU"****** 定义最后菜单栏 ************************************DEFINE PAD EXIT_MENU OF _MSYSMENU PROMPT "退出"****** 激活最后菜单栏 ************************************ON SELECTION PAD EXIT_MENU OF _MSYSMENU ;DO DO choice IN Unitarymenu WITH "退出"ENDIFACTIVATE MENU _MSYSMENU && 激活系统菜单RETURNPROCEDURE ChoicePARAMETERS Mprompt && 菜单栏IF Mprompt='退出'SET SYSMENU TOSET SYSMENU TO DEFAULTELSE IF FILE(Mprompt+".PRG") OR FILE(Mprompt+".FXP") DO (Mprompt) && 执行菜单栏模块 ELSE MESSAGEBOX('['+Mprompt+']功能模块不存在!','系统提示') ENDIFACTIVATE MENU _MSYSMENU && 激活系统菜单ENDIFRETURN该程序在 VFP6 和 VFP7 上通过,用户可直接复制到 VFP 平台上即可使用。