Delphi:第一次单击后获得VirtualStringTree的编辑模式

Delphi:第一次单击后获得VirtualStringTree的编辑模式,delphi,editing,virtualtreeview,tvirtualstringtree,Delphi,Editing,Virtualtreeview,Tvirtualstringtree,我想在单击单元格后直接从VirtualStringTree编辑单元格(节点)(类似于StringGrid,带有选项goEditing:True和goAlwaysShowEditor:True) 我已经设置了toEditable:True、toEditOnClick:True和editDelay:0选项,但是VirtualStringTree组件在第二次单击后进入编辑模式(第一次是聚焦单元格,第二次是编辑)我认为没有办法配置您想要的内容,但是,您可以使用例如OnFocusChanged事件,并使用

我想在单击单元格后直接从
VirtualStringTree
编辑单元格(节点)(类似于
StringGrid
,带有选项
goEditing:True
goAlwaysShowEditor:True


我已经设置了
toEditable:True
toEditOnClick:True
editDelay:0
选项,但是
VirtualStringTree
组件在第二次单击后进入编辑模式(第一次是聚焦单元格,第二次是编辑)

我认为没有办法配置您想要的内容,但是,您可以使用例如
OnFocusChanged
事件,并使用如下代码手动调用编辑模式:

procedure TForm1.VirtualStringTree1FocusChanged(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex);
begin
  Sender.EditNode(Node, Column);
end;

上述解决方法的问题是,即使通过键盘选择不同的节点,也会调用编辑模式,这可能不是您想要的。

获取事件OneEdit并将Allowed标志设置为true

Procedure TForm1.vtListEditing(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; var Allowed: Boolean);
begin
  Allowed := true;
end;

不客气!但是,键盘焦点的改变在那里是相当烦人的。如果按page down(向下翻页)键,然后按page down(向下翻页)键移动,节点开始被编辑,看起来不太好。为什么要这样做?这是一种建议的方法,可以在单击后开始编辑节点文本,就像在Windows资源管理器中一样。它不会导致您在键盘导航中提到的问题。