为什么OnDeactive事件不起作用?(100分)

  • 主题发起人 主题发起人 Huanghua
  • 开始时间 开始时间
H

Huanghua

Unregistered / Unconfirmed
GUEST, unregistred user!
我想作一个这样的程序,主窗口一旦最小化或被其他窗口覆盖时,就弹出另一个
popup窗口,我是用检测主窗口的OnDeactive事件来作的,但是结果不正确,
就只是在窗口第一次创建时响应了该事件,然后就再也没有触发该事件,想请教
各位高手这是怎么回事,奉上100大分,请各位笑纳?
 
是不是可以用定时器定时监测?
有两个Win32API于此相关:
IsWindowVisible (窗口最小化或者被Hide的时候,返回值为非零)
至于是不是被其他窗口所覆盖,建议你选取您的窗口内的某一点,
换算成屏幕坐标,然后用;
WindowFromPoint看看这个点下面的窗口是不是您的窗口
 
看一下幫助:
OnDeactivate occurs when the form loses focus.

TNotifyEvent = procedure(Sender: TObject) of object;
property OnDeactivate: TNotifyEvent;

Description

Use OnDeactivate to perform special processing when the
form transitions from being the active form to another
form in the same application becoming the active form.
If activation goes to another application, this event
is not triggered. To determine if another application has
become active, Use the TApplication object抯 OnDeactivate
event.

你需要的是TAPPLICATION的ONDEACTIVATE事件, 而不是TFORM的。
TFORM的ONDEACTIVATE事件只會在相同應用程序中的不同窗口切換
中触發。 要在不同的程序切換中触發ONDEACTIVATE要用TAPPLICATION
的ONDEACTIVATE事件。
 
呵呵,HuangHua的需求就不能用Deactive来判断
 
我想application.ondeactivate可以简化此问题的.里面可以用iswindowvisible.
pegasus:你的意思是否是该事件不能判断有alwaysontop窗口在主窗口上的情况?
 
没有active的窗口不一定是不会被用户看到的窗口,所以我说不需要截获
OnDeActivate.
 
我按照各位高手指点的方法,在Application的OnDeactivate中进行处理,现在
当主窗口隐藏时,Popup窗口已能正确弹出。但是现在又有一个新的问题产生了,
由Popup返回窗口时,总是激活Application的OnDeactivate事件。结果导致
主窗口不能重新显示出来,怎么回事?请各位指点。谢谢!!!
 
你自己在代码中加入一个boolean变量,对 Popup返回时加以控制,就可以了!
 
谢谢,按照liwei和tiger007指点的方法,我已经解决了这个问题。谢谢大家的
帮助!
 

Similar threads

回复
0
查看
815
不得闲
回复
0
查看
1K
不得闲
D
回复
0
查看
941
DelphiTeacher的专栏
D
D
回复
0
查看
880
DelphiTeacher的专栏
D
D
回复
0
查看
956
DelphiTeacher的专栏
D
后退
顶部