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

__ANDY__WU 2007-06-03 11:54:02
我需要做一个控件 暂时称为 TA 吧.
当一个TForm上放有一个 TA 控件 并且 TA.Active := True 的时候,只要单击窗口上的任何区域(包括标题栏和窗口上的控件)都会 先运行该控件的 TA.OnClick 过程, 后面再接着运行相关的过程.
比如单击的是窗口上的一个 Button 则运行 TA.OnClick, Button.OnClick..

加分贴 http://community.csdn.net/Expert/topic/5577/5577567.xml?temp=.8509638
...全文
201 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongqi162 2007-06-12
  • 打赏
  • 举报
回复
jf
__ANDY__WU 2007-06-12
  • 打赏
  • 举报
回复
已经实现,谢谢各位..
graycarl 2007-06-03
  • 打赏
  • 举报
回复
1.尝试Additional页里ApplicationEvents控件的OnMessage
2.尝试Application.HookMainWindow(WindowProc);
3.GetWindowLong/SetWindowLong with GWL_WNDPROC
__ANDY__WU 2007-06-03
  • 打赏
  • 举报
回复
测试通过,但是给Application.OnMessage赋值好像不能实现我的需求啊,
打开 DLLForm 的时候那不是把 Exe 里面的 OnMessage 也改掉了么??
dBASEIII 2007-06-03
  • 打赏
  • 举报
回复
放DLL里? 好象你前面没这么说吧.

你以为我是以你这里灌水吗?????

呵!
dBASEIII 2007-06-03
  • 打赏
  • 举报
回复
几句代码, 何必做在控件

行得通行不通,你试一下
__ANDY__WU 2007-06-03
  • 打赏
  • 举报
回复
你的回复我在其我开的其他贴有看到,我想知道怎么可以做成控件?
因为我想在DLL的Form里面实现,而且DLL里面没有消息循环,所以也没有
application.OnMessage 了吧.好像行不通.
dBASEIII 2007-06-03
  • 打赏
  • 举报
回复
这个不用做成组件.


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;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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