vfp 表单中引用了某菜单 例如A.mpr 现在要根据登陆的权限QX的值来使某些菜单或者子菜单变灰
具体应该用什么办法看了一些介绍说可以用skip来实现但是这个skip的语句是应该写在表单的init中还是写在a.mpr中呢。如果是写在表单中,那么具体的语句怎么写呢,比如...
具体应该用什么办法 看了一些介绍说可以用skip来实现 但是这个skip的语句是应该写在表单的init中还是写在a.mpr中呢。如果是写在表单中,那么具体的语句怎么写呢,比如某一级菜单叫做 “系统管理” 当QX不等于0时不可用,然后另外一个一级菜单“打印”下面,有个二级菜单叫做 “系统账户管理信息打印”在QX不等于0时也不可用 应该怎么写
展开
1个回答
展开全部
在哪里进行Skip,取决于Skip的条件是在什么时候可用.
如果Skip使用的变量是全局的,并且在加载菜单前就已经建立,那么,就可以在菜单中定义语句中使用Skip子句来完成.
这样的好处是,不需要因为这些变量的值发生变化而去重新对菜单的项进行Skip处理.
例如这句:
DEFINE PAD _4hm0zl0tf OF _MSYSMENU PROMPT C_PROP_销售业务 COLOR SCHEME 3 ;
SKIP FOR Not _Screen.NowUser.CheckLimit(C_LMT_收银台帐, .T.)
这样的语句一般在运行时不需要特别关心,菜单在每次被激活与显示时,都会自动去计算相应的表达式以确定它们是否需要被禁用.
如果在特定情况下需要禁用某个菜单或菜单项,则可以在特定情况发生时通过Skip语句,这样的好处是,不需要考虑Skip的条件作用域,它只在相应的Set Skip Of命令执行时才会被计算,像这样:
*开始编辑
ThisForm.StartEdit()
Set Skip Of Pad _MYMENU_EDIT Of _SYSMENU .F.
...
这样做,一般需要做两个对应的操作,上面这段代码在表单进入编辑模式时启用了自定义菜单_MyMenu_Edit,它提供了一些编辑功能,在结束编辑后(保存或取消或),应当重新禁用这个菜单:
Set Skip Of Pad _MYMENU_EDIT Of _SYSMENU .T.
这样的机制从控制流程与代码结构来看都是比较复杂的.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询