我正在尝试通过TCalendarEdit
以下方式在网格组件内创建一个包含列。
type
TDatecell = class(TCalendarEdit)
end;
TDateColumn = class(TColumn)
private
function CreateCellControl: TStyledControl; override;
public
constructor Create(AOwner: TComponent); override;
end;
...
constructor TDateColumn.Create(AOwner: TComponent);
begin
inherited;
end;
function TDateColumn.CreateCellControl: TStyledControl;
begin
Result := TDatecell.Create(Self);
end;
它工作正常。然后,我从日期类型的 FDQuery 字段填充列。我能够建立一个实时绑定链接并填充传统类型的列,并且我可以将我的 DateColumn 添加到网格中。我尝试通过以下方式将此列连接到 BindSourceDB
LinkGridToDataSourceBindSourceDB1.Columns.Add;
LinkGridToDataSourceBindSourceDB1.Columns.Items
[LinkGridToDataSourceBindSourceDB1.Columns.Count-1].
MemberName:='date_set_by_user';
但这会破坏网格中的所有列并创建一个新列(我想是 TColumnType)。如果存在 LiveBinding 链接,则传统上用于为用户声明的列中的单元格分配值的网格的事件 OnGetValue 不会触发。我认为可以手动填充列,但是如何使用 Livebindings 机制填充此列?