在VirtualTreeView中使用getPrevious(node)或getNext(node)时,是否有可能在上一个或下一个节点上获得蓝色的亮点,例如通过单击?
Div>这就是您用蓝色突出显示节点的方式:(或在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()