我继承了TImage,需要在IMAGE上显示一行文字,因此增加了两个属性
    property DataCaption:string read FDataCaption write SetDataCaption;//标题
    property DataCaptionFont:TFont read FDataCaptionFont write SetDataCaptionFont;//标题字体然后在Create事件中
constructor TImageEX.Create(AOwner: TComponent);
begin
  FDataCaptionFont:=TFont.Create;
  FDataCaptionFont.Color:=clBlue;
  FDataCaptionFont.Size:=12;
  FDataCaptionFont.Name:='宋体';      inherited Create(AOwner);
...
这样控件放置在窗体上时默认显示的字体是蓝色宋体。可是,我把窗体里的DataCaptionFont属性改为红色或其它颜色,设计状态下的颜色也改过来了,但是运行起来后,该字体却返回默认的蓝色字体了,必须手工设置一下颜色才变回来。到底是哪里错了?

解决方案 »

  1.   

    我在click事件中,会把标题进行重写,因此需要点一下,字体颜色才会变成设置的红色。顺序也调整过了,没用的。还有,在设计状态下,把DataCaptionFont属性前的+号展开,直接改color属性,不会触发SetDataCaptionFont事件??必须要点击DataCaptionFont属性后面的三个点,在字体属性页里点确定才能触发SetDataCaptionFont事件。
      

  2.   

    constructor TImageEX.Create(AOwner: TComponent); 
    begin 
      inherited Create(AOwner); { call inherited constructor }  FDataCaptionFont:=TFont.Create; 
      FDataCaptionFont.Color:=clBlue; 
      FDataCaptionFont.Size:=12; 
      FDataCaptionFont.Name:='宋体';     
    ... 
      

  3.   

    sorry,我犯理解错误
    关注...
      

  4.   

    初步估计,可能是TFONT属性不能这样写的吧,我再查查资料。有经验的同学请帮帮忙哦。