在VirtualTreeView中使用getprevious(node)或getnext(node)时,是否可以通过单击在选择节点上的前一个或后一个节点上获得蓝色突出显示?
答案 0 :(得分:0)
这是如何使节点以蓝色突出显示:(或在 VST.Colors 中设置的其他颜色...)
VST.Selected[Node] := True;
不要与:VST.FocusedNode
混用!
您可以考虑先取消选择之前的蓝色。
如果 VST.TreeOptions.SelectionOptions >> toMultiSelect = False
,只需“记住”最后一个就足够了:
var
LastSelected: PVirtualNode; // you can put this to the Form's private section
...
procedure DeselectLastOne();
begin
if (csDestroying in VST.ComponentState) then Exit;
if Assigned(LastSelected) then begin
VST.Selected[LastSelected] := False;
LastSelected := nil;
end;
end;
procedure SelectNewOne(N: PVirtualNode);
begin
if (csDestroying in VST.ComponentState) then Exit;
DeselectLastOne();
VST.Selected[N] := True;
LastSelected := N;
end;
initialization
LastSelected = nil; // you can put this to the Form's OnCreate proc.
但是,如果您设置了 VST.TreeOptions.SelectionOptions >> toMultiSelect = True
,则必须先遍历 VST.SelectedNodes()
函数以取消选择所有突出显示的节点。
另见:VST.SelectedCount : integer;
、VST.GetFirstSelected()
、VST.GetNextSelected()