gpt4 book ai didi

delphi - tcxGrid 使用 TList 作为数据源

转载 作者:行者123 更新时间:2023-12-03 15:53:04 37 4
gpt4 key购买 nike

我想知道是否可以将 TList 对象绑定(bind)为 cxGrid 数据源。

所以我拥有的是一个 TList 对象,其中包含我不需要保留的各种对象。我想要一种 GridView 作为“所选项目”的概述,并且所选项目是列表中的对象。

最好由 TList 中存储的对象类型来定义列。

这是否容易实现?如果可以,您能否向我概述一下这是如何完成的。我目前使用的列表框使用 tabWidth 作为一种列分隔符,但更愿意进行切换。

最佳答案

假设您有一个 TList 派生类 TMyList,它包含 TMyListItem 类的项目。然后,您将从 TcxCustomDataSource 派生。

  TTListDataSource = class(TcxCustomDataSource)
private
FTList : TMyList;
protected
function GetRecordCount: Integer; override;
function GetValue(ARecordHandle: TcxDataRecordHandle; AItemHandle: TcxDataItemHandle): Variant; override;
public
constructor Create(ATList : TMyList);
end;

实现如下:

constructor TTListDataSource.Create(ATList : TMyList);
begin
inherited Create;
FTList := ATList;
end;

function TTListDataSource.GetRecordCount: Integer;
begin
result := FTList.Count;
end;

function TTListDataSource.GetValue(ARecordHandle: TcxDataRecordHandle;
AItemHandle: TcxDataItemHandle): Variant;
var
aIndex : Integer;
aMyListItem : TMyListItem;
begin
aCurrentIndex := Integer(ARecordHandle);
if (aCurrentIndex > -1) and (aCurrentIndex < FTList.Count) then begin
aMyListItem := FTList[aCurrentIndex)] as TMyListItem;
aIndex := Integer(AItemHandle);
case aIndex of
0 : result := '';
1 : result := aMyListItem.Year;
2 : result := aMyListItem.Quarter;
end
else
result := '';
end;

你会使用你的类(class):

   FTListDataSource := TTListDataSource.Create(ATList);
ThePivotGrid.DataController.CustomDataSource := FTListDataSource;
FTListDataSource.DataChanged;

关于delphi - tcxGrid 使用 TList 作为数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970017/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com