我写了一个类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;
请各为帮忙解决,重分感谢!

解决方案 »

  1.   

    什么错误?
    在子类是可以继承父类的属性的.
    下面是一个例子,没有你说的错误.
    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.
      

  2.   

    明白了.
    这句你要改成:
    property A read Fa write Fa;
    要具体指定A的类型
    property A:integer read Fa write Fa;
      

  3.   

    那还是因为你写错了
    两个单元一个单元道理是一样的.
    /////////////////////////////////////////////////////////
    包含父类单元:
    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.
      

  4.   

    当然也可以参考一下delphi自带控件的原代码.