如何得到控件的WM_KILLFOCUS消息 我想在控件失去焦点时执行一段代码,可是找不到WM_KILLFOCUS消息的处理函数,ONEXIT是不行的,用ApplicationEvents1也不行,该怎么办呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你先要确定控件能否得到焦点,一般要在Click中写上SetFocus 线程的消息都要经过Application.OnMessage处理。楼主说ApplicationEvents很不负责任 Hook--------------------------------//回调函数function HookProc(h: hwnd; uMsg: UINT; wP: WParam; lP: lParam): LRESULT; stdcall;label l;var frm: TForm1;begin frm := TForm1(GetWindowLong(h, GWL_USERDATA)); //这里写你要处理的东西,其他可以查windows消息 case uMsg of WM_KILLFOCUS:; else begin l: Result := CallWindowProc(frm.FOldPro, h, uMsg, wP, lP); Exit; end; end; Result := 1;end;//这段函数在OnCreate调用procedure TForm1.HookPanel();var h: hwnd; l: LongInt; //l2begin h:=panel1.Handle; l := GetWindowLong(h, GWL_WNDPROC); FOldPro := Pointer(l); SetWindowLong(h, GWL_USERDATA, Integer(Self)); if l <> 0 then SetWindowLong(h, GWL_WNDPROC, Integer(@HookProc));end; if Edit1.Focused := false then begin //事件代码 end; szuzsq :FOldPro 是什么啊这段代码写在哪啊?if Edit1.Focused := false then begin //事件代码 end; FOldPro := Pointer(l); EDIT1也是个窗口---你改改就是了不是你上面那么写的 FOldPro:Pointer;TForm1成员变量 FastReport 報表分組打印問題 时间段的比较 推荐一套最新的Windows Server 2003下的ISAPI程序 有人吗? 我要把richedit的数据保存到数据库,怎么做,各位行行好 一个简单的问题,求助! 请问delphi5.0编写的组件在delphi6.0中不能用吗? 如何用回车键控制当前光标的移动(设置TabOrder的值) 图片浏览器如何做? 救急!!!TBitmap 打印输出的问题 请问:Code Completion关闭了,怎样打开啊? 以前的MD5单元文件在delphi 2009不能使用了? 窗体显示问题
--------------------------------
//回调函数
function HookProc(h: hwnd; uMsg: UINT; wP: WParam; lP: lParam): LRESULT; stdcall;
label l;
var
frm: TForm1;
begin
frm := TForm1(GetWindowLong(h, GWL_USERDATA));
//这里写你要处理的东西,其他可以查windows消息
case uMsg of
WM_KILLFOCUS:;
else begin
l: Result := CallWindowProc(frm.FOldPro, h, uMsg, wP, lP);
Exit;
end;
end;
Result := 1;
end;//这段函数在OnCreate调用
procedure TForm1.HookPanel();
var
h: hwnd;
l: LongInt; //l2
begin
h:=panel1.Handle;
l := GetWindowLong(h, GWL_WNDPROC);
FOldPro := Pointer(l);
SetWindowLong(h, GWL_USERDATA, Integer(Self));
if l <> 0 then
SetWindowLong(h, GWL_WNDPROC, Integer(@HookProc));
end;
begin
//事件代码
end;
这段代码写在哪啊?
if Edit1.Focused := false then
begin
//事件代码
end;
TForm1成员变量