MultiSelect オプションを有効にした VST があります。キーボード イベントによって選択が変更されたときに、VirtualStringTree で選択されたノードのリストを取得するにはどうすればよいですか?
OnFocusChanged イベントで以下のコードを使用してみました
procedure TForm1.UpdateSelection(VST: TVirtualStringTree);
Var
NodeArray: TNodeArray;
NodeData: PNodeData;
I: Integer;
begin
Memo1.Clear;
NodeArray := VST.GetSortedSelection(False);
For I := Low(NodeArray) to High(NodeArray) do
Begin
NodeData := VST.GetNodeData(NodeArray[I]);
Memo1.Lines.Add(NodeData.Caption);
End;
end;
procedure TForm1.VST1FocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex);
begin
UpdateSelection(VST1);
end;
これは、マウスとシフト キーを使用する場合は問題なく動作しますが、キーボードを使用する場合、つまりノードを選択し、シフト キーを押してから下矢印キーを押して複数のノードを選択すると、選択によって完全なリスト - 1 が返されます。
これはバグのようですか?キーボードを使用するときに完全な選択を取得する方法についてのアイデアはありますか?