FireMonkey 的 ListView 在设计期可以定制一个 Item 上有多个 TEXT,IMAGE 和 Button。

如何做,本博客前面有文章讲到。请见这里:FireMonkey ListView 绑定数据显示多个图片_pcplayer的博客-CSDN博客

那么,如果添加的是一个按钮,如何知道用户点了这个按钮?在设计期添加的按钮,其属性面板上,只有 Property 而没有 Event,没有 OnClick 可以选择。

看了半天 ListView 的源代码没找到办法。上网一搜,有了办法:

listview - Working with buttons in a TListView - Stack Overflow

我自己的测试代码

在设计期,给一个 Item 添加两个按钮。其默认的名字分别是:TextButton2 和 TextButton3。

在 ListView1 的属性面板上,切换到 Events 事件页,找到 OnButtonClick,双击,IDE 生成代码框架。代码如下:

procedure TForm1.Button1Click(Sender: TObject);
varAItem: TListViewItem;
beginAItem := ListView1.Items.Add;
end;procedure TForm1.ListView1ButtonClick(const Sender: TObject;const AItem: TListItem; const AObject: TListItemSimpleControl);
begin//以下代码,测试成功。ShowMessage(AObject.Name + ' _ ' + AItem.Index.ToString + ' - ' + (AObject as TListItemTextButton).Text);
end;

上面代码的第一个 Button1Click 是为了测试增加的一个按钮,按一次在 ListView1 里面增加一个 Item。

第二个方法,就是我们要的。实际测试结果,完全符合预期。

实际测试结果,点了哪一条 Item 上面的按钮,显示出来的 AItem.Index 是正确的。也能够正确显示出该按钮的名字(TextButton2 或者 TextButton3),也能够正确显示按钮上的 Text.

上面的代码,对 AObject 进行了类型转换,转换为 TListItemTextButton,否则无法获取到它的 Text 属性。类型转换能够成功,说明这个设计期动态增加的按钮的类型,就是 TListItemTextButton,而不是设计期的属性面板上显示的 TTextButtonObjectAppeaerance.

结论:

如果想知道用户点了哪个按钮,并相应给出动作,这里不是给该按钮找一个 OnClick 而是直接使用 ListView 的 OnButtonClick 事件。在事件里面判断用户点了哪个按钮。

FireMonkey ListView 设计期添加按钮及其 OnClick 事件相关推荐

  1. odoo中tree视图上面添加按钮并绑定事件

    原文:https://blog.csdn.net/qq_42832858/article/details/86735745 1.通过qweb模板给相应模块上的tree视图上添加上⾃定义的按钮. 在's ...

  2. java 按钮 事件_Java 添加按钮点击事件

    展开全部 xml文件代码如下: android:id="@+id/button1" android:layout_width="wrap_content" an ...

  3. java添加按钮点击事件_如何为odoo 10中的按钮点击事件添加一个java脚本处理程序?...

    我想使用java脚本为header中的按钮创建一个处理程序.下面我视图模型给出:如何为odoo 10中的按钮点击事件添加一个java脚本处理程序? inherit_id="web.asset ...

  4. android eclipse 按钮事件,android eclipse按钮的OnClick事件 - java

    我有2个文件:main_activity.xml和home.xml.我在main_activity.xml中做了一个按钮 这是代码片段: xmlns:tools="http://schema ...

  5. js按钮触发网页提醒_js触发asp.net的Button的Onclick事件应用

    在asp.net引入事件驱动之后,在一个页面上很容易解决多个按钮触发不同事件的问题,避免了在asp中需要多个form或者通过js脚本来控制的麻烦. asp.net带来便利的同时,也带来一个问题.在实际 ...

  6. Iphone NSMutableArray,NSMutableDictionary AND 动态添加按钮

    一.NSMutableDictionary NSMutableDictionary  * tags: 1.NSMutableDictionary 添加内容: [tags setValue:xxx fo ...

  7. js触发asp.net的Button的Onclick事件

    在asp.net引入事件驱动之后,在一个页面上很容易解决多个按钮触发不同事件的问题,避免了在asp中需要多个form或者通过js脚本来控制 的麻烦. asp.net带来便利的同时,也带来一个问题.在实 ...

  8. 基于列表框的简单选课窗体开发。编写Windows应用程序,设计实现一个简单选课系统,要求:(1)点击“添加”按钮,将把在第一文本框中的输入的课程名称添加到左边的列表框中,且所添加的课程不能为空,不能

    基于列表框的简单选课窗体开发.编写Windows应用程序,设计实现一个简单选课系统,要求: (1)点击"添加"按钮,将把在第一文本框中的输入的课程名称添加到左边的列表框中,且所添加 ...

  9. listView无需适配器添加数据(写demo快速开发)entries属性的特殊用法

    先看下简单的布局代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  10. Android Listview中Button按钮点击事件冲突解决办法

    今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...

最新文章

  1. va_list和va_start和((A*)0)-a
  2. Java面试题库,mysql远程访问权限设置
  3. 20162328蔡文琛 四则运算第一周
  4. 一文看懂Python(七)-----断言
  5. 三次握手,四次挥手的过程??为什么三握??
  6. 还搞不懂STL的type_traits?从源码来带你一起分析
  7. java实现qq抢红包_Java实现抢红包功用
  8. leetcode770. Basic Calculator IV
  9. 二十年后我发明了保姆机器人作文_我想发明保姆机器人作文500字
  10. Atitit.404错误解决标准流程and url汉字中文路径404错误resin4 resin chinese char path 404 err解决
  11. 共轭梯度法的简单直观理解
  12. DB2 SQLCODE常见错误代码
  13. 举例Halcon,简述数字图像处理之Blob分析和纹理分析texture_laws
  14. XP突然弹出“automation 服务器不能创建对象”的有效解决方法--win10专业版
  15. 微信扫描二维码实现下载app文件
  16. SPSS创建数据文件
  17. 人工神经网络的基本原理及其应用
  18. 基于Python的GUI图形用户界面编程
  19. 内网架设FTP服务器(serv-u)
  20. Unity手机震动,Unity -> android 震动

热门文章

  1. LaTex的图文安装--TexLife+SumtraPDF+WinEdt
  2. 前端开发需要学习的技术:
  3. 大学计算机ps教程 pdf,Photoshop中文教程.pdf
  4. 【Django】实现文件下载
  5. MATLAB车道识别与交通标志识别
  6. [知了堂学习笔记]_Ajax之解析Json
  7. 各种浏览器下的页面元素xpath获取方法
  8. 干货,下载网易云课堂和B站的视频
  9. Hive调优全方位指南(推荐收藏)
  10. 数据库课设之学生信息管理系统