Расширение класса из другого модуля

Мы можем расширить любой класс так:

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 правильный?

1 ответ

Решение

Это возможно, но мы должны добавить столбцы вручную во время выполнения:

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;
Другие вопросы по тегам