1

我一直试图弄清楚这两件事:

1)如何更改代码中整行的颜色?比如,当 VT 看起来像 ListView 时?

2)如何使复选框也缩进?我的孩子复选框和同一个“缩进?” 作为我的根复选框。

谢谢!

4

2 回答 2

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;
于 2011-01-11T13:16:55.890 回答
0

1) 尝试添加toFullRowSelectTreeOptions.SelectionOptions.

2)我无法回答。也许试试toFixedIndent

于 2011-01-11T13:16:34.423 回答