在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);
begin
with Sender as TEdit do
begin
text:=’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);
begin
if Sender is TButton then
begin
ShowMessage('Button clicked!');
// 可以通过 Sender 强制转换为 TButton 对象,然后访问 TButton 的属性和方法
TButton(Sender).Caption := 'Clicked';
end
else if Sender is TEdit then
begin
ShowMessage('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 转换为 TButton 或 TEdit,可以分别访问按钮和编辑框的属性和方法。