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

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

procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
    if (Node.Text = 'TargetNode') then begin
        Sender.Canvas.Brush.Color := TStyleManager.ActiveStyle.GetStyleColor(TStyleColor.scTreeView);
        Sender.Canvas.Font.Color := clRed;
    end;
end;

コメント