我写了一个类TResizePanel是以Tpanel为基类,在Tresizepanel中定义了一个属性
unit Resizepanel
.
.
.
property A read Fa write Fa;end;我又写了一个类TpicPanel是以Tresizepanel为基类
unit picpanel
uses resizepanel
...public:
Constructor Create(owner:Tcomponent);override;
Constructor picpanel.Create(owner:Tcomponent);
begin
inherited;
A:=1;
end;end;系统老是提示我A:=1处有错,
说是A没有定义
我在picpanel中的published加上property A;
系统提示基类中没有A;
请各为帮忙解决,重分感谢!
unit Resizepanel
.
.
.
property A read Fa write Fa;end;我又写了一个类TpicPanel是以Tresizepanel为基类
unit picpanel
uses resizepanel
...public:
Constructor Create(owner:Tcomponent);override;
Constructor picpanel.Create(owner:Tcomponent);
begin
inherited;
A:=1;
end;end;系统老是提示我A:=1处有错,
说是A没有定义
我在picpanel中的published加上property A;
系统提示基类中没有A;
请各为帮忙解决,重分感谢!
在子类是可以继承父类的属性的.
下面是一个例子,没有你说的错误.
unit Unit2;
interface
uses ExtCtrls,Classes;type
TOwnPanel = class(Tpanel)
private
Fstr : string;
public
procedure setstr;
constructor Create(AOwner: TComponent); override;
published
property Cap:string read Fstr write Fstr;
end;
type
TsmallOwnPanel = class(TOwnPanel)
private
public
constructor Create(AOwner: TComponent); override;
published
end;
implementation{ Tbird }constructor TOwnPanel.Create(AOwner: TComponent);
begin
inherited;
//
end;procedure TOwnPanel.setstr;
begin
//
end;{ Tsmallbird }constructor TsmallOwnPanel.Create(AOwner: TComponent);
begin
inherited;
Cap := '1';
//
end;end.
这句你要改成:
property A read Fa write Fa;
要具体指定A的类型
property A:integer read Fa write Fa;
两个单元一个单元道理是一样的.
/////////////////////////////////////////////////////////
包含父类单元:
unit Unit2;
interface
uses ExtCtrls,Classes;type
TOwnPanel = class(Tpanel)
private
Fstr : string;
public
constructor Create(AOwner: TComponent); override;
published
property Cap:string read Fstr write Fstr;
end;implementationconstructor TOwnPanel.Create(AOwner: TComponent);
begin
inherited;
//
end;
end./////////////////////////////////////////////////////////////////
包含子类的单元unit Unit3;
interfaceuses ExtCtrls,Classes,Unit2;//引用unit2
type TsmallOwnPanel = class(TOwnPanel)
private
public
constructor Create(AOwner: TComponent); override;
published
end;implementationconstructor TsmallOwnPanel.Create(AOwner: TComponent);
begin
inherited;
Cap := '1';
//
end;end.