16,748
社区成员
发帖
与我相关
我的任务
分享
if Sender is TEdit then
Showmessage(TEdit(Sender).Name);
if Sender is TButton then
Showmessage(TButton(Sender).Name);
if Sender is TImage then
Showmessage(TImage(Sender).Name);
//....
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure EdtClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
I: integer;
begin
for I := 0 to 4 do
with TEdit.Create(Self) do begin
Parent := Self;
Width := 60;
Top := 50;
Left := I * 100 + 50;
OnClick := EdtClick;
Name := Format('MyEdit%d',[I]);
Text := Name;
Visible := True;
end;
end;
procedure TForm1.EdtClick(Sender: TObject);
begin
if Sender is TEdit then
Showmessage(TEdit(Sender).Name);
end;
end.
procedure Dwincontrolclick(Sender: TObject);
begin
if Sender is TDBEdit then
Showmessage(TDBEdit(Sender).Text);
{注意Sender的应用。
当然,TDBEdit(Sender)也可以改用(Sender as TDBEdit),
但前面已经做is判断了,直接强制转换也很安全的}
{另外,如果TDBEdit不连接数据源,Text会全部为空---这与问题无关}
end;
//你用ActiveControl当然也可实现,但是走弯路了