4
禁用节点我有我的VirtualStringTree 5个节点:跳绳/在VirtualTreeView
节点#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;
- 但没有运气。
任何人都知道一种方法来实现这一点?
我不知何故错过了这个事件。谢谢:-) – ChrisB 2014-12-04 21:58:00
不客气!无论如何,最好处理键盘处理的'OnKeyAction'事件。此外,通过'GetPreviousVisible'和'GetNextVisible'方法搜索最近的非空节点。不要忘记,还有更多的钥匙可以处理,至少例如(请注意,OnFocusChanging会阻止节点通过键盘进行聚焦,因此您需要为所有导航键找到最近的可聚焦节点,否则将获得键值没有做任何事情)。 – TLama 2014-12-04 22:17:05