我使用以下方式来定义和填充带有 TCalendarEdit 原始单元格的列(这里是界面部分)。让我知道是否需要公开实现。
type
TDynamicRecord = record
Field1, Field2, Field3: string;
DateSBU: TDate;
TimeSBU: TTime;
end;
TDateCell = class(TCalendarEdit)
protected
procedure SetData(const Value: TValue); override;
public
constructor Create(AOwner: TComponent); override;
end;
TDateColumn = class(TColumn)
protected
function CreateCellControl: TStyledControl; override;
public
constructor Create(AOwner: TComponent); override;
end;
代码工作正常,类型列TDateColumn
可以添加到网格中。
我问了一个问题并为其打开了一个赏金,以寻找一种填充用户定义列的技术,LiveBindings
但在赏金到期日之前我没有得到任何答案。这就是为什么我现在尝试另一种方式。我声明一个集合DynamicData: TList<TDynamicRecord>;
并从数据集中填充它。@Mike-Sutton的回答和他的博客中非常清楚地解释了这种方法。我设法做到了这一点。数据在网格及其新定义的列中正确显示。
但现在我被另一个问题困住了。我需要更新有关用户活动的数据集。我尝试了父网格的OnSetValue
andOnEditingDone
事件(根据文档,这些事件将用于数据更新),但奇怪的是它没有触发。
什么是适合更新数据集的正确事件或其他方式?