我一直试图弄清楚这两件事:
1)如何更改代码中整行的颜色?比如,当 VT 看起来像 ListView 时?
2)如何使复选框也缩进?我的孩子复选框和同一个“缩进?” 作为我的根复选框。
谢谢!
我一直试图弄清楚这两件事:
1)如何更改代码中整行的颜色?比如,当 VT 看起来像 ListView 时?
2)如何使复选框也缩进?我的孩子复选框和同一个“缩进?” 作为我的根复选框。
谢谢!
1)
procedure VSTBeforeItemErase(
Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
ItemRect: TRect; var ItemColor: TColor;
var EraseAction: TItemEraseAction);
begin
EraseAction := eaColor;
ItemColor := clLime;
end;
2)每个节点复选框的缩进设置单独恕我直言是不可能的。树有它的 Indent 属性,它设置所有节点的缩进(包括它们的复选框)。在内部调用了 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;
1) 尝试添加toFullRowSelect
到TreeOptions.SelectionOptions
.
2)我无法回答。也许试试toFixedIndent
。