一步一步学习使用LiveBindings(3) 绑定到ListView,用TProtoTypeBindSource创建样例数据

FireMonkey(简称FMX)是一个跨平台的应用程序设计框架,这个框架其实不再将开发的重心放在PC端,毕竟Windows PC上还有强大的VCL框架。FMX重心还是在移动端多一些,而移动端的小屏设备使用Grid的场景很少,屏小数据多,体验应该并不佳,使用ListView这种列表式控件就非常常见。

为了测试ListView的外观,常常需要测试数据,好在LiveBidings有一个原型绑定源,可以轻松拿捏测试数据。

跟着下面的步骤开始吧,先开启你的Delphi 12.3。

1. 单击主菜单中的 File > New > Multi-Device Application - Delphi > Blank Application ,创建一个新的多设备应用程序。

建议立即单击工具栏上的Save All按钮,将单元文件保存为uMainForm.pas,将项目保存为LiveBinding_BindToListView.dproj。

你的项目结构应该像这样:



2. 从工具面板,拖一个TListView控件,一个TPrototypeBindSource控件到主窗口。

在主窗口上选中ListView1控件,然后在属性面板上指定其Align属性为Client,设置其SearchVisible属性为True,窗体看起来像下面这样:

除了上述设置,还需设置ListView1控件的ItemAppearance.ItemAppearance属性为ImageListItemRightButton,这样ListView控件将会呈现为一个图片,右侧一个按钮,中间是ListView项的文本。

注意: 当设置不同的ItemAppearance属性后,ListView的可绑定的属性也会相应的发生一些变化。

2. 右键单击主窗口的PrototypeBindSource1控件,选择“Fields Editor”菜单项,这将打开一个字段编辑窗口,在这里可以像设置一个内存表一样设置字段。

在Fields Editor的工具栏面板上单击“Add”按钮,将弹出一个包含数据的字段列表,按住Ctrl键,分别选择ColorNames,Bitmaps和Currency字段数据,单击“OK”按钮完成原型数据的添加。

3. 准备好了控件和数据,接下来在任意位置右击鼠标,从弹出的菜单中选择“Bind Visually”菜单项,进入到LiveBindings Designer设计器。

  • 从PrototypeBindSource1中选择ColorsName1到ListView1的Item.Text。
  • 从PrototypeBindSource1中选择Bitmap1到ListView1的Item.Bitmap。
  • 从PrototypeBindSource1中选择CurrencyField1到ListView1的Item.ButtonText。

做完这几步,在主窗体上,毫不意外一个TBindingList控件被添加来了。ListView已经可以预览到测试数据,并且可以看到ListView的外观呈现效果。

4. 最后给ListView1添加一个单击事件,在主窗体中选中ListView1控件,然后进入到属性面板,切换到Events标签页,找到OnButtonClick右侧的文本框双击一下,Delphi会切换到代码视图,一个单击事件的骨架代码已经生成好。

注意:在生成代码骨架后,建议在代码中添加一行注释,否则在下一次保存时,这个骨架代码会被IDE给收回去。

请在代码编辑器中输入如下的代码:

procedure TForm1.ListView1ButtonClick(const Sender: TObject;
const AItem: TListItem; const AObject: TListItemSimpleControl);
begin
const LItem = AItem as TListViewItem; //得到当前的单击项。
//显示当前选中的Item信息。
ShowMessage(LItem.Text + ' ' + LItem.ButtonText + ' 被单击了.');
end;

5.现在就完成了所有的工作,万事皆备,只欠一Run了,按下F9,或者是主菜单的“Run > Run”菜单项,一个漂亮的列表视图出现了,它包含一个搜索框,单击右边的按钮还能弹出详细信息,可以满足很多应用上的需求了。

在这一节中,学到了TListView和TProtoTypeBindingSource控件的用法,这为下一步继续深入LiveBindings打下了坚实的基础。

