将VirtualTreeView编辑器移动到第二列

3

我有一个VirtualTreeView,其中有3列(如果有影响,列标题是不可见的)。

当我按F2键(默认启动编辑器的键)来编辑节点时,它会编辑列0中的节点。如何切换为编辑列1中的节点?

类似于以下代码,但对于F2键:

VST.EditNode(VST.GetFirstSelected(), 1);


有些事情我不明白:首先,如果该列是隐藏的,那么任何人如何编辑它?其次,您是说那行代码实现了您想要的功能,但问题仅在于如何将该命令绑定到F2按键上吗?还是问题还有更多? - Rob Kennedy
2
你需要在 TreeOptions.SelectionOptions 中使用 toExtendedFocus。这样,你就可以将焦点移动到第二列,并且按下 F2 键会切换到该列的编辑模式。如果你还在 TreeOptions.MiscOptions 中添加了 toGridExtensions,那么你就可以使用键盘来移动焦点了。 - Stefan Glienke
@RobKennedy 他可能是指列标题不可见? - David
列标题不可见,但列是可见的。对此我感到抱歉。在VirtualTreeView中,F2是启动编辑器的默认键,这不是我添加的。问题在于F2键打开编辑器,但是它打开的是第一列数据而不是第二列实际要编辑的数据。我可以使用上面的代码打开第二列数据的编辑器,但F2仍然编辑第一列数据。我将尝试使用toExtendedFocus并回报结果。 - Coder12345
@StefanGlienke: toExtendedFocus确实起作用,但现在问题不同了 - 现在可以使用F2键编辑所有列(包括第一列和最后一列)。 有没有办法停止除第二列(索引= 1)之外的所有列的编辑? - Coder12345
我使用 OnEditing 事件并在列不是1时将 Allowed 设置为false来完成它。感谢大家的帮助。@StefanGlienke - 如果您想写一个快速答案,我很乐意将其标记为正确,否则我会自己写。 - Coder12345
1个回答

7
你需要在 TreeOptions.SelectionOptions 中设置 toExtendedFocus 才能聚焦列并使用 F2 或再次单击选定的单元格进入编辑模式。
如果你想使用键盘导航,还需将 toGridExtensions 设置为 TreeOptions.MiscOptions
要防止某些列被编辑,你需要实现 treeview 的 OnEditing 事件,并将那些不可编辑的列的 Allowed 设为 False
你也可以从 Options 中排除 coAllowFocus,以防止聚焦它们(因此使它们不可编辑)。
附言:我建议在 VTV 上添加 coEditableTVTColumnOption

感谢您提出了“coEditable”建议。非常感谢! - Coder12345
今天添加了 coEditable - Stefan Glienke

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