在VirtualTreeView中跳过/禁用节点

时间:2014-12-04 21:30:10

标签: delphi vcl virtualtreeview

我的VirtualStringTree中有5个节点:

tree

节点#4没有标题,当用户按下VK_DOWN或VK_UP时应该跳过。

当用户点击它时,它也不会被选中。

我编写了这段代码(可行),在使用键盘时跳过所述节点:

if Key = VK_DOWN then
begin
  node := VirtualTree.GetNext(VirtualTree.FocusedNode);
  if not Assigned(node) then Exit;

  data := VirtualTree.GetNodeData(node);
  if data^.Caption = '' then
  begin
    VirtualTree.GetNext(node);
    VirtualTree.FocusedNode := node;
    VirtualTree.Selected[node] := true;
  end;
end
else if Key = VK_UP then
begin
  node := VirtualTree.GetPrevious(VirtualTree.FocusedNode);
  if not Assigned(node) then Exit;

  data := VirtualTree.GetNodeData(node);
  if data^.Caption = '' then
  begin
    VirtualTree.GetPrevious(node);
    VirtualTree.FocusedNode := node;
    VirtualTree.Selected[node] := true;
  end;
end;

问题是节点仍然通过点击它来聚焦。

我尝试禁用节点VirtualTree.IsDisabled[node] := true; - 但没有运气。

任何人都知道如何实现这一目标?

1 个答案:

答案 0 :(得分:4)

处理OnFocusChanging事件并将False返回到您选择的节点的Allowed参数。