当焦点从一个控件到另一个控件时,如何判断得到焦点的是哪一个控件?(100分)

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

hukaijt

Unregistered / Unconfirmed
GUEST, unregistred user!
当焦点从一个控件到另一个控件时,如何判断得到焦点的是哪一个控件?
意思是我想在一个EDIT1的EXIT里写一些东西,如果得到焦点是LISTBOX1就做一些事情
如果不是,就做另外一些事情!这个判断该怎么写呢?

 
procedure TForm1.Edit1Exit(Sender: TObject);
begin
if ActiveControl.Name = 'ListBox1' then ShowMessage('ok');
end;
 
hukaijt的要求不可能实现,因为他要求在
EDIT1的ONEXIT事件中判断下一个将得到焦点的控件,但
此时焦点在EDIT1上。

除非不用ONEXIT事件:
设置一个全局变量记录上一个得焦点的控件的控件名,
在LISTBOX1的ONENTER事件中判断上一个得焦点的控件是否为EDIT1,再
执行所需代码。
 
不好意思,我错了,DQ的方法是正确的。
 
agree with dq
 
如果截获 WM_KILLFOCUS 消息,也许理解得更加清楚:

WM_KILLFOCUS
hwndGetFocus = (HWND) wParam; // handle of window receiving focus
消息的 wParam 参数明确指出了将要得到焦点的窗口句柄。

截获 WM_KILLFOCUS 消息的办法,可以用子类化,也可以继承一个 TEdit 子类,直接
写消息响应函数。
 
谢谢大家,DQ的方法完全正确!
 
接受答案了.
 
后退
顶部