ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【Delphi 基础知识 18】Sender:TObject 对象用法

2026/9/14 3:35:21 拓冰建站 浏览量
【Delphi 基础知识 18】Sender:TObject 对象用法

在Delphi中,Sender 是一个常见的参数,通常在事件处理程序中使用。它是一个 TObject 类型的对象,用于指示触发事件的对象。在事件处理程序中,Sender 提供了对触发事件的对象的引用,使得你可以在事件处理过程中访问和操作该对象。

Sender介绍

Sender的类型是Tobject,是Tobject的派生类。

Sender是一个TObject类型的参数,它告诉Delphi哪个控件接收这个事件并调用相应的处理过程。

例如:

procedure TForm1.Button1Click(Sender:TObject);
begin//
end;

当点击BUTTON1时,会产生一个Button1Click事件,系统会把Button1传递给Button1Click过程,Sender作为参数,此时的Sender 是Button1

Sender的用法:

当控件用 (as),格式:

1
(Sender as 控件名).控件属性:
例如:

procedure TForm1.Edit1Click(Sender: TObject);
beginwith Sender as TEdit dobegintext:=’Hello World’;end;if Sender is TButton then showmessage((Sender as TButton).Caption)
end;

对象判断(多个事件中处理同样的事情)

Procedure TForm1.Button1Click(Sender:TObject);
begin
if Sender=Button1 then 
//事件
if Sender=Button2 then
//事件
end;

使用保留字IS来 使用 Sender

procedure TForm1.ButtonClick(Sender: TObject);
beginif Sender is TButton thenbeginShowMessage('Button clicked!');// 可以通过 Sender 强制转换为 TButton 对象,然后访问 TButton 的属性和方法TButton(Sender).Caption := 'Clicked';endelse if Sender is TEdit thenbeginShowMessage('Edit box clicked!');// 可以通过 Sender 强制转换为 TEdit 对象,然后访问 TEdit 的属性和方法TEdit(Sender).Text := 'Clicked';end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin// 在这里将 ButtonClick 事件处理程序与按钮的 OnClick 事件关联Button1.OnClick := ButtonClick;// 在这里将 ButtonClick 事件处理程序与编辑框的 OnClick 事件关联Edit1.OnClick := ButtonClick;
end;

在上述代码中,ButtonClick 是一个事件处理程序,它接受一个 Sender 参数,该参数是 TObject 类型。通过检查 Sender 的类型,你可以确定是哪种类型的控件触发了事件,并相应地进行处理。

请注意,你可以通过类型转换将 Sender 转换为实际的控件类型,以便访问该类型的特定属性和方法。在上面的例子中,通过将 Sender 转换为 TButtonTEdit,可以分别访问按钮和编辑框的属性和方法。