Делая одну программу, понадобилось смоделировать переход по ячейкам VirtualTreeView с помощью кнопки Tab. Перехват Tab-а отдельный разговор =), а вот переход по ячейкам сейчас обсудим.
Дело в том, что при переходе по ячейкам VT сразу вызывает редактирование нода, в связи с чем у меня возникала ситуация, когда на редактирование вызывалась не правильная ячейка. Т.е., если реализуете перемещение по ячейкам сами, делайте примерно так:
with vtGrid do
begin
TreeOptions.MiscOptions := vtGrid.TreeOptions.MiscOptions - [toEditable];
Selected[lNode] := True;
FocusedNode := lNode;
FocusedColumn := lColumn;
TreeOptions.MiscOptions := vtGrid.TreeOptions.MiscOptions + [toEditable];
EditNode(lNode, lColumn);
end;
В таком варианте все работает так, как и ожидается.
P.S.: отметьте для себя еще один момент - очередность присваивания фокуса в дереве - сначала SelectedNode, потом FocusedNode и только после этого FocusedColumn! Только так и никак иначе! В ином случае вас ждут не приятные сюрпризы 😉