zoukankan      html  css  js  c++  java
  • Firemonkey ListView 点击事件

    Firemonkey ListView 的点击事件一直让人摸不着头绪(各平台触发规则不太相同),因为它提供了点击相关的事件就有如下:

    • OnChange:改变项目触发。
    • OnClick:点击触发。
    • OnItemClick:点击项目触发
      • Windows 平台:按下立即触发,放开后接着触发 OnItemClickEx。
      • Android 平台:按下立即触发,不用放开接着 OnItemClickEx(按钮 Button 触发顺序与 Widnows 相同,要放开才会触发 OnItemClickEx)。
    • 下列以这二个事件为例:
      • OnItemClickEx:项目内单项触发。
      • OnButtonClick:按钮事件。

    下例将 Item.Apperance 设定为 Custom。

    可获取每一个单项的事件触发:

    参考代码:

    procedure TForm1.ListView1ItemClickEx(const Sender: TObject; ItemIndex: Integer;
      const [Ref] LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
    begin
         if ItemObject is TListItemText       then Label1.Text := 'OnItemClickEx_Text_'      + ItemIndex.ToString else
         if ItemObject is TListItemImage      then Label1.Text := 'OnItemClickEx_Image_'     + ItemIndex.ToString else
         if ItemObject is TListItemAccessory  then Label1.Text := 'OnItemClickEx_Accessory_' + ItemIndex.ToString;
    end;
    
    procedure TForm1.ListView1ButtonClick(const Sender: TObject;
      const AItem: TListItem; const AObject: TListItemSimpleControl);
    begin
         if AObject is TListItemGlyphButton then Label1.Text := 'OnButtonClick_GlyphButton_' + AItem.Index.ToString else
         if AObject is TListItemTextButton  then Label1.Text := 'OnButtonClick_TextButton_'  + AItem.Index.ToString;
    end;

    有一些问题存在:

    1. 点击 Accessory 后是触发 Text 而非 Accessory,这部份我有改动到源码,使它能正常辨别是点击到那一个(改动源码并不建议,有兴趣自行研究)。
  • 相关阅读:
    将项目中某些常用设置做成配置项
    资产管理平台去除zabbix字样
    navicat远程连接报错
    Excel数据导入MySql数据库
    Ubuntu16.04使用命令行安装jdk1.8
    zabbix4.0配置短信报警
    整洁代码系列(2)
    找回篮球场上的快乐
    努力做人、努力学习、努力让身边的人过得更好 --2016年总结、2017年规划
    整洁代码系列(1)
  • 原文地址:https://www.cnblogs.com/onechen/p/4790503.html
Copyright © 2011-2022 走看看