【发布时间】:2017-04-17 07:16:27
【问题描述】:
我们可以扩展任何类:
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 正确吗?
【问题讨论】:
-
您的问题是范围界定问题之一。既然已经有 FMX.Grid.TColumn,为什么还要调用你的类 TColumn?你期望编译器能分辨出来吗?称你为 TMyColumn 类。现在 Grid 在什么时候获得了 TMyColumns 的集合?它从来没有。这是一个完全不同的问题!
-
我了解这个问题以及我对这个问题的疑问。这完全不可能?
-
有可能。只是以不同的方式来做。 Add a TCombobox Column to a Firemonkey TGrid
-
不,您的问题不是范围界定问题。您的问题是网格不会创建列类的实例。
-
@DavidHeffernan 是对的。列对象是网格中的
FMX.Grid.TColumn实例。您不能将它们分配给您的 TColumn 类型并使用其 id 属性,因为它不存在。
标签: delphi helper class-helpers