首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

如何实现这个控件?提供一下思路.200分

2012-03-14 
怎么实现这个控件??提供一下思路.200分我需要做一个控件暂时称为TA吧.当一个TForm上放有一个TA控件并且TA.

怎么实现这个控件??提供一下思路.200分
我需要做一个控件   暂时称为   TA   吧.
当一个TForm上放有一个   TA   控件   并且   TA.Active   :=   True   的时候,只要单击窗口上的任何区域(包括标题栏和窗口上的控件)都会   先运行该控件的   TA.OnClick   过程,   后面再接着运行相关的过程.
比如单击的是窗口上的一个   Button   则运行   TA.OnClick,   Button.OnClick..

加分贴   http://community.csdn.net/Expert/topic/5577/5577567.xml?temp=.8509638

[解决办法]
这个不用做成组件.


procedure TForm1.Test(var msg: tagMsg; var H: boolean);
begin
//if (Msg.hwnd = Handle) or (FindControl(Msg.hwnd) <> nil) then
if (Msg.message = WM_LButtonDown) or (Msg.message = WM_NCLBUTTONDOWN) then
Caption := Format( '%d,%d ',[mouse.CursorPos.X, mouse.CursorPos.Y]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
application.OnMessage := Test;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(self.Caption);//测试:先响应OnMessage后,消息才分派到BtnOnclick
end;
[解决办法]
1.尝试Additional页里ApplicationEvents控件的OnMessage
2.尝试Application.HookMainWindow(WindowProc);
3.GetWindowLong/SetWindowLong with GWL_WNDPROC

热点排行