1

私はこれらの2つのことを理解しようとしてきました:

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 メソッドが呼び出されますが、どちらも非表示になっています。それらの 1 つを変更することは役に立ちますが、非常に具体的にする必要があります。独自のコンポーネントの子孫を作成するのが最善だと思います。

高度な例のプロパティ ページにあるものを作成する場合は、ツリー階層の複数のレベルにノードを追加する必要があります。

あなたのインスピレーションのために...

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) に追加toFullRowSelectしてみてくださいTreeOptions.SelectionOptions

2) 私はそれに答えることができません。多分試してみてくださいtoFixedIndent

于 2011-01-11T13:16:34.423 に答える