如何使用TVirtualStringTree AccessibleName或实现可访问性?

问题描述 投票:2回答:1

[我可以看到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

delphi accessibility c++builder virtualtreeview
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.