TGraphicControl = class(TControl)
  private
    FCanvas: TCanvas;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  protected
    procedure Paint; virtual;
    property Canvas: TCanvas read FCanvas;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;<protected>只有自身类及派生类内部可以使用!

解决方案 »

  1.   

    关于protected 的问题经过一翻思考已经基本明白了它的用法, 但现在我又突发奇想能不能给这个图形组件加上fcanvas呢? 我试了一下,加了以下代码, private 
          fcanvas:tcanvas;  public 
          property  canvas:tcanvas read fcanvas ; 并同样修改了paint 对象方法, 
    把canvas 均改成了tcanvas,  
    奇怪的是编译组件是可以的,且可以安装。但在将其加入到新窗体, 
    就立即出错了。那么有没有可能这样做呢?