博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FMX TListView 动态添加Item和Item里面的Object
阅读量:5934 次
发布时间:2019-06-19

本文共 2517 字,大约阅读时间需要 8 分钟。

FMX TListView比较复杂,功能也比较强大。如果是比较简单的列表,可以用TListBox代替,运用比较简单。FMX TListView的设计时运用和一般的控件也不一样,不是严格的"可视即可得",这和其它的控件使用方式差别比较大,比如,如果没有和Living binding控件配合,设计时是不能直接创建Item的,设计时只是设计了Item的外观样式,Item是运行时添加的(Demo里的例子基本是和Living Binding配合的,所以有设计时的Item)。而且,Custom的样式也不是设计时能设计的,是在运行时通过代码产生的。总之,比较复杂。。。

设计时添加各种Object的样式,见下图:

在Structure里选择"item",然后点属性里"+"属性,下拉框里显示了系统自带的各种样式。

另外,看似一个简单的运用,就是运行时添加Item和Item里的各种Object,FMX TListView 运行时添加Item比较简单,listView1.Item.Add; 就添加了一个Item。但是,发现无法顺利运行时添加Item里的各种Object(比如自带的TListItemText, TListItemImage, 等等)....

然后就在网上找,一时也没找到,看DEMO,也没有相关的代码,参考控件的Editor.pas,也看不出来什么。。。一时困境。估计对TListView的工作机制没理解。几天,在网上偶尔看到了一篇老外的贴子,正是说如何运行时添加Item的OBJECT的,试了试,结果出来了,就记录下来了:帖子见: 

试过这个方法,对TListView的工作方式稍微有了点理解,还真是不一般的方法。但是还有好多不了解的地方,慢慢来。

测试代码如下:

1 unit Unit1; 2  3 interface 4  5 uses 6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ListView.Types, FMX.ListView.Appearances, 8   FMX.ListView.Adapters.Base, FMX.ListView, FMX.Controls.Presentation, FMX.StdCtrls; 9 10 type11   TForm1 = class(TForm)12     lv1: TListView;13     btn1: TButton;14     procedure btn1Click(Sender: TObject);15     procedure lv1UpdateObjects(const Sender: TObject; const AItem: TListViewItem);16   private17     {
Private declarations }18 public19 {
Public declarations }20 end;21 22 var23 Form1: TForm1;24 25 implementation26 27 {
$R *.fmx}28 29 procedure TForm1.btn1Click(Sender: TObject);30 var31 item: TListViewItem;32 text: TListItemText;33 begin34 item := lv1.Items.Add;35 //这里是实际显示出来.....36 text := Item.Objects.FindObject('a1111') as TListItemText;37 if Assigned(text) then38 text.Text := '1234567';39 item := lv1.Items.Add;40 end;41 42 //这里的代码相当与设计时的43 procedure TForm1.lv1UpdateObjects(const Sender: TObject; const AItem: TListViewItem);44 var45 text: TListItemText;46 image: TListItemImage;47 begin48 //item := lv1.Items.Add;49 text := AItem.Objects.FindObject('a1111') as TListItemText;50 if text = nil then51 begin52 text := TListItemText.Create(AItem);53 text.Name := 'a1111';54 text.Align := TListItemAlign.Center;55 text.Height := AItem.Height-2;56 text.Width := 200;57 text.Text := '';58 text.Data := nil;59 text.Visible := True;60 text.PlaceOffset.X := 2;61 text.PlaceOffset.Y := 2;62 text.TextColor := TAlphaColors.Red;63 end;64 65 end;66 67 end.
View Code

 

好奇怪的方法。。。。

 

转载于:https://www.cnblogs.com/jankerxp/p/10975297.html

你可能感兴趣的文章
PHP操作Mysql
查看>>
换零钞——第九届蓝桥杯C语言B组(国赛)第一题
查看>>
linux远程传输文件至windows
查看>>
(转)让文字讲好banner的故事
查看>>
java学习之租车系统
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
最优二叉搜索树 java实现 学习 备忘
查看>>
Struts1文件上传、单文件、多文件上传【Struts1】
查看>>
QQ首页的问题
查看>>
GMIT’s a fully functioning Wordpress website
查看>>
POJ 3994:Probability One
查看>>
位运算
查看>>
一个列表产生多少个含有两个元素的列表
查看>>
poj3468(线段树)
查看>>
hdu2151(递推dp)
查看>>
iOS 之 UITableView
查看>>
繁体简体转化_langconv.py
查看>>
boosting_bagging
查看>>
vue+vue-cli+vuex+vrouter 开发学习和总结
查看>>
PMI Link
查看>>