Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Вопрос по VirtualTreeView


Автор: RA 1.5.2006, 23:20
Недавно стал разбираться с этим чудом, компонент замечательный, я в него влюбился  smile , правда хэлп по нему полное 'г'. 

В хэлпе копаться лень  smile 

Чтоб разобраться с целесообразностью использования его в своём прожекте, меня интересует возможность у этого компонента менять параметры шрифта итемов, к примеру как у HTMLTreeView.

Я пока не нашёл никаких признаков того что VirtualTreeView это способен делать, может я ошибаюсь ?
 

Автор: December 2.5.2006, 01:55
Да, дока там убийственная, планирую заняться редизайном оной, а то придётся ехать искать чела, который применил такое цветовое решение.
Смотри статью Paint cycles and stages. Это в раздеде Inner Fundamentals chm-хелпа 

Автор: AriX 2.5.2006, 10:35
RAdmin, 
Тебе нужно в событии OnPaintText у параметра TargetCanvas изменять TargetCanvas.Font.* и т.д., проверяя, например, тип нода (его можно записывать для каждого нода в record'е.
Например, так

Код
// типы
TNodeKind = (nkParent, nkChild);
PNodeInfo = ^TNodeInfo;
TNodeInfo = record
  Kind: TNodeKind;
  // еще какие-то параметры
end;

..

// при создании нода, создавать для него свой рекорд
var
  Node: PVirtualNode;
  Item: PNodeInfo;
..
Node := Tree.AddChild(nil);
Item := Tree.GetNodeData(Node);
Item.Kind := nkChild; // или nkParent

..

// потом в OnPaintText
var
  Item: PNodeInfo;
..
if (Column = 0) and (TextType = ttStatic) then begin
  Item := Tree.GetNodeData(Node);
  case Item.Kind of
    nkParent:
      TargetCanvas.Font.Color := clBlue;
    nkChild:
      TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold];
  end;
end;
 

Автор: RA 3.5.2006, 12:45
Ой, а событие OnPaintText я незаметил  smile .
теперь всё ясно, всем пасибо.  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)