gpt4 book ai didi

delphi - SerialForms.pas(17) : W1010 Method 'Create' hides virtual method of base type 'TComponent'

转载 作者:行者123 更新时间:2023-12-03 15:20:10 32 4
gpt4 key购买 nike

我创建了一个类

  FormInfo = class (TComponent)
private
FLeftValue : Integer;
FTopValue : Integer;
FHeightValue : Integer;
FWidthValue : Integer;
public
constructor Create(
AOwner : TComponent;
leftvalue : integer;
topvalue : integer;
heightvalue : integer;
widthvalue : integer);
protected
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
function GetChildOwner: TComponent; override;
//procedure SetParentComponent(Value : TComponent); override;
published
property LeftValue : Integer read FLeftValue write FLeftValue;
property TopValue : Integer read FTopValue write FTopValue;
property HeightValue : Integer read FHeightValue write FHeightValue;
property WidthValue : Integer read FWidthValue write FWidthValue;
end;

进一步用于表单序列化。 Create方法有如下实现

constructor FormInfo.Create(AOwner: TComponent; leftvalue, topvalue, heightvalue,
widthvalue: integer);
begin
inherited Create(AOwner);

FLeftValue := leftvalue;
FTopValue := topvalue;
FHeightValue := heightvalue;
FWidthValue := widthvalue;
end;

由于组装,我收到警告

[dcc32 Warning] SerialForms.pas(17): W1010 Method 'Create' hides virtual method of base type 'TComponent'

需要做什么才能消除此警告而不损失应用程序的功能?

最佳答案

使用reintroduce保留字来指示编译器您想要有意隐藏类中的基类构造函数:

TMyClass = class (TComponent)
public
constructor Create(AOwner: TComponent; MyParam: Integer; Other: Boolean); reintroduce;

这样,就不会显示任何警告。

也就是说,您必须重新考虑隐藏 TComponent.Create 构造函数。这是一个坏主意,因为在设计时添加到表单/数据模块时,Delphi 会调用默认的 TComponent.Constructor 在运行时创建组件实例。

TComponent 使构造函数成为虚拟的,以允许您在该过程中执行自定义代码,但您必须坚持使用仅向您传递所有者的创建公司,并让流机制在创建后处理属性的存储值。完成。

如果是这种情况,您的组件必须支持“未配置”,或者在此通用构造函数中为其属性设置默认值。

您可以提供更多具有不同名称的构造函数,以便您可以在运行时通过代码为不同的属性传递值来创建实例,以方便您使用。

关于delphi - SerialForms.pas(17) : W1010 Method 'Create' hides virtual method of base type 'TComponent' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13954582/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com