如何使用 TVirtualStringTree AccessibleName 或实现辅助功能?

How to use TVirtualStringTree AccessibleName or implement accessibility?

我可以看到 TVirtualStringTree 有一个名为 AccessibleName 的 属性,但我没有看到它起作用,也就是说,给出设置为屏幕的字符串 reader比如NVDA.

我尝试在 OnGetText 事件中设置它,但似乎没有产生任何结果(例如 Sender->AccessibleName = "my node name";)。它读取的是树的全部内容,而不仅仅是当前节点,就好像我没有对 属性 进行任何更改一样,如果节点被更改(使用键盘)它什么也不做.

它应该阅读的是 - 列名 - 列内容 - 另一个列名 - 另一个列内容等,就像它对常规 TListView.

所做的那样

这里似乎有一个 iAccessible 接口的实现 - https://github.com/Virtual-TreeView/Virtual-TreeView/blob/master/Source/VTAccessibility.pas

您能否分享一些示例,说明如何使用内置辅助功能的 VirtualTreeView 使组件在屏幕上可读 reader,因为这样的示例似乎真的很少见?

编辑(面向未来的 google 员工):

解决C++ Builder可访问性单元链接的相关问题:

编辑 2(针对未来的 google 员工):

此外,TVirtualStringTree还提供了OnGetImageText。此事件用于为树中使用的图像提供可访问的文本,例如,如果您在一个节点中有多个图像来表示某些状态,您可以使用图像标签描述这些状态。

您需要将 VirtualTrees.Accessibility 单元添加到 uses 部分(项目或您的单元之一)。该单元注册辅助功能提供程序,它将只读取树中的焦点项目以及列名。