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

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

有时候由于实际应用不必使用多级菜单,只仅需使用一级菜单(即仅有 PAD 菜单栏),当然亦可以用弹出式菜单,下面介绍是通用一级菜单(仅有 PAD)的实用程序供读者参考。
我们只需用一个小程序调用即可,下面假设调用程序为 MYMENU.PRG 菜单的内容为"新增,编辑,删除,筛选,导出,打印,退出",而对应的应用模块名称为"新增,编辑,删除,筛选,导出,打印,退出"。实际应用时,用户可根据具体需要,设定菜单的内容。

PROCEDURE MYMENU
Unitarymenu("新增,编辑,删除,筛选,导出,打印,退出")
RETURN

PROCEDURE Unitarymenu
****************************************
* 单一菜单模块  最后修改时间 2011.01.16
****************************************
PARAMETERS CANSHUBIAO  && 户菜单参数表
IF PARAMETERS()=0
DEFINE WINDOW CDCSB AT 0,0 SIZE 20,70 ;
SYSTEM CLOSE TITLE "单一菜单调用格式"
ACTIVATE WINDOW CDCSB
MOVE WINDOW CDCSB CENTER
TEXT

    单一菜单调用格式:Unitarymenu(‘用户菜单参数表’)

    范例:菜单只有菜单栏(PAD):新增,编辑,删除,筛选,导出,打印,退出

    Unitarymenu("新增,编辑,删除,筛选,导出,打印,退出")

    而对应的应用模块亦为

    PROCEDURE 新增 ...... RETURN

    PROCEDURE 编辑 ...... RETURN

    PROCEDURE 删除 ...... RETURN

    PROCEDURE 筛选 ...... RETURN

    .......
ENDTEXT
READ
RELEASE WINDOWS CDCSB
RETURN
ENDIF
CLEAR
**********************************************************
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 TO
RELEASE 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 "退出"
ENDIF
ACTIVATE MENU _MSYSMENU  && 激活系统菜单
RETURN

PROCEDURE Choice
PARAMETERS Mprompt       && 菜单栏
IF Mprompt='退出'
SET SYSMENU TO
SET SYSMENU TO DEFAULT
ELSE
  IF FILE(Mprompt+".PRG") OR FILE(Mprompt+".FXP")
  DO (Mprompt)           && 执行菜单栏模块
  ELSE
  MESSAGEBOX('['+Mprompt+']功能模块不存在!','系统提示')
  ENDIF
ACTIVATE MENU _MSYSMENU  && 激活系统菜单
ENDIF
RETURN

该程序在 VFP6 和 VFP7 上通过,用户可直接复制到 VFP 平台上即可使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值