1)
procedure VSTBeforeItemErase(
Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
ItemRect: TRect; var ItemColor: TColor;
var EraseAction: TItemEraseAction);
begin
EraseAction := eaColor;
ItemColor := clLime;
end;
2) устанавливает для каждого флажка узла отдельно отступа ИМХО невозможно. Дерево имеет свойство «Отступ», которое устанавливает отступ для всех узлов (включая их флажки). Внутри вызываются методы AdjustCoordinatesByIndent и PaintCheckImage, но оба они скрыты для вас. Модификация одного из них может помочь вам, но вам нужно быть очень конкретным, я бы сказал, что лучше всего создать собственный потомок.
Если вы хотите создать что-то, что находится на странице свойств расширенного примера, вам нужно добавить узлы к нескольким уровням в иерархии дерева.
Для вашего вдохновения ...
var CurrentNode: PVirtualNode;
CurrentSubnode: PVirtualNode;
begin
VirtualStringTree1.Indent := 50; // this increases indention for all nodes in the tree
CurrentNode := VirtualStringTree1.AddChild(nil); // create a node to the root
CurrentNode.CheckType := ctCheckBox; // check support of a node
CurrentSubnode := VirtualStringTree1.AddChild(CurrentNode); // create a subnode to your first node
CurrentSubnode.CheckType := ctCheckBox; // check support of a node
end;
Добро пожаловать на ТАК! Два вопроса должны соответствовать двум вопросам о SO. Что, если кто-то знает ответ на один из ваших вопросов? Означает ли это ответ на ваш объединенный вопрос? – jpfollenius
1) И хотите ли вы выбрать всю строку или изменить каждый фон строки? –
вы вполне можете быть * 16-летний компьютер Wiz * (sic), но на самом деле, не могли бы вы, пожалуйста, использовать свой реальный счет здесь довольно размножающиеся персонажи ?! –