如何使用 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
部分(项目或您的单元之一)。该单元注册辅助功能提供程序,它将只读取树中的焦点项目以及列名。
我可以看到 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
部分(项目或您的单元之一)。该单元注册辅助功能提供程序,它将只读取树中的焦点项目以及列名。