Расширение класса из другого модуля
Мы можем расширить любой класс так:
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;