TreeView 一个节点画多种字体(100)

  • 主题发起人 主题发起人 wealsh
  • 开始时间 开始时间
W

wealsh

Unregistered / Unconfirmed
GUEST, unregistred user!
以下代码绘制的字体颜色都是蓝色,在网上找到资料是这么说的:“原来这个是TTreeView的Bug,TTCustomTreeView用自己的OnChange方法,把TTreeView的Font的OnChange方法覆盖了。 解决方法是,在TReeView所属的Form里面定义两个函数指针,然后在FormCreate的时候把TreeView的Font.Onchange和Brush.OnChange的指针保存下来,之后每修改Font或Brush的属性一次,就执行保留下来的函数一次,参数就是当前的Font或者Brush,一切就都OK了。” 请问这个 font onchange 如何处理?谢谢。 Delphi(Pascal) codeprocedure TForm1.tv1AdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);var NRect: TRect; procedure DrawText(TextColor: TColor; TextFontStyles: TFontStyles; Text: string ;iTop : Integer); begin with Sender.Canvas do begin Font.Color := TextColor; Font.Name:='宋体'; Font.Size:=9; TextOut(NRect.Left+3, iTop, Text); end; end;beginif (Stage = cdPostPaint) and (not Node.HasChildren) then begin NRect := Node.DisplayRect(True); Node.Text:=' '; DrawText(clBlue, [fsBold], '蓝色', NRect.Top+3); DrawText(clRed, [fsUnderline], '红色', NRect.Top+Sender.Canvas.TextHeight('高')+5); end;end;
 
后退
顶部