virtualtreeview программно перемещает панель выбора (реагируя на нажатие клавиши вниз / вверх)

#delphi-7 #lazarus #virtualtreeview

#delphi-7 #lazarus #virtualtreeview

Вопрос:

Как переместить выделение в treeview, аналогично dbgrid.next / dbgrid.previous?

Я пытаюсь переместить панель выбора в VST, когда нажата клавиша вниз / вверх в элементе управления TEdit.

Это я пробовал, работает, но мне кажется слишком подробным для простой задачи:

 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.

Комментарии:

1. Что вы подразумеваете под упрощенным? Ваше рабочее решение мне уже кажется довольно простым

2. Упрощенный = меньше кода. Например, MoveToPreviousNode MoveToNextNode.