Используй событие
OnAdvancedCustomDrawItem и в зависимости от уровня узла меняй цвет:
Код:
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
begin
DefaultDraw := true;
if Node.Selected then // В зависимости от того, выделен узел или нет
// Используются разные цветовые схемы
// А то черный цвет на синем фоне - мрак
begin
if (Node.Level = 0)
then Sender.Canvas.Font.Color := clWhite // это самый верхний узел
else Sender.Canvas.Font.Color := clRed; // а это остальные
end
else
begin
if (Node.Level = 0)
then Sender.Canvas.Font.Color := clBlack // это самый верхний узел
else Sender.Canvas.Font.Color := clRed; // а это остальные
end;
end;
Необходимо менять именно
Sender.Canvas.Font.Color т.к. при стандартной прорисовке вызывается функция
DrawText , которая использует параметра шрифта той канвы, где рисует.