Внешний вид сайта:

Как выделить узлы в TTreeView

Как некоторые узлы в TTreeView выделить жирным шрифтом? Есть самый простой, но надежный способ реализации этого. Стандартное управление Windows TreeView имеет несколько флагов состояния (в нашем примере TVIS_BOLD и TVIS_CUT). При помощи этих флагов можно добиться нужного результата.

Выделение узлов TreeView жирным шрифтом

Процедура SetNodeBold

uses
  { ... }, CommCtrl;

procedure SetNodeBold(node: TTreeNode; Flags: Integer);
var
  tvi: TTVItem;
begin
   FillChar(tvi, SizeOf(tvi), 0);
   tvi.hItem:= node.ItemID;
   tvi.Mask:= TVIF_STATE;
   tvi.StateMask:= TVIS_BOLD or TVIS_CUT;
   tvi.State:= Flags;
   TreeView_SetItem(node.Handle, tvi);
end;

При добавлении узлов нужно просто вызывать эту процедуру в нужном месте. Но возможно и более гибкое применение. Например, так:

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetNodeBold(TreeView1.Items[0], TVIS_BOLD);
  SetNodeBold(TreeView1.Items[3], TVIS_BOLD);
  SetNodeBold(TreeView1.Items[6], TVIS_BOLD);
end;

Установка флагов выглядит так:

  • SetNodeState(node, TVIS_BOLD) - установить узел как Bold
  • SetNodeState(node, TVIS_CUT) - установить узел как Cutted
  • SetNodeState(node, TVIS_BOLD or TVIS_CUT) - установить узел как Bold и Cutted
  • SetNodeState(node, 0) - установить узел как нормальный

Комментарии

Нет комментариев. Ваш будет первым!