[我可以看到TVirtualStringTree
具有一个名为AccessibleName
的属性,但我看不到它起作用,也就是说,给出了设置为屏幕阅读器(例如NVDA)的字符串。
我尝试在OnGetText
事件中设置此值,但似乎未产生任何结果(例如Sender->AccessibleName = "my node name";
)。它读取的全部内容是树的全部内容,而不仅仅是一个当前节点,就像我没有对该属性进行任何更改一样,并且如果更改了节点(使用键盘),它也不会执行任何操作。
应该读取的是-列名-列内容-另一个列名-另一个列内容等,就像常规TListView
一样。
这里似乎有一个iAccessible接口的实现-https://github.com/Virtual-TreeView/Virtual-TreeView/blob/master/Source/VTAccessibility.pas
您能否分享一些示例,如何使用内置的可访问性中的VirtualTreeView来使组件能够被屏幕阅读器读取,因为此类示例似乎真的很稀缺?
编辑(针对未来的Google员工):
解决C ++ Builder可访问性单元链接的相关问题:
Implementing VirtualTreeView TVTDefaultAccessibleProvider in C++ Builder
您需要将VirtualTrees.Accessibility
单位添加到uses
部分(项目或您的单位之一)。该单元注册辅助功能提供程序,它将仅读取树中的焦点项目以及列名。