主题:请大家帮忙看看FOXBASE+独立通用多级下拉菜单程序
请大家帮忙看看
FOXBASE+独立通用多级下拉菜单程序在网上看到的,可运行后发现有错误,请大家帮忙。谢谢。改好后可发送到我的邮箱:zzygyy@163.com
利用FOX的循环功能(Do While)编制出可达三级弹出式的下拉菜单程
序(以下简称MENU,见程序MENU.PRG)。
本程序将三级菜单名称及菜单的提示帮助信息均存放在数据库(见CDK.DBF)中,菜单所
有的信息与程序相分离,修改各级菜单内容仅修改数据库中的内容,各级菜单数自由选择,程
序可自动判断。所以建立一个新菜单程序只段建一个新数据库即可,不须修改菜单程序。
该数据库共有三个字段:
1.DM(菜单代码);
2.CDM(菜单名);
3.CDSM(菜单提示帮助信息)。
字段DM为单字符时表示第一级菜单,双字符时表示第二级菜单,三字符时表示第三级菜
单,DM为QQ或RRR的表示二、三级中通用的最后两个菜单。按目前常用的汉字系统2.13H或金
山DOS 5.10每屏可显示25行,则每级菜单的个数可达14个,
1:*!!* 主程序:MENU.PRG
2:SET TALK OFF
3:SET STATUS OFF
4:SET SCOREBOARD OFF
5:CLEAR ALL
6:DIMENSION PH(5),PN(3) &&各级菜单显或选状态参数【PH(5)】,选中号【PN(3)】
7:STORE "Y"TO PH(1),PH(2),PH(3),PH(4),PH(5)
8:PX1=1 && 屏幕左上角行坐标【PX1】
9:PY1=0 &&屏幕左上角列坐标【PY1】
10:PX2=24 &&屏幕右上角行坐标【PX2】
11:PY2=79 && 屏幕右上角列坐标【PY2】
12:DO WHILE .T.
13:SET PROCEDURE TO MENU
14:SELECT 1
15:USE CDK &&打开存放菜单的数据库(CDK.BDF)
16:**<说明>第一次调用本程序或从应用子程序返回,则调用过程(CDYS?.PRG)
17:IF PH(4)="Y".OR.PH(4)="Y"
18:DO CDYS2 && 置屏幕边框颜色过程(CDYS2.PRG)
19:DO CDYS1 && 置屏幕背景颜色过程(CDYS1.PRG)
20:DO CDYS3 &&显示系统名过程(CDYS3.PRG)
21:PH(4)="N"
22:ENDIF
23:MM="ABCDEFGHIJKL"&& 菜单名显示队列代码串【MM】
24:LOCATE FOR SUBSTR(DM,2,2)=SPACE(2)&&定位第一级菜单首记录,DM为菜单代码
25:MX3=PX1+2 &&定义第一级菜单左上角坐标【MX3,MY3】
26:MY3=PY1+13
27:NZ=1 && 菜单级数【NZ】,说明是第一级菜单
28:YS="SET COLO TO G+/W,BG/BR+"&&保存第一级菜单颜色【YS】
29:DO CDCS &&调用画菜单过程(CDCS.PRG),画出第一级菜单
30:IF PN(1)=CS &&如果选中第一级菜单的项目号为最后一个,则退出循环结束运行
31:EXIT
32:ENDIF
33:MZ1=SUBSTR(MM,PN(1),1)&&根据菜单选中号【PN(1)】来选出本级代码【MZ1】
34:LOCATE FOR(SUBSTR(DM,1,1)=MZ1.AND.SUBSTR(DM,2,1)<>"";
35:.AND.SUBSTR(DM,3,1)="").OR.DM="QQ" &&定位第二级菜单首记录
36:NZ=2 &&菜单级数【NZ】,说明是第二级菜单颜色【YS】
38:DO CDCS &&调用画菜单过程(CDCS.PRG),画出第二级菜单
39:DO CASE &&根据第二级菜单选中的项目来决定程序的流向
40:CASE PN(2)=CS &&如选中第二级菜单的项目号为最后一个,则退出循环结束运行
41:EXIT
42:CASE PN(2)=CS &&第二级菜单中的项目选中号为倒数第二个,则返回第一级
43:STORE "Y" TO PH(1),PH(2)
44: LOOP
45:ENDCASE
46:MZ2=SUBSTR(MM,PN(2),1)&& 根据菜单选中号【PN(2)】来选出本级代码【MZ2】
47:LOCATE FOR (SUBSTR(DM,1,1)=MZ1.AND.SUBSTR(OM,2,)=MZ2
48:.AND.SUBSTR(DM,3,1)<>"").OR.DM="RRR"&&定位第三级菜单首记录
49:NZ=3 &&菜单有数【NZ】,说明是第三级菜单颜色【YS】
50:YS="SET COLO TO W+/G,BG/BR+"&&保存第三级【YS】
51:DO CDCS &&调用画菜单过程[CDCS.PRG],画出第三级菜单
52:DO CASE && 根据第三级菜单选中的项目来决定程序的流向
53:CASE PN(3)=CS &&第三级菜单的项目选中号为最后一个,则返回第一级菜单
54:STORE "Y" TO PH(1),PH(2)
55:LOOP
56:CASE PN(3)=CS-1 &&第二级菜单中的项目选中号为倒数第二个,则返回第一级
57:STORE "Y" TO PH(2)
58:STORE "N" TO PH(1)
59:LOOP
60: ENDCASE
61: MZ=3SUBSTR(MM,PN(3),1) &&根据菜单选中号【PN(3)】来选出本级代码【MZ3】
62:MZ=MZ1+MZ2+MZ3 &&根据各级选中的项目代码【MZ?】组合应用子程序名【MZ】
63:*DO CS-& MZ.&&调用应用子程序[CS-& MZ.PRG]
64:DO CS &&此处为模拟应用子程序[CS.PRG]
65:**<说明>赋值各级菜单返回状态参数数组【PH(4)】使屏幕仍显示出三级菜单
67:STORE "Y" TO PH(4)
68:ENDDO
69: CLEAR ALL
70: SET PROCEDURE TO
71:SET COLOR TO W/0,0/W
72:CLEAR
73:RETURN
74:PROCEDURE CDCS
75:*!!*[显示各级菜单过程CDCS.PRG]
76:DIMENSION MC(20),MSM(20) &&菜单名【MC(20)】和菜单说明【MSM(20)】
77:PUBLIC CS
78:SET MESSAGE TO PX2
79:R1=1
80:CC=0
81:DO WHILE FOUND()&&测算本级菜单最大宽度【CC】(偶数)
82:CC=MAX(CC,LEN(TRIM(CDM)))
83:MC(R1)=TRIM(CDSM)&&赋值菜单库中菜单名【CDM】到数组【MC(R1)】
84:MSM(R1)=TRIM(CDSM)&&赋值菜单库中菜单提示说明【CDSM】到数组【MSM(R1)】
85:CONTINUE
86:R1=R1+1
87:ENDDO
88:CC=INT(CC/2+1)*2
89:CS=R1-1 && 计算本级菜单个数【CS】(最大为14)
90:MS1=SPACE(CC)
91:MX4=MX3 && 保存本级菜单起始坐标【MX3,MY3】到【MX4,MY4】
92:MY4=MY3
93:&YS. &&恢复本级菜单颜色
94:@MX3,MY3 SAY""+REPLACE("-",CC/2)"'
95:R1=1
96:DO WHILE R1<=CS &&根据本级菜单数【CS】显示本级菜单
97:@ROW()+1,MY3 SAY"|"+MS1+"|"
98:IF PH(NZ)="Y".OR.PH(NZ)="Y" &&如果参数【PN】为"Y",则建光标亮带
99:@ROW(),MY3+2 PROMPT MC(R1)+""MESSAGE MSM(R1)
100:ELSE
101:@ROW(),MY3+2 PROMPT CM(R1)+"Y"&&否则只显示本级菜单
102:ENDIF
103:IF R1<=CS-1,AND.CS<=8 &&如果本级菜单数【CS】少于8,则显示分隔线
104:@ROW()+1,MY3 SAY"|-"+REPLACE("-",CC/2)+""
105:ENDIF
106:R1=R1+1
107:ENDDO
108:@ROW()+1,MY2 SAY""+REPLACE("-",CC/2+""
109:SET COLOR TO 0/0
110:@MX4+1,COL() TO ROW()+1,COL()+1 CLEAR &&产生本级菜单阴影
111:@ROW(),MY4+2 SAY REPLACE("",CC+2)
112:ROW+ROW()+1
113:MX3=MX3+1 &&计算下一级菜单左上角坐标【MX3,MY3】
114:MY3=MY3+CC+2
115:IF PH(NZ)="Y".OR.PH(NZ)="Y" &&本级菜单返回参数【PN】为"Y",对本级以外清
屏
116:SET COLOR TO G/B
117:@PX1+1,MY3+4 to PX2-1,PX2-2 CLER
118:@ROW,MY3 TO PX2-1,PX2-2 CLEAR
119:&.YS. &&恢复本级菜单颜色
120:MENU TO PN(NZ) &&对本级菜单进行选择
121:ENDIF
122:RELEASE MC,MSM
123:RETURN
124:PROCEDURE CDYS1
125:*!!*[置屏幕边框颜色过程CDYS1.PRG]
126:SET COLOR TO BG+/W
127:@PX1,PY1+1,PX2,PY2-1 BOX""
128:@PX1,PY1,PX2,PY2,BOX"."
129:RETURN
130:PROCEDURE CDYS2
131:*!!*[置背景颜色过程CDYS2.PRG]
132:QX1=INT((PX2-PX1)/2)+1 &&计算屏幕中心坐标【QX1,QY2】
133:QY1=INT((PY2-PY1)/2+1
134:QX2=0
135:QY2=0
136:QX3=1 &&屏幕行,列步长【QX3,QY3】
137:QY3=4
138:SET COLOR TO G+/B
139:DO WHILE QY2<=QY1-2
140:@QX1-QX2,QY1-QY2 TO QX1+QX2,QY1+QY2 CLEAR
141:QX2=IIF(QX2<QX1,QX2+QX3,QX1-1)
142:QY2=IIF(QY2<QY1,QY2+QY3,QY1-1)
143:ENDDO
144:@PX1+1,PY1+2 TO PX2-1,PY2-2 CLEAR
145:RETURN
147:PROCEDURE CDYS3
148:*!!*[显示系统名过程CDYS3.PRG]
149:XT="···财·务·管·理·系·统···" &&管理系统名【XT】
150:YJ="|武汉一劝科研所研制|"&&研制者名【YJ】
151:XTC=LEN(XT)&&计算系统名长度【XTC】
152:YJC=LEN(YJ)&&计算研制者名长度【YJC】
153:SET COLOR TO BG/R+ &&设置管理系统名和研制者名的背景颜色
154:@PX1+1,PY1+2 TO PX2-1,PY1+10 CLEAR
155:MX4=PX1+2 &&管理系统名起始坐标【MX4,MY4】
156:MY4=PY1+4
157:R1=1
158:DO WHILE R1<=XTC &&竖式写出管理系统或【XT】
159:MXT=SUBSTR(XT,R1,2)
160:IF MXT="."
161:SET COLOR TO W/R+
162:ELSE
163:? IIF(PH(5)="Y".OR.PH(5)="y",REPLACE(CHR(7),3),"")
164:SET COLOR TO G+/R+
165:ENDIF
166:@MX4,MY4 SAY MXT
167:R1=R1+2
168:MX4=MX4+1
169:ENDDO
170:PH(5)="N"
171:MX4=PX1+8 &&研制者名起始坐标【MX4,MY4】
172:MY4=PY1+7
173:SET COLOR TO BG/R+
174:R1=1
175:DO WHILE R1<=YJC &&竖式写出研制者名【YJ】
176:MYJ=SUBSTR(YJ,R1,2)
177:@MX4,M4 SAY MYJ
178:R1=R1+2
179:MX4=MX4+1
180:ENDDO
181:RETURN
182:PROCEDURE CS
183:*!!*[模拟应用子程序CSPRG]
184:DO CDYS2
185:@10,20 SAY "本程序名为:CS-& MZ.PRG"
186:NN=INKEY(10)
187:CLOSE ALL
188:RELEASE ALL EXCEPT P*
189:RETURNE
附:菜单数据库CDK.DBF
DM--CDM--CDSM
A 1.第一级菜单A 第一级菜单A的提示存帮助信息
B 2.第一级菜单B 第一级菜单B的揭示存帮助信息
C Q.结束运行C
AA 1.第二级菜单AA 第二级菜单AA的提示存帮助信息
AB 2.第二级菜单AB 第二级菜单AB的揭示存帮助信息
BA 1.第二级菜单BA 第二级菜单BA的提示存帮助信息
BB 2.第二级菜单BB 第二级菜单BB的提示存帮助信息
QQ R.返回上级
QQ Q.结束运行
AAA 1.第三级菜单AAAA 第三级菜单AAA的提示存帮助信息
AAB 2.第三级菜单AAB 第三级菜单ABA的提示存帮助信息
ABA 1.第三级菜单ABA 第三级菜单ABA的揭示存帮助信息
ABB 2.第三级菜单ABB 第三级菜单ABB的揭示存帮助信息
BAA 1.第三级菜单BAA 第三级菜单BAA的提示存帮助信息
BAB 2.第三级菜单BAB 第三级菜单BAB的揭示存帮助信息
BBA 1.第三级菜单BBA 第三级菜单BBA的提示存帮助信息
BBB 2.第三级菜单BBB 第三级菜单BBB的提示存帮助信息
RRR R.返回上级
RRR O.返回一级
FOXBASE+独立通用多级下拉菜单程序在网上看到的,可运行后发现有错误,请大家帮忙。谢谢。改好后可发送到我的邮箱:zzygyy@163.com
利用FOX的循环功能(Do While)编制出可达三级弹出式的下拉菜单程
序(以下简称MENU,见程序MENU.PRG)。
本程序将三级菜单名称及菜单的提示帮助信息均存放在数据库(见CDK.DBF)中,菜单所
有的信息与程序相分离,修改各级菜单内容仅修改数据库中的内容,各级菜单数自由选择,程
序可自动判断。所以建立一个新菜单程序只段建一个新数据库即可,不须修改菜单程序。
该数据库共有三个字段:
1.DM(菜单代码);
2.CDM(菜单名);
3.CDSM(菜单提示帮助信息)。
字段DM为单字符时表示第一级菜单,双字符时表示第二级菜单,三字符时表示第三级菜
单,DM为QQ或RRR的表示二、三级中通用的最后两个菜单。按目前常用的汉字系统2.13H或金
山DOS 5.10每屏可显示25行,则每级菜单的个数可达14个,
1:*!!* 主程序:MENU.PRG
2:SET TALK OFF
3:SET STATUS OFF
4:SET SCOREBOARD OFF
5:CLEAR ALL
6:DIMENSION PH(5),PN(3) &&各级菜单显或选状态参数【PH(5)】,选中号【PN(3)】
7:STORE "Y"TO PH(1),PH(2),PH(3),PH(4),PH(5)
8:PX1=1 && 屏幕左上角行坐标【PX1】
9:PY1=0 &&屏幕左上角列坐标【PY1】
10:PX2=24 &&屏幕右上角行坐标【PX2】
11:PY2=79 && 屏幕右上角列坐标【PY2】
12:DO WHILE .T.
13:SET PROCEDURE TO MENU
14:SELECT 1
15:USE CDK &&打开存放菜单的数据库(CDK.BDF)
16:**<说明>第一次调用本程序或从应用子程序返回,则调用过程(CDYS?.PRG)
17:IF PH(4)="Y".OR.PH(4)="Y"
18:DO CDYS2 && 置屏幕边框颜色过程(CDYS2.PRG)
19:DO CDYS1 && 置屏幕背景颜色过程(CDYS1.PRG)
20:DO CDYS3 &&显示系统名过程(CDYS3.PRG)
21:PH(4)="N"
22:ENDIF
23:MM="ABCDEFGHIJKL"&& 菜单名显示队列代码串【MM】
24:LOCATE FOR SUBSTR(DM,2,2)=SPACE(2)&&定位第一级菜单首记录,DM为菜单代码
25:MX3=PX1+2 &&定义第一级菜单左上角坐标【MX3,MY3】
26:MY3=PY1+13
27:NZ=1 && 菜单级数【NZ】,说明是第一级菜单
28:YS="SET COLO TO G+/W,BG/BR+"&&保存第一级菜单颜色【YS】
29:DO CDCS &&调用画菜单过程(CDCS.PRG),画出第一级菜单
30:IF PN(1)=CS &&如果选中第一级菜单的项目号为最后一个,则退出循环结束运行
31:EXIT
32:ENDIF
33:MZ1=SUBSTR(MM,PN(1),1)&&根据菜单选中号【PN(1)】来选出本级代码【MZ1】
34:LOCATE FOR(SUBSTR(DM,1,1)=MZ1.AND.SUBSTR(DM,2,1)<>"";
35:.AND.SUBSTR(DM,3,1)="").OR.DM="QQ" &&定位第二级菜单首记录
36:NZ=2 &&菜单级数【NZ】,说明是第二级菜单颜色【YS】
38:DO CDCS &&调用画菜单过程(CDCS.PRG),画出第二级菜单
39:DO CASE &&根据第二级菜单选中的项目来决定程序的流向
40:CASE PN(2)=CS &&如选中第二级菜单的项目号为最后一个,则退出循环结束运行
41:EXIT
42:CASE PN(2)=CS &&第二级菜单中的项目选中号为倒数第二个,则返回第一级
43:STORE "Y" TO PH(1),PH(2)
44: LOOP
45:ENDCASE
46:MZ2=SUBSTR(MM,PN(2),1)&& 根据菜单选中号【PN(2)】来选出本级代码【MZ2】
47:LOCATE FOR (SUBSTR(DM,1,1)=MZ1.AND.SUBSTR(OM,2,)=MZ2
48:.AND.SUBSTR(DM,3,1)<>"").OR.DM="RRR"&&定位第三级菜单首记录
49:NZ=3 &&菜单有数【NZ】,说明是第三级菜单颜色【YS】
50:YS="SET COLO TO W+/G,BG/BR+"&&保存第三级【YS】
51:DO CDCS &&调用画菜单过程[CDCS.PRG],画出第三级菜单
52:DO CASE && 根据第三级菜单选中的项目来决定程序的流向
53:CASE PN(3)=CS &&第三级菜单的项目选中号为最后一个,则返回第一级菜单
54:STORE "Y" TO PH(1),PH(2)
55:LOOP
56:CASE PN(3)=CS-1 &&第二级菜单中的项目选中号为倒数第二个,则返回第一级
57:STORE "Y" TO PH(2)
58:STORE "N" TO PH(1)
59:LOOP
60: ENDCASE
61: MZ=3SUBSTR(MM,PN(3),1) &&根据菜单选中号【PN(3)】来选出本级代码【MZ3】
62:MZ=MZ1+MZ2+MZ3 &&根据各级选中的项目代码【MZ?】组合应用子程序名【MZ】
63:*DO CS-& MZ.&&调用应用子程序[CS-& MZ.PRG]
64:DO CS &&此处为模拟应用子程序[CS.PRG]
65:**<说明>赋值各级菜单返回状态参数数组【PH(4)】使屏幕仍显示出三级菜单
67:STORE "Y" TO PH(4)
68:ENDDO
69: CLEAR ALL
70: SET PROCEDURE TO
71:SET COLOR TO W/0,0/W
72:CLEAR
73:RETURN
74:PROCEDURE CDCS
75:*!!*[显示各级菜单过程CDCS.PRG]
76:DIMENSION MC(20),MSM(20) &&菜单名【MC(20)】和菜单说明【MSM(20)】
77:PUBLIC CS
78:SET MESSAGE TO PX2
79:R1=1
80:CC=0
81:DO WHILE FOUND()&&测算本级菜单最大宽度【CC】(偶数)
82:CC=MAX(CC,LEN(TRIM(CDM)))
83:MC(R1)=TRIM(CDSM)&&赋值菜单库中菜单名【CDM】到数组【MC(R1)】
84:MSM(R1)=TRIM(CDSM)&&赋值菜单库中菜单提示说明【CDSM】到数组【MSM(R1)】
85:CONTINUE
86:R1=R1+1
87:ENDDO
88:CC=INT(CC/2+1)*2
89:CS=R1-1 && 计算本级菜单个数【CS】(最大为14)
90:MS1=SPACE(CC)
91:MX4=MX3 && 保存本级菜单起始坐标【MX3,MY3】到【MX4,MY4】
92:MY4=MY3
93:&YS. &&恢复本级菜单颜色
94:@MX3,MY3 SAY""+REPLACE("-",CC/2)"'
95:R1=1
96:DO WHILE R1<=CS &&根据本级菜单数【CS】显示本级菜单
97:@ROW()+1,MY3 SAY"|"+MS1+"|"
98:IF PH(NZ)="Y".OR.PH(NZ)="Y" &&如果参数【PN】为"Y",则建光标亮带
99:@ROW(),MY3+2 PROMPT MC(R1)+""MESSAGE MSM(R1)
100:ELSE
101:@ROW(),MY3+2 PROMPT CM(R1)+"Y"&&否则只显示本级菜单
102:ENDIF
103:IF R1<=CS-1,AND.CS<=8 &&如果本级菜单数【CS】少于8,则显示分隔线
104:@ROW()+1,MY3 SAY"|-"+REPLACE("-",CC/2)+""
105:ENDIF
106:R1=R1+1
107:ENDDO
108:@ROW()+1,MY2 SAY""+REPLACE("-",CC/2+""
109:SET COLOR TO 0/0
110:@MX4+1,COL() TO ROW()+1,COL()+1 CLEAR &&产生本级菜单阴影
111:@ROW(),MY4+2 SAY REPLACE("",CC+2)
112:ROW+ROW()+1
113:MX3=MX3+1 &&计算下一级菜单左上角坐标【MX3,MY3】
114:MY3=MY3+CC+2
115:IF PH(NZ)="Y".OR.PH(NZ)="Y" &&本级菜单返回参数【PN】为"Y",对本级以外清
屏
116:SET COLOR TO G/B
117:@PX1+1,MY3+4 to PX2-1,PX2-2 CLER
118:@ROW,MY3 TO PX2-1,PX2-2 CLEAR
119:&.YS. &&恢复本级菜单颜色
120:MENU TO PN(NZ) &&对本级菜单进行选择
121:ENDIF
122:RELEASE MC,MSM
123:RETURN
124:PROCEDURE CDYS1
125:*!!*[置屏幕边框颜色过程CDYS1.PRG]
126:SET COLOR TO BG+/W
127:@PX1,PY1+1,PX2,PY2-1 BOX""
128:@PX1,PY1,PX2,PY2,BOX"."
129:RETURN
130:PROCEDURE CDYS2
131:*!!*[置背景颜色过程CDYS2.PRG]
132:QX1=INT((PX2-PX1)/2)+1 &&计算屏幕中心坐标【QX1,QY2】
133:QY1=INT((PY2-PY1)/2+1
134:QX2=0
135:QY2=0
136:QX3=1 &&屏幕行,列步长【QX3,QY3】
137:QY3=4
138:SET COLOR TO G+/B
139:DO WHILE QY2<=QY1-2
140:@QX1-QX2,QY1-QY2 TO QX1+QX2,QY1+QY2 CLEAR
141:QX2=IIF(QX2<QX1,QX2+QX3,QX1-1)
142:QY2=IIF(QY2<QY1,QY2+QY3,QY1-1)
143:ENDDO
144:@PX1+1,PY1+2 TO PX2-1,PY2-2 CLEAR
145:RETURN
147:PROCEDURE CDYS3
148:*!!*[显示系统名过程CDYS3.PRG]
149:XT="···财·务·管·理·系·统···" &&管理系统名【XT】
150:YJ="|武汉一劝科研所研制|"&&研制者名【YJ】
151:XTC=LEN(XT)&&计算系统名长度【XTC】
152:YJC=LEN(YJ)&&计算研制者名长度【YJC】
153:SET COLOR TO BG/R+ &&设置管理系统名和研制者名的背景颜色
154:@PX1+1,PY1+2 TO PX2-1,PY1+10 CLEAR
155:MX4=PX1+2 &&管理系统名起始坐标【MX4,MY4】
156:MY4=PY1+4
157:R1=1
158:DO WHILE R1<=XTC &&竖式写出管理系统或【XT】
159:MXT=SUBSTR(XT,R1,2)
160:IF MXT="."
161:SET COLOR TO W/R+
162:ELSE
163:? IIF(PH(5)="Y".OR.PH(5)="y",REPLACE(CHR(7),3),"")
164:SET COLOR TO G+/R+
165:ENDIF
166:@MX4,MY4 SAY MXT
167:R1=R1+2
168:MX4=MX4+1
169:ENDDO
170:PH(5)="N"
171:MX4=PX1+8 &&研制者名起始坐标【MX4,MY4】
172:MY4=PY1+7
173:SET COLOR TO BG/R+
174:R1=1
175:DO WHILE R1<=YJC &&竖式写出研制者名【YJ】
176:MYJ=SUBSTR(YJ,R1,2)
177:@MX4,M4 SAY MYJ
178:R1=R1+2
179:MX4=MX4+1
180:ENDDO
181:RETURN
182:PROCEDURE CS
183:*!!*[模拟应用子程序CSPRG]
184:DO CDYS2
185:@10,20 SAY "本程序名为:CS-& MZ.PRG"
186:NN=INKEY(10)
187:CLOSE ALL
188:RELEASE ALL EXCEPT P*
189:RETURNE
附:菜单数据库CDK.DBF
DM--CDM--CDSM
A 1.第一级菜单A 第一级菜单A的提示存帮助信息
B 2.第一级菜单B 第一级菜单B的揭示存帮助信息
C Q.结束运行C
AA 1.第二级菜单AA 第二级菜单AA的提示存帮助信息
AB 2.第二级菜单AB 第二级菜单AB的揭示存帮助信息
BA 1.第二级菜单BA 第二级菜单BA的提示存帮助信息
BB 2.第二级菜单BB 第二级菜单BB的提示存帮助信息
QQ R.返回上级
QQ Q.结束运行
AAA 1.第三级菜单AAAA 第三级菜单AAA的提示存帮助信息
AAB 2.第三级菜单AAB 第三级菜单ABA的提示存帮助信息
ABA 1.第三级菜单ABA 第三级菜单ABA的揭示存帮助信息
ABB 2.第三级菜单ABB 第三级菜单ABB的揭示存帮助信息
BAA 1.第三级菜单BAA 第三级菜单BAA的提示存帮助信息
BAB 2.第三级菜单BAB 第三级菜单BAB的揭示存帮助信息
BBA 1.第三级菜单BBA 第三级菜单BBA的提示存帮助信息
BBB 2.第三级菜单BBB 第三级菜单BBB的提示存帮助信息
RRR R.返回上级
RRR O.返回一级