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

news/2024/7/24 13:33:27 标签: 基础知识

在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 转换为 TButtonTEdit,可以分别访问按钮和编辑框的属性和方法。


http://www.niftyadmin.cn/n/5323591.html

相关文章

51-11 多模态论文串讲—VLMo 论文精读

VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts (NeurIPS 2022) VLMo 是一种多模态 Transformer 模型,从名字可以看得出来它是一种 Mixture-of-Modality-Experts (MoME),即混合多模态专家。怎么理解呢?主流 …

【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04

【AI】AI学习目录汇总 1、简介 最新的sdk-manager已经可以安装到Ubuntu22.0,也支持在 Jetson Orin Nano 上烧写Ubuntu22.04。 官网介绍:https://developer.nvidia.com/sdk-manager 2、版本介绍 JetPack版本:https://developer.nvidia.c…

centos7下搭建ldap服务器

参考: 全网最全Centos7.9搭建LDAP服务器图形界面_ldap服务器搭建-CSDN博客 LDAP服务搭建 - 简书 https://www.cnblogs.com/netsa/p/16017326.html 安装 #安装ldap服务 yum install -y openldap-servers openldap-clients openldap openldap-devel compat-openl…

安卓之内存管理,强制回收机制以及应对措施分析

文章摘要 安卓操作系统作为全球最流行的移动操作系统之一,其强大的功能和灵活性深受开发者与用户的喜爱。然而,随着应用的复杂性和用户需求的增长,应用的内存管理变得尤为重要。在这其中,安卓的强制回收机制起着至关重要的作用。本…

Elasticsearch ES实现GEO位置搜索

ES实现GEO位置搜索 Elasticsearch-7.15.2 附近查询,也叫做距离查询(geo_distance):查询到指定中心点小于某个距离值的所有文档。 创建索引 (my_geo),直接设置mapping GEO字段的创建:添加一个字段locatio…

蓝桥杯基础数据结构(java版)

引言 数据结构数据结构。所以数据结构是一个抽象的概念。其目的是为了更好的组织数据方便数据存储。下面我们来看一些简单的数据储存方式 输入和输出 这里先介绍java的输入和输出。简单引入,不过多详细介绍,等我单一写一篇的时候这里会挂上链接 简单的…

Ubuntu下AI4Green开源ELN服务的简单部署

主部署程序:AI4Green 配置参考这篇文档:AI4Green开源ELN(电子实验记录本)-CSDN博客 流量转发和负载均衡:使用Nginx 配置参考这篇文档:Nginx负载均衡-CSDN博客 SSL配置部分参考这篇文档: 设置…

C语言实现快排核心思想(双指针法)

核心代码: 这就是每一趟快排的实现代码,由上面的动图,我们能知道前后指针法的核心是玩好cur和prev这两个指针,具体的逻辑是cur找比key小的值,找到就prev,然后prev和cur的值就进行交换,但是总不能…