Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Delphi:列表视图中图形的数据存储_List_Delphi_View_Storage - Fatal编程技术网

List Delphi:列表视图中图形的数据存储

List Delphi:列表视图中图形的数据存储,list,delphi,view,storage,List,Delphi,View,Storage,我有一个文件下载程序,所以有一个列表视图,其中包含以下列:文件名、速度、文件大小、下载大小、剩余/经过的时间、完成百分比(进度条)->我需要绘制图标、文本、背景、进度条等。在列表视图中存储所有数据的有效方法是什么 例如,我画了一个文本“error”,那么背景必须是红色的。如果SameText(Item.SubItems[5],'error'),那么我可以检查一个错误并用类似这样的东西进行绘制,但是我不知道用这个方法绘制所有项目,将所有数据存储在列表视图中是否快速?列表视图是数据项线性列表的可视化

我有一个文件下载程序,所以有一个列表视图,其中包含以下列:文件名、速度、文件大小、下载大小、剩余/经过的时间、完成百分比(进度条)->我需要绘制图标、文本、背景、进度条等。在列表视图中存储所有数据的有效方法是什么


例如,我画了一个文本“error”,那么背景必须是红色的。如果SameText(Item.SubItems[5],'error'),那么我可以检查一个错误并用类似这样的东西进行绘制,但是我不知道用这个方法绘制所有项目,将所有数据存储在列表视图中是否快速?

列表视图是数据项线性列表的可视化表示。ListView本身不应用作数据容器

正确的方法是使用单独的TList,其中包含记录或对象,每个记录或对象对应于一个下载的项目。将“项”添加到ListView时,可以指定关联的用户数据。您案例中的用户数据是对记录或对象的引用

当需要绘制listview项时,可以从关联的记录或对象中获取数据


事实上,如果您有一个下载项目的列表,那么您已经有了所有需要做的事情,而谜题中缺少的部分是listview项目可以包含对用户数据的引用

那么,我应该创建自己的类(基于TList)并为每个项创建一个class对象,然后将该对象分配给数据属性吗?我只能使用列表视图来处理我的目标。但我不知道它是否有效…@maxfax TList是数据对象的容器(您可能已经有了)。您真正需要的是描述项目状态的数据对象。不,您不能仅使用listview来处理您的目标。虽然您现在可以玩个小把戏,只使用一个listview,但这是一个失败的设计,将来您将自己发现。@daemon_x即使在非虚拟所有者绘制模式下,代码也应该知道从何处获取数据,在这种情况下,数据对象是源。