请教用托盘内菜单调用表单一闪而过的问题

elongwang1 2011-06-20 06:52:15
单独调用表单没问题,会
单独使用托盘菜单没问题,会
调用表单时,在表单上使用托盘菜单也没问题,会
但是,用托盘菜单调用个表单就出问题了:
不管是设模式还是非模式,是顶层表单还是在顶层表单内,使用read events还是使用很多read events(用很多没有用,只有1个起作用)

直接上源程序,请高手看下,有空请来信讲讲书本上没有的原理

现在想法是直接调用顶层表单、在表单上用托盘吧!

程序在VFP里可以运行,但编译后运行就会出问题。

该程序也可以作为托盘菜单的示例学习哈!O(∩_∩)O哈哈~

附件在梅子论坛里,如果不能下载,只有去注册个账号了!
http://www.mzvfp.com/bbs/lookfile.asp?BoardID=2&ID=40011
...全文
124 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
都市夜猫 2011-06-21
  • 打赏
  • 举报
回复
唉,还是有好多人对 ShowWindow, WindowType, ReadEvents 这几个的关系没搞清楚。

---
为了对这类问题的有更好的理解,你可以不改变 ShowWindow,仍保留 1 或 0;但在 Show 前你必须加一条
_Screen.Visible = .t.
让表单可以显示出来

---
上面的方法会显示 vfp 的 _Screen,所以你肯定是不能接受的,所以你应该这样:

1. “提醒设置” 的 ShowWindow 必须设置成 2(作为顶级窗口),因为你的 _Screen.Visible 为 .F.,其他设置都无法显示出这个表单。
2. 由于“提醒设置”是顶级窗口,而 vfp 的顶级窗口是不会使用模式显示方式的,所以 WindowType 设成什么都无所谓,顶级窗口只会以非模式窗口来运行。这样一来也就会出现你所看到的“一闪而过”现象,因为是非模式运行,所以你用
提醒设置 = Newobject("form1")
创建的表单在 Show 后是不会停下来的,"提醒设置" 这个对象变量马上就会因出了作用域而被释放;要想这个变量不被释放(也就是表单不被释放),你可以在 NewObject 之前先 public 提醒设置,更好的方法是在 Show 后加一句
_Screen.AddProperty('提醒设置', 提醒设置)
将这个表单对象加到 _Screen 的一个自定义属性中

---
不知通过上面两种方式,你是否理解了这两个属性的作用?

elongwang1 2011-06-21
  • 打赏
  • 举报
回复
谢谢,原来是没有考虑到菜单的作用域啊,怪不得用按扭调用也会出现问题。
看别人的示例,都用了PUBLIC,原来是有原因的啊!!!

还没实际操作,不过应该就是这个问题了!
elongwang1 2011-06-20
  • 打赏
  • 举报
回复
现在发现,即使用直接调用顶层表单、在表单上用托盘的方法,如果想用newobject新建一个form也是一闪而过,但是用现成的表单就不会(do form XX).
(+﹏+)~狂晕(+﹏+)~狂晕

2,749

社区成员

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

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