FireMonkey ListView 绑定数据显示多个图片

Delphi 12.3安装TMS FNC UI Pack跨平台控件实战指南 跨平台开发中,UI控件方案的选型往往决定项目效率。Delphi开发者常面临VCL与FMX两套界面框架的割裂,同一需求往往需要维护两份代码。框架中立组件(FNC)通过统一接口抽象底层实现,在Windows和移动端自动映射到对应原生渲染机制,让一套UI代码覆盖多端成为可能。这种设计不仅降低学习成本,还能显著减少迁移与维护工作量。在Delphi 12.3环境下,正确安装并配置TMS FNC UI Pack v6.2.0.0,合理选用FNC Grid、ComboBox等组件,结合Library路径配置与跨平台渲染差 阅读详情

概述

采用 Delphi 的 FireMonkey 框架,可以开发运行在 WINDOWS, Android, iOS 和 MacOS 上面的代码。其中一个比较常用的界面显示控件是 TListView。

如果数据是多条,来自数据库,或者来自多个对象的对象列表(TObjectList),采用 Delphi 的数据绑定功能(LiveBindings)可以让 ListView 显示来自数据的内容。

需求:

ListView 显示的多条内容,每一条,可以有一个图片,有段文字,等等。Delphi 提供了几种固定格式。但如果在一条里面,想要显示多个图片,怎么办?而且,这些图片,不想要复制拷贝图片,而是直接使用索引指向一个 ImageList 里面的图片。

实现:

在 Delphi IDE 里面,鼠标右键点 ListView1,下拉菜单,选择设计模式,使得 ListView1 进入设计模式。这个时候选择界面上 ListView1 的设计模式下的 Item,在 IDE 右上的【Structure】窗口里面,找到对应的 Item 项目,选中,左边的属性窗口里面,就是这个 Item 的属性,属性的第一条【Appearance】,下拉选择【DynamicAppearance】,这个 Item 就可以在设计期手动增加显示用的元素了,这个时候属性里面的最后一条显示的是【+】号和【Add new】,点击它最右边的下拉箭头,选择 TImageObjectAppearance 就可以增加一个图片元素到 Item 上面。

想要增加一条文字,也同样操作,选择 TTextObjectAppearance 就可以了。

这些设计期手动增加的界面元素,可以修改它的名字。默认的名字大概是 Text1, Image1 这样的。

如果想要用代码为这个图片元素赋值,可以找到对应的 Item 然后采用以下代码:

procedure TForm594.SpeedButton1Click(Sender: TObject);
var
  LItem: TListViewItem;
begin
  LItem := ListViewl.Items[3];
  (LItem.Objects.FindDrawable('Image1') as TListItemImage).Bitmap := MyImage.Bitmap;
end;

//备注:MyImage 是一个 TImage,我事先在里面加载了图片。

如果要让某一条 Item 的图片一个 ImageList 的序号显示对应图片,以下代码:

//备注:ListView1.Images := ImageList1;

procedure TForm594.SpeedButton1Click(Sender: TObject);
var
  LItem: TListViewItem;
begin
  LItem := ListView1.Items[3];
  
  LItem.Data['Image1'] := 12; //12 是对应的图片在 ImageList1 里面的序号。
end;

如果采用 LiveBindings 的方法,设计期可视化绑定操作时,只需要把要绑定的对象的整数属性拉线到这个 Image1 元素上,它就可以显示对应的 ImageList1 里面的图片。

绑定到数据库的 DataSet 上,道理相同。

如何将一个对象列表绑定到 ListView 上面,请本博客的看上一篇文章。

开源FireMonkey精品控件集-Modern ListView for Delphi Rio ModernListView (Berlin, Tokyo [with fix], Rio) 很好的Delphi Firemonkey控件,可用作Android、iOS、MacOS、Windows开发,比Delphi自带的listview更好用、功能更强大! ListView1.SetColorItemSelected(TAlphaColorRec.Orangered); ListView1.SetColorItemFill(TAlphaColorRec.Whitesmoke); ListView1.SetColorItemFillAlt(TAlphaColorRec.Lightgrey); ListView1.SetColorBackground(TAlphaColorRec.Whitesmoke); ListView1.SetColorItemSeparator(TAlphaColorRec.Red); ListView1.SetColorText(TAlphaColorRec.Darkmagenta); ListView1.SetColorTextSelected(TAlphaColorRec.Blueviolet); ListView1.SetColorTextDetail(TAlphaColorRec.Darksalmon); ListView1.SetColorHeader(TAlphaColorRec.Crimson); ListView1.SetColorTextHeader(TAlphaColorRec.Whitesmoke); ListView1.SetColorTextHeaderShadow(TAlphaColorRec.grey); ListView1.SetColorPullRefresh(TAlphaColorRec.Lime); ListView1.SetColorPullRefreshIndicator(TAlphaColorRec.Limegreen); ListView1.SetColorStretchGlow(TAlphaColorRec.Limegreen); Style for ListView Columns Mode ListView1.ShowScrollBar - hide/show scrollbar ListView1.ItemsClearTrue - correct delete items ListView1.OffsetTop - indent of the first element ListView1.OffsetBottom - indent of the last element ListView1.getFirstVisibleItemIndex - first visible ItemIndex ListView1.getVisibleCount - amount of visible items ListView1.getLastVisibleItemindex - first visible ItemIndex + amount of visible items ListView1.SeparatorLeftOffset - indent for separator line ListView1.SeparatorRightOffset - indent for separator line ListView1.EnableTouchAnimation - enable/disable touch animation 立即下载

