用SPT访问SQL数据表生成动态菜单
来源:优易学  2011-12-9 18:44:52   【优易学:中国教育考试门户网】   资料下载   IT书店

  * *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 系统"

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训