一步一步学习使用LiveBindings(3) 绑定到ListView,用TProtoTypeBindSource创建样例数据的更多相关文章

  1. 《MySQL必知必会》学习笔记——附录B 样例表

    附录B 样例表 本附录简要描述本书中所用的表及它们的用途. 编写SQL语句需要对基础数据库的设计有良好的理解.不知道什么信息存储在什么表中,表之间如何关联以及行内数据如何分解,是不可能编写出高效的SQ ...

  2. 12.Linux软件安装 (一步一步学习大数据系列之 Linux)

    1.如何上传安装包到服务器 有三种方式: 1.1使用图形化工具,如: filezilla 如何使用FileZilla上传和下载文件 1.2使用 sftp 工具: 在 windows下使用CRT 软件 ...

  3. (转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助.原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csd ...

  4. (转) 一步一步学习ASP.NET 5 (二)- 通过命令行和sublime创建项目

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 注:昨天转发之后很多朋友指出了vNext的命名问题,原文作者已经做出了修改,后面的标题都适用 asp.net 5这个名称. 编者语 : 昨天发了第 ...

  5. 一步一步学习SignalR进行实时通信_1_简单介绍

    一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...

  6. 一步一步学习SignalR进行实时通信_8_案例2

    原文:一步一步学习SignalR进行实时通信_8_案例2 一步一步学习SignalR进行实时通信\_8_案例2 SignalR 一步一步学习SignalR进行实时通信_8_案例2 前言 配置Hub 建 ...

  7. 一步一步学习SignalR进行实时通信_9_托管在非Web应用程序

    原文:一步一步学习SignalR进行实时通信_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信\_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信_9_托管在非We ...

  8. 一步一步学习SignalR进行实时通信_7_非代理

    原文:一步一步学习SignalR进行实时通信_7_非代理 一步一步学习SignalR进行实时通信\_7_非代理 SignalR 一步一步学习SignalR进行实时通信_7_非代理 前言 代理与非代理 ...

  9. 一步一步学习SignalR进行实时通信_5_Hub

    原文:一步一步学习SignalR进行实时通信_5_Hub 一步一步学习SignalR进行实时通信\_5_Hub SignalR 一步一步学习SignalR进行实时通信_5_Hub 前言 Hub命名规则 ...

  10. 一步一步学习SignalR进行实时通信_6_案例

    原文:一步一步学习SignalR进行实时通信_6_案例 一步一步学习SignalR进行实时通信\_6_案例1 一步一步学习SignalR进行实时通信_6_案例1 前言 类的定义 各块功能 后台 上线 ...

随机推荐

  1. STL vector容器存储键值对

    在阅读tvm源码时,发现了一个挺有意思的代码: std::vector<std::pair<std::string, ObjectRef>> update; vector容器里 ...

  2. ASP.NET Core相关下载资源汇总

    1.Net.6的Host Bundle的下载地址(IIS)服务配套组件: https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0 2.docker ...

  3. 解决Navicat导出Excel数字为科学计数法问题

    问题分析 需求是使用Navicat导出数据到Excel中,但是,发现导出的数据中,数字长度如果超过12位,自动的按照科学计数法显示数字.我们需要全部显示输入的内容,而不能使用科学计数法,如输入的身份证 ...

  4. mega板和openmv通信例程

    mega板和openmv通信例程 openmv import time from pyb import UART uart = UART(3,9600) # 注意波特率 while(True): ua ...

  5. Django2.2版本迁移数据库报错问题解决方案

    在迁移的时候系统会抛出异常,提示我们安装mysqlclient. 这时候我们可以使用pymysql进行伪装,在项目的__init__.py中添加如下代码即可.(如果是2.2以前的版本) import ...

  6. WinForms中实现Adobe PDF Reader实现旋转PDF功能

    实现效果: 问题点:Adobe PDF Reader中并没有可以直接旋转的方法 LoadFile 加载文件,文件URL地址 GotoFirstPage 到第一页 GotoLastPage 到最后一页 ...

  7. shell 使用awk 分析nginx日志取出400 的请求写入文件,然后php读取文件处理数据

    使用awk分析昨日 的nginx日志,将服务端未处理成功的400 请求,重新请求,将数据补进去 下面是代码,如果有类似问题的话,可以参考一下 #!/bin/bash ## 1. shell 获取日期获 ...

  8. BAPI_OUTB_DELIVERY_CREATE_SLS、BAPI_OUTB_DELIVERY_CONFIRM_DEC 创建交货单,交货单过账

    FUNCTION zsd_dn_create1. *"-------------------------------------------------------------------- ...

  9. SAP-EWM/ECC 系统后台配置(引用,备份)

    原文:https://blog.csdn.net/Daniel_kong198577/article/details/19615153 Unit1 – Basic Settings (default) ...

  10. 故障处理:2分钟处理Oracle RAC中OCR磁盘组丢失磁盘的故障

    我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效 ...