相关推荐

listview加载多幅图片

listview加载多幅图片,附带存储,注意里面的imagelist,可以根据需要写imagelist.Images.clear();

在Firemonkey中实现ListView

介绍 (Introduction) 如果您像我发现没有TListview时那样对FireMonkey感到沮丧,请举手。 我在几乎所有已编写的应用程序中都使用了TListView,并且我not going to compromise by resorting to TStringGrid. By the 4th update to Delphi XE2 an...

cunchi8090的博客 999

fmx android-imagelist 获取图片

delphi fmx android-imagelist 获取图片

Delphi 开发者,显示图片请忘掉VCL中的 TImage 吧

本文详细介绍了Delphi 11 对于高分辨率显示的支持,详细介绍了使用的控件、方法、步骤。这样你开发的程序将不会在高分辨率下图标显示变小。无论什么分辨率,始终保持一致的UI.

sensor_WU 博客 3252

光模块组成

时钟恢复电路(Clock Data Recovery,简称CDR)是光模块中的关键组成部分,CDR的作用主要是从接收到的信号中提取出数据序列,并且恢复出与数据序列相对应的时钟时序信号,从而还原接收到的具体信息。因为光信号传输至一定距离的时候,通常是长距离传输,其波形会出现一定程度的失真,接收端接收到的信号是一个个长短不一的脉冲信号,这个时候在接收端,我们就无法得到我们需要的数据。所以,这个时候就需要有信号的再生,信号的再生功能为再放大、再整形和再定时,其中的再定时指的就是CDR时钟数据恢复。

han_better的博客 5721

STDP实战:用PyTorch从零搭建脉冲神经网络(附完整代码)

本文提供了基于PyTorch从零搭建脉冲神经网络的实战教程,重点讲解了STDP学习规则的原理与工程实现。通过构建LIF神经元模型和向量化STDP层,并结合泊松编码,详细演示了如何构建一个能够进行无监督特征学习的混合网络架构,为探索神经形态计算和低功耗实时学习方案提供了完整代码与实践指南。

weixin_29056145的博客 265

FireMonkey TListView的用法二:ItemAppearance为客制化外观Custom

FireMonkey TListView的用法二:ItemAppearance为客制化外观Custom 本文谈谈TListView当其ListView.ItemAppearance.ItemAppearance:=Custom;时的用法: 注意,Custom外观,可以针对Footer,Header,Item,ItemEdit四个部分的样式,而DynamicAppearance只能对Item...

pulledup的博客 1886

绕开华为通道,获取解锁码解锁BootLoader

刷机有风险,操作需谨慎,如果因为各种因素导致手机变砖无法开机,本教程概不负责,望悉知 前言 这篇文章的大多内容是根据我自己找的一篇文章《绕开华为通道,获取解锁码解锁BootLoader》来编写的,里面的大部分内容是文章的原内容。下面的都是我参考文章中做了一些小部分的修改,增加了我华为P8手机的一些操作,下面开始讲述我的解锁过程。 因为华为官方在2018年的七八月份吧,关闭了解锁码的申请通道,这...

