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

3

当我点击单元格(类似于具有选项goEditing:TruegoAlwaysShowEditor:TrueStringGrid)后,我希望能够直接从VirtualStringTree编辑单元格(节点)。

我已经设置了toEditable:TruetoEditOnClick:TrueeditDelay:0选项,但是VirtualStringTree组件需要第二次点击才能进入编辑模式(第一次是将焦点放在单元格上,第二次才是编辑)。

2个回答

3

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

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

上述解决方法的问题在于,即使您通过键盘选择了不同的节点,编辑模式也会被调用,这可能并不完全符合您的要求。

1
不客气!但是那个键盘焦点的变化真的很烦人。如果你按下例如“Page Down”键,然后移动到下一页,节点开始被编辑,这看起来并不好。 - TLama

0

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

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

你为什么要这样做? - TLama
这是启动节点文本点击编辑的推荐方式,就像在Windows资源管理器中一样。它不会导致您上面提到的键盘导航问题。 - user173399

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接