Delphi TreeView の MultiSelect でコードからノードを選択

Delphi TreeView で MultiSelect := True; にすると、Ctrl+Clickで複数選択可能

ノートの選択状態を取得
  • Node.Selected
  • TreeView.Selections, TreeView.SelectionCount

コードから選択状態を設定(NG)
  • 対象のノートで Node.Selected := True
  • TreeView.Select(node1, [ssCtrl])
これらを用いると、選択されたりされなかったり、 TreeView.Selected が残った状態になったりする


コードから選択状態を設定(OK)
TreeView の Select メソッドへ array of TTreeNode 型の配列をまとめて渡せばよいらしい
// ex.1
TreeView.Select([node1, node2])

// ex.2
var Nodes: array of TTreeNode;

SetLength(Nodes, 2);
Nodes[0] := node1;
Nodes[1] := node2;
TreeView.Select(Nodes);

// ex.3
uses System.Generics.Collections;

var NodeList: TList<TTreeNode>

NodeList := TList<TTreeNode>.Create;
    NodeList.Add(node1);
    NodeList.Add(node2);

    TreeView.Select(NodeList.ToArray);
NodeList.Free;

コメント