unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Panel1: TPanel;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
Procedure WinMsg (Var Msg : TMsg; Var Handled : Boolean);
Procedure DealFun1;//处理函数1
Procedure DealFun2;//处理函数2
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.WinMsg(var Msg: TMsg; var Handled: Boolean);
Var
aPt:Pointer;
begin
If Msg.Message = WM_LBUTTONDOWN then
begin
aPt:=FindVCLWindow(Msg.pt); //获取对应的指针地址
if TButtonControl(aPt).ClassName<>'TButton' then Exit;
Label1.Caption := '您按下了:'+TButton(aPt).Caption;
case TButtonControl(aPt).Tag of
1:
begin
DealFun1;
TButtonControl(aPt).SetFocus;
end;
2:
begin
DealFun2;
TButtonControl(aPt).SetFocus;
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := WinMsg;
end;
procedure TForm1.DealFun1;
begin
Label2.Caption := '处理事件1';
end;
procedure TForm1.DealFun2;
begin
Label2.Caption := '处理事件2';
end;
end.