* *modify date: 2002.06.04 mender: Niko 满足菜单打开多个窗口,窗口已打开则Activate,工具条及权限随激活窗口而改变 * *modify date: 2002.06.21 mender: Niko 增加文件,编辑,帮助三项,文件项中内容随工具条内按钮相应变更 * * 该程序动态生成 菜单根据 全局变量表 global_right * *global_right(program_id c(6),descr c(40) null,search logic ,amend logic,new logic,candele logic) * * 主菜单固定 (new) * * 1.市场管理 M (Market) * * 2.生产计划 P (Production) * * 3.工程管理 E (Engineer) * * 4.品质(管理) Q (Quantity) * * 5.财务(系统) A (Account) * * 6.报关(系统) C (Custom) * * 7.车间(管理) W (Workshop) * * 8.采购(管理) B (Workshop) * * 9.仓库(管理) S (Workshop) * * 10.其它(功能) O (Other) * * 11.帮助 H (Help) * * 12.退出 X (eXit)
LPARAMETERS oFormRef, getMenuName, lUniquePopups LOCAL cMenuName, nTotPops, a_menupops, cTypeParm2, cSaveFormName,i,macro1,programid,loginsucc *!* IF TYPE("m.oFormRef") # "O" OR ; *!* LOWER(m.oFormRef.BaseClass) # 'form' OR ; *!* m.oFormRef.ShowWindow # 2 *!* MESSAGEBOX([只能从顶层表单调用该菜单。请确认您表单的 ShowWindow 属性已设为 2。阅读此菜单 MPR 文件的头部分,可以获得详细信息。]) *!* RETURN *!* ENDIF m.cTypeParm2 = TYPE("m.getMenuName") m.cMenuName ='MAINFORM' &&& SYS(2015) m.cSaveFormName = m.oFormRef.Name IF m.cTypeParm2 = "C" OR (m.cTypeParm2 = "L" AND m.getMenuName) m.oFormRef.Name = m.cMenuName ENDIF IF m.cTypeParm2 = "C" AND !EMPTY(m.getMenuName) m.cMenuName = m.getMenuName ENDIF
i=0 && select * from global_right where len(alltrim(program_id))>3 into cursor temp &&第三级菜单 select distinct left(program_id,3) as program_id from global_right where len(alltrim(program_id))>3 into cursor temp i=_tally &&得到有有多少个第二级菜单有第三级菜单 select * from global_right where exists(select * from temp where global_right.program_id=temp.program_id) and len(alltrim(global_right.program_id))>3 into cursor temp_menu &&tempp_menu 得到有第三级菜单的程序代号权限表。
select * from global_right where exists(select * from temp where global_right.program_id==temp.program_id) into cursor tempp &&tempp 得到有第三级菜单的第二级菜单项
DIMENSION a_menupops[i+13] IF TYPE("m.lUniquePopups")="L" AND m.lUniquePopups FOR nTotPops = 3 TO ALEN(a_menupops) a_menupops[m.nTotPops]= SYS(2015) ENDFOR ELSE a_menupops[1]="文件" && F a_menupops[2]="编辑" && D a_menupops[3]="报价" && M a_menupops[4]="生产计划" && P a_menupops[5]="工程" && E a_menupops[6]="品质" && Q a_menupops[7]="车间生产" && W a_menupops[8]="采购" && B a_menupops[9]="仓库" && S a_menupops[10]="报关" && C a_menupops[11]="财务" && A a_menupops[12]="系统管理" && O a_menupops[13]="帮助" && H j=0 select tempp scan j=j+1 a_menupops[13+j]=alltrim(tempp.descr) endscan ENDIF
#define m_num 13 &&定义一级菜单个数 dimension m_menu[m_num] m_menu[1]="F%" && 1.文件 M (Market) m_menu[2]="D%" && 2.编辑 P (Production) m_menu[3]="M%" && 3.报价 E (Engineer) m_menu[4]="P%" && 4.生产计划 Q (Quantity) m_menu[5]="E%" && 5.工程 A (Account) m_menu[6]="Q%" && 6.品质 C (Custom) m_menu[7]="W%" && 7.车间生产 W (Workshop) m_menu[8]="B%" && 8.采购 B (Workshop) m_menu[9]="S%" && 9.仓库 S (Workshop) m_menu[10]="C%" && 10.报关 O (Other) m_menu[11]="A%" && 11.财务 H (Help) m_menu[12]="O%" && 12.系统管理 X (eXit) m_menu[13]="H%" && 13.帮助
** 一级菜单定义 **
DEFINE MENU (m.cMenuName) IN (m.oFormRef.Name) BAR
DEFINE PAD fileobj OF (m.cmenuname) PROMPT "文件(\ KEY ALT+F, "ALT+F" ; MESSAGE "新建, Store,删除,Restore,关闭窗口, 打印, or 退出系统" DEFINE PAD editobj OF (m.cmenuname) PROMPT "编辑(\ KEY ALT+E, "" DEFINE PAD fobobj OF (m.cmenuname) PROMPT "报价(\ KEY ALT+M, "" DEFINE PAD planwork OF (m.cmenuname) PROMPT "生产计划(\ KEY ALT+P, "" DEFINE PAD procedobj OF (m.cmenuname) PROMPT "工程(\ KEY ALT+E, "" DEFINE PAD quality OF (m.cmenuname) PROMPT "品质(\ KEY ALT+Q, "" DEFINE PAD factwork OF (m.cmenuname) PROMPT "车间生产(\ KEY ALT+W, "" DEFINE PAD buygoods OF (m.cmenuname) PROMPT "采购(\ KEY ALT+B, "" DEFINE PAD goods OF (m.cmenuname) PROMPT "仓库(\ KEY ALT+S, "" DEFINE PAD customs OF (m.cmenuname) PROMPT "报关(\ KEY ALT+C, "" DEFINE PAD finance OF (m.cmenuname) PROMPT "财务(\ KEY ALT+A, "" DEFINE PAD defaultsys OF (m.cmenuname) PROMPT "系统管理(\ KEY ALT+O, "" ; MESSAGE "系统用户权限及基础信息定义" DEFINE PAD helpobj OF (m.cmenuname) PROMPT "帮助(\ KEY ALT+H, ""
ON PAD fileobj OF (m.cMenuName) ACTIVATE POPUP filepad ON PAD editobj OF (m.cMenuName) ACTIVATE POPUP editpad ON PAD fobobj OF (m.cMenuName) ACTIVATE POPUP (a_menupops[3]) ON PAD planwork OF (m.cMenuName) ACTIVATE POPUP (a_menupops[4]) ON PAD procedobj OF (m.cMenuName) ACTIVATE POPUP (a_menupops[5]) ON PAD quality OF (m.cMenuName) ACTIVATE POPUP (a_menupops[6]) ON PAD factwork OF (m.cMenuName) ACTIVATE POPUP (a_menupops[7]) ON PAD buygoods OF (m.cMenuName) ACTIVATE POPUP (a_menupops[8]) ON PAD goods OF (m.cMenuName) ACTIVATE POPUP (a_menupops[9]) ON PAD customs OF (m.cMenuName) ACTIVATE POPUP (a_menupops[10]) ON PAD finance OF (m.cMenuName) ACTIVATE POPUP (a_menupops[11]) ON PAD defaultsys OF (m.cMenuName) ACTIVATE POPUP (a_menupops[12]) ON PAD helpobj OF (m.cMenuName) ACTIVATE POPUP helppad
**** 文件项菜单 DEFINE POPUP filepad MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF filepad PROMPT "打开窗口(\ KEY CTRL+O, "CTRL+O" DEFINE BAR 2 OF filepad PROMPT "\-" DEFINE BAR 3 OF filepad PROMPT "增加记录(\ KEY CTRL+I, "CTRL+I" ; SKIP FOR type("bar1") # "O" OR (Bar1.Command1.Enabled=.F.); MESSAGE "在当前窗口增加新记录" DEFINE BAR 4 OF filepad PROMPT "修改记录(\ KEY CTRL+E, "CTRL+E" ; SKIP FOR type("bar1") # "O" OR (Bar1.Command2.Enabled=.F.); MESSAGE "修改当前窗口记录" DEFINE BAR 5 OF filepad PROMPT "删除记录(\ KEY CTRL+D, "CTRL+D" ; SKIP FOR type("bar1") # "O" OR (Bar1.Command3.Enabled=.F.); MESSAGE "删除当前记录" DEFINE BAR 6 OF filepad PROMPT "\-" DEFINE BAR 7 OF filepad PROMPT "保存录入(\ KEY CTRL+S, "CTRL+S" ; SKIP FOR type("bar1") # "O" OR (Bar1.Command4.Enabled=.F.); MESSAGE "保存当前窗口记录" DEFINE BAR 8 OF filepad PROMPT "撤消录入(\ KEY CTRL+R, "CTRL+R" ; SKIP FOR type("bar1") # "O" OR (Bar1.Command5.Enabled=.F.) ; MESSAGE "还原当前窗口记录" DEFINE BAR 9 OF filepad PROMPT "\-" DEFINE BAR 10 OF filepad PROMPT "查询记录(\ KEY CTRL+F, "CTRL+F" ; SKIP FOR type("bar1") # "O" OR (Bar1.Command6.Enabled=.F.) ; MESSAGE "还原当前窗口记录" DEFINE BAR 11 OF filepad PROMPT "打印机设置(\ KEY CTRL+U, "CTRL+U" ; MESSAGE "选择打印机并设置纸张" DEFINE BAR 12 OF filepad PROMPT "打印报表(\ KEY CTRL+P, "CTRL+P" ; SKIP FOR type("bar1") # "O" OR (Bar1.Command7.Enabled=.F.); MESSAGE "直接打印" DEFINE BAR 13 OF filepad PROMPT "确认记录(\ KEY CTRL+K, "CTRL+K" ; SKIP FOR type("bar1") # "O" OR (Bar1.Command8.Enabled=.F.) DEFINE BAR 14 OF filepad PROMPT "即时帮助(\ KEY CTRL+H, "CTRL+H" ; SKIP FOR type("bar1") # "O" DEFINE BAR 15 OF filepad PROMPT "\-" DEFINE BAR 16 OF filepad PROMPT "关闭窗口(\ KEY ESC, "ESC" ; SKIP FOR type("bar1") # "O" OR ( Bar1.activenum = 0) ; MESSAGE "关闭当前窗口" DEFINE BAR 17 OF filepad PROMPT "\-" DEFINE BAR 18 OF filepad PROMPT "第一条记录" ; KEY HOME ,"Home" ; SKIP FOR type("bar1") # "O" OR (Bar1.gotop.Enabled=.F.) DEFINE BAR 19 OF filepad PROMPT "上一条记录" ; KEY PGUP , "Page Up" ; SKIP FOR type("bar1") # "O" OR (Bar1.goback.Enabled=.F.) DEFINE BAR 20 OF filepad PROMPT "下一条记录" ; KEY PGDN, "Page Down" ; SKIP FOR type("bar1") # "O" OR (Bar1.gonext.Enabled=.F.) DEFINE BAR 21 OF filepad PROMPT "末一条记录" ; KEY End ,"End" ; SKIP FOR type("bar1") # "O" OR (Bar1.gobottom.Enabled=.F.) DEFINE BAR 22 OF filepad PROMPT "\-" DEFINE BAR 23 OF filepad PROMPT "更新组别" KEY CTRL+F9,"CTRL+F9" DEFINE BAR 24 OF filepad PROMPT "更新权限" KEY CTRL+F10,"CTRL+F10" DEFINE BAR 25 OF filepad PROMPT "系统信息" KEY CTRL+F11,"CTRL+F11" *** DEFINE BAR 26 OF filepad PROMPT "重新登录" KEY F9,"F9" DEFINE BAR 27 OF filepad PROMPT "\-" DEFINE BAR 28 OF filepad PROMPT "E\ MESSAGE "退出泽冠 MRP II 系统"
ON SELECTION BAR 1 OF filepad ; DO openform ; IN LOCFILE("\MRP\mainmenu" ,"MPX;MPR|FXP;PRG" ,"WHERE is MAIN?") ON SELECTION BAR 3 OF filepad Bar1.Command1.Click() ON SELECTION BAR 4 OF filepad Bar1.Command2.Click() ON SELECTION BAR 5 OF filepad Bar1.Command3.Click() ON SELECTION BAR 7 OF filepad Bar1.Command4.Click() ON SELECTION BAR 8 OF filepad Bar1.Command5.Click() ON SELECTION BAR 10 OF filepad Bar1.Command6.Click() ON SELECTION BAR 11 OF filepad ; DO setupprint ; IN LOCFILE("\MRP\mainmenu" ,"MPX;MPR|FXP;PRG" ,"WHERE is MAIN?") ON SELECTION BAR 12 OF filepad Bar1.Command7.Click() ON SELECTION BAR 13 OF filepad Bar1.Command8.Click() ON SELECTION BAR 14 OF filepad bar1.rightclick() ON SELECTION BAR 16 OF filepad Bar1.Command9.Click() ON SELECTION BAR 18 OF filepad Bar1.gotop.Click() ON SELECTION BAR 19 OF filepad Bar1.goback.Click() ON SELECTION BAR 20 OF filepad Bar1.gonext.Click() ON SELECTION BAR 21 OF filepad Bar1.gobottom.Click() ON SELECTION BAR 23 OF filepad release bar1,currselect ON SELECTION BAR 24 OF filepad DO program\checkright ON SELECTION BAR 25 OF filepad messagebox("当前用户: " + user_no_ +chr(13)+; "用户姓名: " + user_name_+ chr(13) + ; "本机终端: " + sys(0) + chr(13) + ; "登录时间: " + ttoc(login_time_)+chr(13)+; "当前客户: " + customer_no_ +" / "+customer_c_abbr_ + chr(13) + ; "当前供应商: " + supplier_no_ +" / "+supplier_c_abbr_+ chr(13) + ; "当前仓库: " + store_no_ + " / "+ store_name_c_,64,"系统信息") ***ON SELECTION BAR 23 OF filepad DO FORM login To loginsucc ON SELECTION BAR 28 OF filepad DO proexit ; IN LOCFILE("\MRP\mainmenu" ,"MPX;MPR|FXP;PRG" ,"WHERE is MAIN?")
***** 编辑项菜单 DEFINE POPUP editpad MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR _med_undo OF editpad PROMPT "撤消(\ KEY CTRL+Z, "Ctrl+Z" ; MESSAGE "撤消上一次命令或操作" DEFINE BAR _med_redo OF editpad PROMPT "重作(\ KEY CTRL+R, "Ctrl+R" ; MESSAGE "重复上一次命令或操作" DEFINE BAR 3 OF editpad PROMPT "\-" DEFINE BAR _med_cut OF editpad PROMPT "剪切(\ KEY CTRL+X, "Ctrl+X" ; MESSAGE "移去选定内容并将其放入剪贴板" DEFINE BAR _med_copy OF editpad PROMPT "复制(\ KEY CTRL+C, "Ctrl+C" ; MESSAGE "将选定内容复制到剪贴板" DEFINE BAR _med_paste OF editpad PROMPT "粘贴(\ KEY CTRL+V, "Ctrl+V" ; MESSAGE "粘贴剪贴板上的内容" DEFINE BAR 7 OF editpad PROMPT "\-" DEFINE BAR _med_slcta OF editpad PROMPT "全选(\ KEY CTRL+A, "Ctrl+A" ; MESSAGE "选定当前窗口中的所有文本或数据项"
******帮助菜单项 DEFINE POPUP helppad MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF helppad PROMPT "帮助文件" DEFINE BAR 2 OF helppad PROMPT "\-" DEFINE BAR 3 OF helppad PROMPT "有关泽冠MRP管理系统" DEFINE BAR 4 OF helppad PROMPT "\-"
ON SELECTION BAR 1 OF helppad HtmlHelpA(0,"mrp.chm",0,"weltouse.htm") ON SELECTION BAR 3 OF helppad do form aboutinfo
**** 定义二级菜单 S (System)
for k=1 to m_num i=1 DEFINE POPUP (a_menupops[k]) MARGIN RELATIVE shadow COLOR SCHEME 4 select * from global_right where program_id like m_menu[k] and len(alltrim(program_id))<=3 into cursor temp &&&temp 为第二级菜单有的项目
select temp scan programid=temp.program_id if descr="-" then DEFINE BAR i OF (a_menupops[k]) PROMPT "\-" i=i+1 loop endif if forbit=.t. define bar i of (a_menupops[k]) prompt alltrim(temp.program_id)+" "+alltrim(temp.descr) set skip of bar i of (a_menupops[k]) .t. else if search=.f. and amend=.f. and new=.f. and candele=.f. then define bar i of (a_menupops[k]) prompt alltrim(temp.program_id)+" "+alltrim(temp.descr) set skip of bar i of (a_menupops[k]) .t. else define bar i of (a_menupops[k]) prompt alltrim(temp.program_id)+" "+alltrim(temp.descr) endif endif select tempp &&tempp 有第三级菜单的第二级菜单 locate for left(program_id,3)=alltrim(programid) if found() then && 该菜单有子菜单 for j=13 to alen(a_menupops) if a_menupops[j]=temp.descr then on bar i of (a_menupops[k]) activate popup (a_menupops[j]) i=i+1 exit endif endfor loop endif on selection bar i of (a_menupops[k]) do onselectdo in mainmenu with prompt() &&& form ¯o1 i=i+1 endscan endfor
&& 定义第三级菜单
for m=m_num+1 to alen(a_menupops) define popup (a_menupops[m]) margin relative shadow color scheme 4 select tempp &&有第三级菜单的第二级菜单项 locate for alltrim(tempp.descr)=a_menupops[m] if not found() then messagebox("该系统不存在",0+16+0,"ERROR") return endif programid=tempp.program_id select * from temp_menu where left(program_id,3)=programid into cursor temp2 select temp2 k=1 scan if descr="-" then DEFINE BAR k OF (a_menupops[m]) PROMPT "\-" k=k+1 loop endif if forbit=.t. then define bar k of (a_menupops[m]) prompt alltrim(temp.program_id)+" "+alltrim(temp.descr) set skip of bar k of (a_menupops[k]) .t. else if search=.f. and amend=.f. and new=.f. and candele=.f. then define bar k of (a_menupops[m]) prompt temp2.program_id+" "+alltrim(temp2.descr) set skip of bar k of (a_menupops[m]) .t. else define bar k of (a_menupops[m]) prompt temp2.program_id+" "+alltrim(temp2.descr) endif endif on selection bar k of (a_menupops[m]) do onselectdo in mainmenu with prompt() &&& form ¯o1 k=k+1 endscan endfor ACTIVATE MENU (m.cMenuName) NOWAIT
IF m.cTypeParm2 = "C" m.getMenuName = m.cMenuName m.oFormRef.Name = m.cSaveFormName ENDIF
if used("temp2") then use in temp2 endif if used("temp") then use in temp endif if used("tempp") then use in tempp endif
*** 设置打印机 和纸张 PROCEDURE setupprint LOCAL lcOldError lcOldError = ON('ERROR') ON ERROR * =SYS(1037) ON ERROR &lcOldError
PROCEDURE proexit if messagebox("确认退出MRPII管理系统?",4+32+256,"系统提示")=6 then mainform.release endif
Procedure OnSelectDo Parameter Windowname Windowname=Left(windowname,At(' ',windowname)-1) IF WEXIST(windowname) Activate Window &windowname _Screen.ActiveForm.WindowState=0 ELSE DO Form &windowname ENDIF
procedure openform dimension nheaders(2),nfields(2),ngws(2) nlable="程序名:" ntable="company_data" nheaders[1]="程序名" nheaders[2]="程序说明" nfields[1]='program_id' nfields[2]='program_name' ngws[1]=100 ngws[2]=250 svalue='' nsql="exec get_program_right ?user_no_,2" do form search with nsql,nfields[1],nlable,svalue,nheaders,ngws,320,50 to rekey && if empty(rekey) return .f. else rekey=alltrim(rekey) IF WEXIST(rekey) Activate Window &rekey _Screen.ActiveForm.WindowState=0 ELSE DO Form &rekey ENDIF endif
|