我在VirtualStringTree中有5个节点:
节点#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;
,但没有成功。有人知道实现这一目标的方法吗?