delphi 自定义TListBoxItem动态绑定建议

waxmsbnn  于 2023-01-08  发布在  其他
关注(0)|答案(1)|浏览(266)

这可能有点冗长,但基本上我正在寻找一些开发新项目的指针。
我正在使用RAD Studio 11,同时使用 Delphi 和C++ Builder,尽管我在C++方面有更多的经验。
以前,我从API下载数据,将JSON处理为单独的对象(主要只包含字符串),将这些对象添加到TList中,并使用TListBox中的自定义TListBoxItem对象显示它们。这可以正常工作,但处理、保存、加载、筛选和显示速度较慢(即需要为每个对象创建新的TListBoxItem并手动填充,以及从自定义文本文件格式保存/加载)。对于未来的项目,我希望使用类似TClientDataSet或TFDMemTable的东西,但没有太多的经验。
我已经可以使用从我的API下载的任意JSON填充TFDMemTable,并使用TStringGrid上的设计时LiveBindings显示它。
我的查询可以归结为如何使用TListBox显示数据,该TListBox比默认的TListBoxItem可以显示更多的信息(即超过两个字符串、多个图标/图片等),或者是否有其他更好/更容易的方法来处理这个问题。
我是否应该创建我的自定义TListBoxItem对象并以某种编程方式绑定它?使用样式手册创建自定义布局?其他一些我不知道的过程?
我对RAD Studio中的数据库对象或动态绑定没有太多的经验,但这似乎是让我的应用程序对用户来说更快更快的方法。

flvlnr44

flvlnr441#

假设您使用的是FMX框架(根据标记)。
建议不要将TListBox与LiveBindings一起用于从数据源创建大量项,因为该组件的速度太慢。TListBox主要适用于手动创建和自定义的少量项(在设计时或运行时),每个项都有自己的图像和文本。如果需要,以创建您自己的具有其他属性和元素的自定义TListBoxItem组件。
但另一方面,FMX TListView组件针对大型项目的创建和从数据源(任何数据集:TClientDataSet,TFDemTable,...),并且它具有您正在寻找的功能:它允许您在IDE设计器中轻松更改TListViewItem的概念和外观,方法是添加具有自定义位置和设置的文本和图像组件,而无需开发自己的自定义组件。您还可以将这些附加组件绑定到数据集。
下面是一些来自 Delphi 文档的有用链接,介绍如何通过LiveBindings填充TListView,以及如何自定义TListView外观:

相关问题