如何让 IDE 知道我使用了祖先变量?
How to let the IDE know that I use ancestor variable?
为简单起见,我只有2个类 TParent
和TChild
.
TParent = class
protected
FValue : Integer;
end;
TChild = class(TParent)
public
property Value : Integer read FValue;
end;
如果 TChild
属性 Value
使用另一个单元中的 TParent
变量 FValue
,则 IDE 总是创建新的使用自动完成时的变量,这在添加新属性或方法时会出现问题,并可能导致不必要的错误。
TChild = class(TParent)
private
FValue: Integer;
public
property Value : Integer read FValue;
end;
但是,如果 TParent
和 TChild
在同一单元中,则一切正常。如果我无法将两个 类 移动到同一个单元,有什么办法可以防止这种情况发生?此外,我无法访问包含 TParent
的单元。在这种情况下,TChild
是从 TCustomGrid
.
派生的组件
这只是继承的本质,更具体地说,是字段可见性。简单的解决方案是引入一个具有更高可见性的 属性 getter 函数。例如...
TParent = class
protected
FValue : Integer;
public
function GetValue: Integer;
end;
TChild = class(TParent)
public
property Value : Integer read GetValue;
end;
...
function TParent.GetValue: Integer;
begin
Result:= FValue;
end;
代码完成只是遵循这些相同的规则 - 它不具有父字段的可见性,因此它会生成一个新字段。
为简单起见,我只有2个类 TParent
和TChild
.
TParent = class
protected
FValue : Integer;
end;
TChild = class(TParent)
public
property Value : Integer read FValue;
end;
如果 TChild
属性 Value
使用另一个单元中的 TParent
变量 FValue
,则 IDE 总是创建新的使用自动完成时的变量,这在添加新属性或方法时会出现问题,并可能导致不必要的错误。
TChild = class(TParent)
private
FValue: Integer;
public
property Value : Integer read FValue;
end;
但是,如果 TParent
和 TChild
在同一单元中,则一切正常。如果我无法将两个 类 移动到同一个单元,有什么办法可以防止这种情况发生?此外,我无法访问包含 TParent
的单元。在这种情况下,TChild
是从 TCustomGrid
.
这只是继承的本质,更具体地说,是字段可见性。简单的解决方案是引入一个具有更高可见性的 属性 getter 函数。例如...
TParent = class
protected
FValue : Integer;
public
function GetValue: Integer;
end;
TChild = class(TParent)
public
property Value : Integer read GetValue;
end;
...
function TParent.GetValue: Integer;
begin
Result:= FValue;
end;
代码完成只是遵循这些相同的规则 - 它不具有父字段的可见性,因此它会生成一个新字段。