接上一个问题-关于对象的创建和释放。这里需要请教另一个问题:
tmemo继承自tcustommemo,那么,lines属性不是应该把父类的覆盖了吗?怎么还能正确执行?  TCustomMemo = class(TCustomEdit)
  private
    FLines: TStrings;
    ……
  protected
    ……
    procedure SetLines(Value: TStrings);
    ……
  public
    ……
    property Lines: TStrings read FLines write SetLines;
  end;
 
 TMemo = class(TCustomMemo)
  published
    ……
    property Lines;
    ……
  end;

解决方案 »

  1.   

    TMemo只是把Lines这个属性公布出来,这就可以在属性编辑器上设计了。
      

  2.   

     仅仅是把Custom的属性发布到属性编辑器上
      

  3.   

    子类是可以“覆盖”父类的属性,但楼主说的这种情况是:子类发布(Publish)父类的属性。为什么要发布呢?
    观察Delphi的VCL框架,我们会发现,一般的控件层次总是分为:{ 抽象基类 }
    TCustomXXX = class(TXXXXXX)
    protected
      //... 属性、方法
    public
      //... 属性、方法
    end;{ 具体控件类 }
    TXXX = class(TCustomXXX)
    published
      //...属性
    end;抽象基类一般会提供很多默认的属性(放在protected和public里面),而具体子类可以选择需要的属性,并发布出来,这样才能在设计期直接设置属性。(published出来的属性才可以通过RTTI获取)