奇怪

taohua300 2012-11-27 05:12:33
form1为顶层表单
form2为子表单在form1中显示,并设置模式表单
form1有菜单menu1

从菜单里执行form2的时候,form1表单中的元素不能用了,但menu1中的选项仍然能用
不知道为什么
以前没有出现过这种情况

我重新建立了测试表单尝试重现问题
却又完成正常
即顶层表单中的菜单不可用

为什么呢
...全文
107 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
taohua300 2012-11-28
  • 打赏
  • 举报
回复
引用 7 楼 apple_8180 的回复:
把 SET SYSMENU OFF 改为 Set Sysmenu On Set Sysmenu To 或去掉 SET SYSMENU OFF
这样可以了
taohua300 2012-11-28
  • 打赏
  • 举报
回复
为什么这样呢 帮助文件中这条命令只跟vfp的主菜单有关系 跟顶层表单的自定义菜单没关系啊 ?
十豆三 2012-11-28
  • 打赏
  • 举报
回复
把 SET SYSMENU OFF 改为 Set Sysmenu On Set Sysmenu To 或去掉 SET SYSMENU OFF
taohua300 2012-11-28
  • 打赏
  • 举报
回复
CLEAR ALL
SET STATUS BAR ON
SET SYSMENU OFF
SET EXACT ON
SET MARK TO "-"
SET DATE TO ymd
SET SAFETY OFF
SET CENTURY ON
SQLSETPROP(0, "QueryTimeOut", 7)
SQLSETPROP(0, "ConnectTimeOut",  ;
          6)
SQLSETPROP(0, "DispLogin", 3)
SET HOURS TO 24
SET DECIMALS TO 2
SET SYSMENU TO
_SCREEN.visible = .F.
SET DEFAULT TO SYS(5) + SYS(2003)
On Shutdown do myquit

DO FORM fast
READ EVENTS
RETURN
更换成新建的菜单问题同样存在 把顶层表单拷贝到其他目录后,模拟部分变量然后运行表单,问题居然消失了 然后我又回到原来的目录,模拟部分变量,然后单独执行表单form1,也没问题 编译成exe问题又出现了 看来应该是问题出现在主程序,登录表单,或是连接数据库状态表单上 但这3部分都是以前用的,除了登录表单验证部分有所改变,其他都没改动
十豆三 2012-11-28
  • 打赏
  • 举报
回复
你的是 vfp9.0 吗? 如果是 vfp9.0,从你的描述来看,应该是 主表单(form1)的问题,你对比一下 form1 和 你后来重新的测试表单属性有什么不同。 再或者把你后来测试的菜单与原来的菜单对换一下。 再不行,把你的 form1 上的控件删除,去掉后台数据库,然后发上来。
十豆三 2012-11-28
  • 打赏
  • 举报
回复
Set Sysmenu Off

Set Sysmenu To
都可以废止 Visual FoxPro 主菜单栏。
但实验证明 Off 也废止了等待机制,所以只用 Set Sysmenu To 就可以了。
其实没有必要废止 Visual FoxPro 主菜单栏(理由见下图),只要保证 Set Sysmenu 是 On 就可以了。
taohua300 2012-11-28
  • 打赏
  • 举报
回复
引用 10 楼 apple_8180 的回复:
而你用 Off 的目的就是 将废止 Visual FoxPro 主菜单栏,发出不带附加参数的 SET SYSMENU TO 命令有同样的效果。
是不是这么说 SET SYSMENU TO 和 SET SYSMENU OFF 都能废止vfp 主菜单栏 但途径不同 ? 我在主程序中同时使用了这两条命令 编译后出现的问题 而将SET SYSMENU OFF这条命令注释后 问题就解决了 经5楼提示后 意识到问题出现在主程序,或是登录表单,或是连接数据库状态表单上 最怀疑的是主程序 因为主程序是复制过来直接使用 有时候也稍作修改 不过最近没有修改过 然后和菜单有关的就只有set sysmenu这条命令 使用 set sysmeun on 或者 set sysmenu to 都没有问题 混合使用也没有问题 只有在使用set sysmenu off的时候才出现问题 虽然解决掉了问题 还没有弄明白到底什么原因
十豆三 2012-11-28
  • 打赏
  • 举报
回复
我认为关键在 Set Sysmenu On ON 在程序执行期间,当 Visual FoxPro 正在等待诸如 BROWSE、READ 和 MODIFY COMMAND 等命令的键盘输入时,启用 Visual FoxPro 主菜单栏。 Read 可以理解为等待机制,而你 Off 后就废止了这个等待,所以菜单还是可用的。 而帮助中 Off 却没有这么说,所以很难想到是这个原因。 而你用 Off 的目的就是 将废止 Visual FoxPro 主菜单栏,发出不带附加参数的 SET SYSMENU TO 命令有同样的效果。
taohua300 2012-11-27
  • 打赏
  • 举报
回复
从form1里加了个按钮 执行一个空的模式子表单 还是同样的情况
taohua300 2012-11-27
  • 打赏
  • 举报
回复
引用 2 楼 apple_8180 的回复:
你的意思是主表单不可用是对,但主表单中的菜单还可用,应该不可用,对吧? 很有可能 form2 出错了,没有执行完毕。
从菜单里可用执行好多表单 执行任何一个 顶层表单里的菜单都是可用的 不可能所有子表单都没执行完 应该不是这个问题
十豆三 2012-11-27
  • 打赏
  • 举报
回复
你的意思是主表单不可用是对,但主表单中的菜单还可用,应该不可用,对吧? 很有可能 form2 出错了,没有执行完毕。
taohua300 2012-11-27
  • 打赏
  • 举报
回复
表单使用了后台数据库 发上来也不可用 有没有碰到这种情况的朋友

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