-2

我们可以扩展任何类:

TColumn = class(FMX.Grid.TColumn)
private
  FId: Integer;
public 
  property Id: Integer read FId write FId;
end;

这在我们自己的单元中可以正常工作,但是如果我们尝试这个(Grid: TGrid在表格上):

procedure ChangeId;
var
  Col: TColumn;
begin
  Col := Grid.Columns[0];
  Col.Id := 0;
end;

我们得到错误:

[dcc32 错误] uHelpers.pas(136):E2010 不兼容的类型:
“uHelpers.TColumn”和“FMX.Grid.TColumn”

有什么方法可以扩展FMX.Grid.TColumn课程以使程序ChangeId正确吗?

4

1 回答 1

0

这是可能的,但我们应该在运行时手动添加列:

TIdColumn = class(FMX.Grid.TColumn)
private
  FId: Integer;
public 
  property Id: Integer read FId write FId;
end;

Grid.AddObject(TIdColumn.Create(Grid));

procedure ChangeId;
var
  Col: TIdColumn;
begin
  Col := Grid.Columns[0] as TIdColumn;
  Col.Id := 0;
end;
于 2017-04-17T19:32:17.560 回答