| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 533 人关注过本帖
标题:顶层表单菜单项目不见了?
只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏
已结贴  问题点数:20 回复次数:8 
顶层表单菜单项目不见了?
我顶层表单的菜单大概如下:
*************************************************************************
LPARAMETER oFormRef,getMenuName
LOCAL cMenuName && 菜单名称
IF TYPE("m.oFormRef") # "O" OR LOWER(m.oFormRef.BaseClass) # 'form' OR m.oFormRef.ShowWindow # 2
    WAIT "此菜单只能被顶层表单调用!" window at 18,40 TIMEOUT 3
    RETURN
ENDIF
m.cMenuName = IIF(TYPE("m.getMenuName")="C",m.getMenuName,SYS(2015))
IF TYPE("m.getMenuName")="L" AND m.getMenuName
    m.oFormRef.Name = m.cMenuName
ENDIF
DEFINE MENU (m.cMenuName) IN (m.oFormRef.Name) BAR
*****************************************************************
**上面的代码是需要增加的代码,是带菜单的表单所要的。
*****************************************************************

STORE .t. TO P11,P12,P13,P14,P15 &&故意在这里重新赋值

DEFINE PAD _系统 OF (m.cMenuName) PROMPT "系统" COLOR SCHEME 3
DEFINE PAD _数据 OF (m.cMenuName) PROMPT "数据" COLOR SCHEME 3
ON PAD _系统 OF (m.cMenuName) ACTIVATE POPUP 系统
ON PAD _数据 OF (m.cMenuName) ACTIVATE POPUP 数据

DEFINE POPUP 系统 MARGIN RELATIVE SHADOW COLOR SCHEME 4

IF P11=.t.
   DEFINE BAR 1 OF 系统 PROMPT "登陆1"
   ON SELECTION BAR 1 OF 系统 DO FORM FORM\LOGIN.SCX
ENDIF

IF P12=.t.   
   DEFINE BAR 2 OF 系统 PROMPT "登陆2"
   ON SELECTION BAR 2 OF 系统 DO FORM FORM\LOGIN.SCX
ENDIF

IF P13=.T. OR P14=.T.
   DEFINE BAR 3 OF 系统 PROMPT "\-"
ENDIF
IF P13=.t.
   DEFINE BAR 4 OF 系统 PROMPT "登陆3"
   ON SELECTION BAR 4 OF 系统 DO FORM FORM\LOGIN.SCX
ENDIF
IF P14=.t.
   DEFINE BAR 5 OF 系统 PROMPT "登陆4"
   ON SELECTION BAR 5 OF 系统 DO FORM FORM\LOGIN.SCX
ENDIF

IF P15=.T.
   DEFINE BAR 6 OF 系统 PROMPT "\-"
   DEFINE BAR 7 OF 系统 PROMPT "登陆5"
   ON SELECTION BAR 7 OF 系统 DO FORM FORM\LOGIN.SCX
ENDIF

DEFINE POPUP 数据 MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF 数据 PROMPT "钞表"
ON SELECTION BAR 1 OF 数据 DO FORM FORM\抄表单.SCX
*****************************************************************
**上面两行星之间的是由向导作出菜单进编译后生成的MPR的文件部分SET SYSMENU TO和SET SYSMENU AUTOMATIC两行,
**可从生成的MPR文件中复制出再粘贴过来,注意变量 (m.cMenuName) 是菜单是名称,向导作出的一般为 _MSYSMENU,
**可用查找替换法进行替换。
**下面的代码是需要增加的代码,是带菜单的表单所要的。
ACTIVATE MENU (m.cMenuName) NOWAIT
*****************************************************************
正常界面

图片附件: 游客没有浏览图片的权限,请 登录注册

问题界面
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-09-29 09:42
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
我在顶层表单使用上面的菜单,正常的时候,都显示的。
但当我在其他表单上操作,操作的内容为,从SQL2000读取数据,计算,,,但只要我,更新数据到SQL2000,退出这个表单,回到顶层表单,有时候,就会出现图2的现象
要是,不更新数据,就不会出现图2的现象,是有时候,不是每次都会。我还故意,STORE .t. TO P11,P12,P13,P14,P15 &&故意在这里重新赋值,,还是没用。
就算我在运行其他表单的时候,改变了P11,P12,,,,等等的值,我菜单没重新刷,也不不由于P11,P12等值的改变,没生成的,我还在出现问题的时候,用MESSAGEBOX(TRAN(P11))来观察P11等值,为.T.,奇怪的是,怎么我菜单项目不见了。
2015-09-29 09:50
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
我更新SQL2000时,大概做的动作是
SELECT TMP_T1
SCAN FOR 选择=1
  BH=编号
  XM=姓名
  NL=年龄
....
TEXT TO UP_STR TEXTMERGE NOSHOW PRETEXT 4
 UPDATE T1 SET NL=?NL,XM=?XM WHERE BH=?BH
ENDTEXT
Res=sqlexec(nhandle,up_str)
if res>0
   repl 结果 WITH "成功"
else
   repl 结果 WITH "成功"
endif
endscan
真实的,在家里。
2015-09-29 09:58
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
不是每次都会?
2015-09-29 10:33
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
不是,我昨天测试了,但可以确定,只要我更新到SQL2000就有机会出现,
2015-09-29 10:42
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
我今天晚上,回去,把判断的条件,去掉,看看,会不会出现这个问题。
IF P13=.t.,去掉,不控制,看看会不会出现这个问题。。全部生成?应该不会出现吧?
2015-09-29 10:44
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
我找到问题在哪出来的了。。
我主表单 mainform.scx的INIT
DO PRG\MENU.PRG WITH THIS,.T.
我登陆表单 用户登陆.SCX,我在更换用户后,重新读取权限,然后直接调用 mainform.init来重新刷新菜单,,,
只要我换用户登陆后,重新刷新了菜单,再去其他表单,做更新SQL2000数据,就出现了。。

重新刷新菜单时,是不是要清理以前的菜单之类的啊?怎么清理,以前没用过?

2015-09-29 22:31
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
有杀错,没放过,好像在刷新前,这样做,暂时不出现此错误了。。。。,难道,问题又给我撞对了。。。
   SET SYSMENU TO DEFAULT
   CLEAR MENUS
   CLEAR POPUPS
   mainform.init
2015-09-29 22:46
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:15 
在选择用户登陆后,他的权限即被读取出来形成参数。这些参数再被‘自定义菜单’所使用。登陆前清理菜单应该可以的。
2015-09-29 23:26
快速回复:顶层表单菜单项目不见了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016176 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved