messagebox对话框躲在父窗体后面,而父窗体没有设置前置显示

lkeymars 2011-11-14 04:05:27
RT,
这样导致,对话框点不到,程序没反应(用回车键貌似可以返回)
求解.
...全文
188 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lkeymars 2011-11-16
  • 打赏
  • 举报
回复
謝謝豆老師,
3級表單ShowWindow=1(In Top-Level Form)
已經解決.
十豆三 2011-11-15
  • 打赏
  • 举报
回复
你还有子表单在运行吗?Messagebox 是子表单发出的,还是父表单?

将父表单的 windowType 设为 0
并加一个新子表单试试。
十豆三 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lkeymars 的回复:]
补充一点:
3级表单显示时要取得焦点,即3级表单要显示在2级表单前面.直至3级表单退出后,2级表单才可活动
[/Quote]
把2级设为 顶层 非模式,把3级设为 在顶层中、模式。
十豆三 2011-11-15
  • 打赏
  • 举报
回复
你试试我 9楼 和 10楼的方法。
lkeymars 2011-11-15
  • 打赏
  • 举报
回复
补充一点:
3级表单显示时要取得焦点,即3级表单要显示在2级表单前面.直至3级表单退出后,2级表单才可活动
lkeymars 2011-11-15
  • 打赏
  • 举报
回复
实现的效果:
1级表单为自由表单,不作为主表单,任何时候都是活动的;
2-3级表单为关联表单,3级表单活动时,2级表单不能活动.

求教豆老师,
如何设置,可以除去下面这个bug:
测试出与用户操作结果相同的测试操如下:
在messagebox没显示之前,切换了其它窗体,并连续在任务栏点击该窗体,之后返回3级表单,就看不到messagebox
.
但当1,2级表单先最小化时,再做上面的测试发现,可以看到messagebox.
推断,messagebox被1,2级表单给挡住了.


lkeymars 2011-11-15
  • 打赏
  • 举报
回复
messagebox 在按钮点击事件里,显示messageboxp之前还有其它逻辑

测试出与用户操作结果相同的测试操如下:
在messagebox没显示之前,切换了其它窗体,并连续在任务栏点击该窗体,之后返回3级表单,就看不到messagebox
.
但当1,2级表单先最小化时,再做上面的测试发现,可以看到messagebox.
推断,messagebox被1,2级表单给挡住了.

十豆三 2011-11-15
  • 打赏
  • 举报
回复
你的 Messagebox 在什么事件中?
十豆三 2011-11-15
  • 打赏
  • 举报
回复
你改为这样试试:

1级.mainForm:
AlwaysOnTop=.F.
Desktop=.F.
ShowWindow=2(As Top-Level Form)
WindowState=0(Normal)
WindowType=0(modeless)

2级.Form:(由1级打开)
AlwaysOnTop=.F.
Desktop=.F.
ShowWindow=1(In Top-Level Form)
WindowState=0(Normal)
WindowType=1(Modal)

3级.Form:(由2级打开)
AlwaysOnTop=.F.
Desktop=.F.
ShowWindow=1(In Top-Level Form)
WindowState=0(Normal)
WindowType=0(modeless)

3级.Form:(由2级打开)
AlwaysOnTop=.F.
Desktop=.F.
ShowWindow=1(In Top-Level Form)
WindowState=0(Normal)
WindowType=1(Modal)
十豆三 2011-11-15
  • 打赏
  • 举报
回复
你把所有表单的 desktop 设为 .F. 试试
lkeymars 2011-11-15
  • 打赏
  • 举报
回复
因为只有特定情况才会发生这种情况,
用户又不说明白怎样的情况..
在我们的测试中,都不会发生的,当然,是按常规操作的

话说,如果像这种情况的操作,
其中messagebox在3级表单中使用.
在测试中发现,如果在messagebox没出来前,
循环或交错操作:'显示桌面';进入其它程序窗体;windows任务栏选VFP表单.
可能有以下情况发生:
messagebox会显示在最前面,有时3级表单不显示直到点击messagebox返回后才显示,
而2级表单,在任务栏选中后却不显示了,其它正常.


它的运行情况就难预测了...

其他用户也没有这种问题,就只有一个用户,有时会出现这种问题....
在猜想是不是那个用户做过类似的不常规的操作后,出现的这种情况...
lkeymars 2011-11-15
  • 打赏
  • 举报
回复

表单结构如下:

1级.mainForm:
alwaysOnTop=.F.
desktop=.T.
showWindow=2(as top-level)
windowState=0(normal)
windowType=1(modal)

2级.form:(由1级打开)
alwaysOnTop=.F.
desktop=.T.
showWindow=2(as top-level)
windowState=0(normal)
windowType=0(modeless)

3级.form:(由2级打开)
alwaysOnTop=.T.
desktop=.T.
showWindow=2(as top-level)
windowState=0(normal)
windowType=0(modeless)

3级.form:(由2级打开)
alwaysOnTop=.T.
desktop=.T.
showWindow=2(as top-level)
windowState=0(normal)
windowType=1(modal)

其中messagebox在3级表单中使用.
在测试中发现,如果在messagebox没出来前,
循环或交错操作:'显示桌面';进入其它程序窗体;windows任务栏选VFP表单.
可能有以下情况发生:
messagebox会显示在最前面,有时3级表单不显示直到点击messagebox返回后才显示,
而2级表单,在任务栏选中后却不显示了,其它正常.


lkeymars 2011-11-14
  • 打赏
  • 举报
回复
再补充下:
父窗体属性:
alwaysOnTop=.F.
desktop=.T.
showWindow=2
windowType=1
windowState=0

messagebox在按钮动作里
形式如下:
1.if messagebox("send mail?",4+32+256,"mail")=6
2.=messagebox('Please save this S/O first !!!',0,'message')

lkeymars 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 apple_8180 的回复:]

你的 Messagebox 是后父窗体发出的吧。

Messagebox('只有一个<确定>按钮',4096,'永远置顶')
Messagebox('有<确定>和<取消>按钮',4097,'永远置顶')
Messagebox('有<终止><重试><忽略>按钮',4098,'永远置顶')
Messagebox('有<是><否><取消>按钮',4099,'永远置顶')
[/Quote]

豆老师,后父窗体怎么理解?
补充下,大多数用户基本都可以看到Messagebox,只有个别用户某些情况下会出现这种情况.

taohua300 2011-11-14
  • 打赏
  • 举报
回复


豆老师的更详细
taohua300 2011-11-14
  • 打赏
  • 举报
回复
messagebox("sdf",0x1000, "ad")
十豆三 2011-11-14
  • 打赏
  • 举报
回复
你的 Messagebox 是后父窗体发出的吧。

Messagebox('只有一个<确定>按钮',4096,'永远置顶')
Messagebox('有<确定>和<取消>按钮',4097,'永远置顶')
Messagebox('有<终止><重试><忽略>按钮',4098,'永远置顶')
Messagebox('有<是><否><取消>按钮',4099,'永远置顶')

2,749

社区成员

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

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