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

Delphi 如何使用TVirtualStringTree AccessibleName或实现可访问性?,delphi,accessibility,c++builder,virtualtreeview,Delphi,Accessibility,C++builder,Virtualtreeview,我可以看到TVirtualStringTree有一个名为AccessibleName的属性,但我看不出它在工作,也就是说,给出设置为屏幕阅读器(如NVDA)的字符串 我尝试的是在OnGetText事件中设置它,但似乎没有产生任何结果(例如Sender->AccessibleName=“我的节点名”)。它读取的是树的全部内容,而不仅仅是当前节点,就像我没有对属性进行任何更改一样,如果节点发生更改(使用键盘),它也不会执行任何操作 它应该读的是-列名-列内容-另一个列名-另一个列内容等,就像常规的T

我可以看到
TVirtualStringTree
有一个名为
AccessibleName
的属性,但我看不出它在工作,也就是说,给出设置为屏幕阅读器(如NVDA)的字符串

我尝试的是在
OnGetText
事件中设置它,但似乎没有产生任何结果(例如
Sender->AccessibleName=“我的节点名”
)。它读取的是树的全部内容,而不仅仅是当前节点,就像我没有对属性进行任何更改一样,如果节点发生更改(使用键盘),它也不会执行任何操作

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

这里似乎有一个iAccessible接口的实现-

您能否分享一些示例,如何使用VirtualTreeView内置的可访问性使组件对屏幕阅读器可读,因为这样的示例似乎非常稀少

编辑(针对未来的谷歌用户):

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

编辑2(面向未来的谷歌用户):


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

您需要添加
VirtualTrees。可访问性
单元到
使用部分(项目或您的一个单元)。本单元注册辅助功能提供程序,它将只读取树中的重点项目以及列名。

感谢您的回答-是的,您是正确的,它确实适用于Delphi。但是,在C++的Builder中,包含了<代码>虚拟树。Access。HPP < /Cuff>没有帮助,因为它不执行注册可访问性提供者的部分(该部分不存在于HPP文件中,而是列在PAS文件中)。我想我必须问一个新的问题,如何登记那些,因为它只影响C++ Builder,而不是Delphi。