从另一个单元扩展 class

Extending class from another unit

我们可以扩展任何 class 所以:

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 Error] uHelpers.pas(136): E2010 Incompatible types:
'uHelpers.TColumn' and 'FMX.Grid.TColumn'

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

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

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;