Delphi - TreeView で特定Nodeの文字色を変更

TreeView の CustomDrawItem を用いて
  1. procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);  
  2. begin  
  3.     if (Node.Text = 'TargetNode'then begin  
  4.         Sender.Canvas.Font.Color := clRed;  
  5.     end;  
  6. end;  
カスタムスタイルを使用している場合、背景が白抜け(スタイル未適用で塗りつぶされてしまうため)
Vcl.Themes を uses して、TreeView(scTreeView)の色を取得してブラシへ割り当ててやる
  1. uses Vcl.Themes;  
  2.   
  3. procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);  
  4. begin  
  5.     if (Node.Text = 'TargetNode'then begin  
  6.         Sender.Canvas.Brush.Color := TStyleManager.ActiveStyle.GetStyleColor(TStyleColor.scTreeView);  
  7.         Sender.Canvas.Font.Color := clRed;  
  8.     end;  
  9. end;  

コメント