高亮显示重点节点

时间:2019-03-10 22:45:32

标签: highlight virtualtreeview

在VirtualTreeView中使用getprevious(node)或getnext(node)时,是否可以通过单击在选择节点上的前一个或后一个节点上获得蓝色突出显示?

1 个答案:

答案 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()