没有做过,试一试在
FFont.Assign (value);后面加一句
Invalidate;乱猜的

解决方案 »

  1.   

    procedure TMycomponent.SetFont(value:Tfont);
    begin
      inherited SetFont(Value);
      if FFont<>value then
      FFont.Assign (value);
    end;
      

  2.   

    有个疑问:
        你的FFont创建了没有?
        TFont 是一个对象,不能象整形一样声明后就可以直接用了
        你得在你的TMyComponent的Contructor Create里面创建它,
        并且还得在 Destructor Destroy 方法里面 释放它。
        Contructor TMyComponent.Create;
        begin
          inherited;
          FFont := TFont.Create;
          <...>
        end;
        Destructor TMyComponent.Destroy;
        begin
          <...>
          FFont.Free;  
          inherited;
        end;
      

  3.   

    补充一点: 
        上面例子的 Create 的参数个数可能不对,但是最主要的是
        不要忘了这一句 FFont := TFont.Create。
      

  4.   

    Musicwind(吾爱是Yaya!) 是对的。