直接使用参数编写 VFP 仅有一级(PAD)通用菜单

    技术2022-05-20  64

    直接使用参数编写 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 平台上即可使用。


    最新回复(0)