根据Sender如何找到控件的指针(迷糊死了)
问题如下,
例如一个控件label1
其单击过程OnClick中含有变量sender
我想知道怎样根据这个sender找到
label1的指针
前提是不允许直接使用@label1,要根据Sender这个变量来确定
[解决办法]
Sender: 事件的触发者. 演示如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Label1_2_3_Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Label1_2_3_Click(Sender: TObject);
var
P : Pointer;
begin
Showmessage(TLabel(Sender).Name);
//也可以这样理解:
P := Sender;
Showmessage(TLabel(P).Name);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.OnClick := Label1_2_3_Click;
Label2.OnClick := Label1_2_3_Click;
Label3.OnClick := Label1_2_3_Click;
end;
end.