首页 > 解决方案 > virtualtreeview 以编程方式移动选择栏(响应向下/向上键)

问题描述

如何在树视图中移动选择,类似于 dbgrid.next/dbgrid.previous?

当在 TEdit 控件中按下向下/向上键时,我试图移动 VST 中的选择栏。

这是我尝试过的,有效,但对我来说似乎过于冗长,无法完成一个简单的任务:

procedure TfrmUserManager.edtTaskFilterKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Node: PVirtualNode;
begin
  if not Assigned(vstTasks.FocusedNode) then
    Node:= vstTasks.GetFirst
  else
    Node:= vstTasks.FocusedNode;
  if key = VK_DOWN then
    vstTasks.FocusedNode:= vstTasks.GetNextVisible(Node)
  else if key = VK_UP then
    vstTasks.FocusedNode:= vstTasks.GetPreviousVisible(Node);
  vstTasks.Selected[vstTasks.FocusedNode] := True;
  if key in [VK_DOWN,VK_UP] then key := 0;
end; 

这可以简化吗?TIA。

标签: delphi-7lazarusvirtualtreeview

解决方案


推荐阅读