直接使用参数编写 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 平台上即可使用。
直接使用参数编写 VFP 仅有一级(PAD)通用菜单
最新推荐文章于 2022-04-01 10:36:26 发布