如何通过LiveBindings填充FMX TGrid中的用户定义列

时间:2015-08-27 20:08:51

标签: delphi firemonkey delphi-xe5 livebindings tgrid

我正尝试以下列方式在网格组件中创建一个包含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字段填充列。我能够建立一个Live Binding链接并填充传统类型的列,以及我可以将DateColumn添加到网格中。 我尝试通过

将此列连接到BindSourceDB
LinkGridToDataSourceBindSourceDB1.Columns.Add;
LinkGridToDataSourceBindSourceDB1.Columns.Items
[LinkGridToDataSourceBindSourceDB1.Columns.Count-1].
MemberName:='date_set_by_user';

但是这会破坏网格中的所有列并创建一个新列(我想是TColumnType)。传统上用于为用户声明的列中的单元格赋值的网格OnGetValue事件如果存在LiveBinding链接则不会触发。我认为可以手动填充列,但是如何使用Livebindings机制填充此列?

0 个答案:

没有答案