Martin.Mu `s Special Column 5万+

FireMonkey ListView 设计期添加按钮及其 OnClick 事件

FireMonkey 的 ListView 在设计期可以定制一个 Item 上有多个 TEXT,IMAGE 和 Button。 如何做,本博客前面有文章讲到。请见这里:FireMonkey ListView 绑定数据显示多个图片_pcplayer的博客-优快云博客 那么,如果添加的是一个按钮,如何知道用户点了这个按钮?在设计期添加的按钮,其属性面板上,只有 Property 而没有 Event,没有 OnClick 可以选择。 看了半天 ListView 的源代码没找到办法。上网一搜,有了办法:

pcplayer的博客 859

MATLAB应用实战系列(四十三)-基于MATLAB的光伏并网系统仿真设计

在Matlab中建立光伏电站接入系统模型,包括光伏发电逆变器及负荷模型等,仿真分析接入点处的电能质量,实现高品质并网运行。 壹 构建太阳能电池模型。 初始化参数如下图所示。 贰 构建MPPT控制模型。 具体封装如下所示: 通过PWM算法实现DC-DC稳步输出最大点。 叁 三、构建直流短距离输电线路。 仿真模型如下图: 通过电容来均衡线路电压,使得线路电压保持可靠性。 肆 通过逆变器变换,使得直流线路转换成...

wenyusuran的专栏 3169

玩转Docker小游戏项目系列:Docker部署吃豆人经典小游戏

玩转Docker小游戏项目系列:Docker部署吃豆人经典小游戏

jks212454的博客 733

delphi Firemonkey ListView 使用参考

delphi Firemonkey ListView 使用参考   Tokyo版本 http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Customizing_FireMonkey_ListView_Appearance  http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Mobile_Tut...

weixin_33937778的博客 966

YOLOV5 自动刷图脚本实战(十五)之如何找到正确的门

DXF是一个2D游戏,我们所看到的人物移动,其实是后面的背景在移动,我们所看到的画面,不过是一个完整背景中的一个镜头视角而已想要正确找到门的坐标,我们需要对不同的地图中的每个房间做一些配置信息。

qq_38892949的博客 2811

LCP从4秒降到2秒:真正决定最大内容绘制的不是首屏Banner

网页性能优化中,LCP(Largest Contentful Paint)是衡量用户感知加载速度的核心指标,它统计的是视口内实际呈现面积最大的可见内容绘制时间,而非开发者主观认定的首屏主角。很多团队盲目压缩首屏Banner图却发现LCP毫无改善,原因在于LCP的判定基于元素面积、可见性和候选类型,真正的LCP元素往往是全宽卡片、CSS背景图或文本块。理解LCP的原理后,优化方向应转向让真正的LCP元素更早被浏览器发现和加载,例如用显式img替代CSS背景图、合理使用fetchpriority、字体预加载与C

weixin_34209851的博客 434

基于知识图谱的档案智慧问答系统:构建智能化档案管理与知识服务新范式

基于知识图谱的档案智慧问答系统是档案管理领域的一次重要创新,它通过将档案数据转化为结构化的知识图谱,并结合自然语言处理和智能问答技术,实现了档案信息的智能化管理与服务。该系统不仅能够提升档案管理的效率,还能为用户提供更全面、更便捷的知识服务,具有广泛的应用前景和深远的社会意义。未来,随着技术的不断进步和应用场景的不断扩展,基于知识图谱的档案智慧问答系统将在更多领域发挥其价值,为档案管理领域的智能化转型提供强有力的支持。

qq_62634009的博客 1577

华为OD机试 新系统真题 【最小代价完成论文评审】

华为OD机试 新系统真题【最小代价完成论文评审】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【最小代价完成论文评审】多语言题解。

qq_45776114的博客 442

xe5 android sample 中的 SimpleList 是怎样绑定的 [转]

C:\Users\Public\Documents\RAD Studio\12.0\Samples\FireMonkeyMobile 例子中的绑定方式如下图: 1、拖拽一个listview到界面上,然后用绑定向导 2、选择listview 3、选择tprototypebindsource 4、点击增加 5、选择前九个类型 6、在绑定设计界面将 colo...

weixin_33738578的博客 88

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

firemonkey ListView DynamicAppearance

Go Up toFireMonkey Application Design Contents [hide] 1Customizing the List View Appearance Properties 1.1Footer properties 1.2Header properties 1.3List item properties 1.4Edi...

weixin_30293135的博客 450

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Delphi通过TListView 动态加载图片,以阵列方式呈现

5、{*=========================================================================== 报告界面选择体位图 @author wuzguo @version 2014/04/25 NJ70C @todo @co...

1198

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

delphi显示jpg、png、gif图片

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2...

huzuyuan2017的博客 1389

FireMonkey TListView的用法一:ItemAppearance为动态外观DynamicAppearance

FireMonkey TListView的用法一:ItemAppearance为动态外观DynamicAppearance 本文谈谈TListView当其ListView.ItemAppearance.ItemAppearance:=DynamicAppearance;时的用法: 注意,Custom外观,可以针对Footer,Header,Item,ItemEdit四个部分的样式,而Dynam...

pulledup的博客 2766

FireMonkey TListView 的 Item 在设计期可视化编辑

Delphi 10.2 为FireMonkey TListView 增加了新功能;在设计期,可视化地为一个 Item 增加新的元素(Object). 详细方法参见:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Customizing_FireMonkey_ListView_Appearance 另外,在你土鳖上,也有可视化编辑的操作视频。不

pcplayer的博客 4627
上一篇: FireMonkey TListView 使用 LiveBindings 绑定 TObjectList
下一篇: 再谈 Delphi 的 LiveBindings 绑定界面元素和对象
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值