【问题标题】:Moving VirtualTreeView editor to second column将 VirtualTreeView 编辑器移至第二列
【发布时间】:2014-02-25 03:40:39
【问题描述】:

我有 3 列的 VirtualTreeView(如果重要,列标题是不可见的)。

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

与此代码等效,但 F2 键:

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

【问题讨论】:

  • 一些我不明白的地方:首先,如果该列是不可见的,那么任何人将如何编辑它?其次,你是说那行代码做你想做的事,但问题仅仅是如何将该命令与 F2 键击联系起来?还是有更多问题?
  • 您需要在TreeOptions.SelectionOptions 中的toExtendedFocus。然后您可以将焦点移动到第二列,F2 将在该列中切换到编辑模式。如果您还将toGridExtensions 添加到TreeOptions.MiscOptions,您可以使用键盘移动焦点。
  • @RobKennedy 他可能是说列标题不可见?
  • 列标题不可见,列不可见。对于那个很抱歉。 F2 是在 VirtualTreeView 中启动编辑器的默认键,所以不是我添加的。所以问题是 F2 键打开编辑器,但对于第一列数据而不是第二列数据,要编辑的实际数据在哪里。我可以使用上面的代码打开第二列数据的编辑器,但 F2 仍然为第一列编辑它。我会尝试toExtendedFocus 并报告。
  • @StefanGlienke: toExtendedFocus 确实有效,但现在问题不同了——现在所有列都可以用 F2 键编辑(包括第一列和最后一列)。有没有办法停止编辑除第二列(索引 = 1)之外的所有列?

标签: delphi virtualtreeview


【解决方案1】:

您必须在 TreeOptions.SelectionOptions 中设置 toExtendedFocus 才能聚焦列,然后使用 F2 或再次单击选定的单元格更改为编辑模式。

如果您想使用键盘导航,您还必须将toGridExtensions 设置为TreeOptions.MiscOptions

为了防止某些列被编辑,您必须实现树视图的OnEditing 事件,并将Allowed 设置为False 用于那些不应编辑的列。

您还可以为这些列从 Options 中排除 coAllowFocus,以防止它们聚焦(从而使它们不可编辑)。

附:我会建议在VTV上将coEditable添加到TVTColumnOption

【讨论】:

  • 感谢添加coEditable 提案。非常感谢!
  • coEditable 今天已添加。
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 2018-11-08
  • 2022-10-13
  • 1970-01-01
相关资源
最近更新 更多