【发布时间】:2020-05-23 16:21:27
【问题描述】:
当使用 VirtualStringTree 添加辅助功能支持时,需要在 uses 部分中包含单元 VirtualTrees.Accessibility。这在 Delphi 中有效。
在 C++ Builder 中相当于包含 #include "VirtualTrees.Accessibility.hpp"。但是包含包含文件没有任何作用。
我已将问题追溯到VirtualTrees.Accessibility.pas 文件,它执行几行代码来在Delphi 中注册默认的可访问性提供程序,而hpp 文件中没有此代码。所以包括 hpp 确实包括类,但不包括注册提供者的代码。
有问题的代码(VirtualTrees.Accessibility.pas末尾是这个):
var
DefaultAccessibleProvider: TVTDefaultAccessibleProvider;
DefaultAccessibleItemProvider: TVTDefaultAccessibleItemProvider;
MultiColumnAccessibleProvider: TVTMultiColumnAccessibleItemProvider;
initialization
if DefaultAccessibleProvider = nil then
begin
DefaultAccessibleProvider := TVTDefaultAccessibleProvider.Create;
GetAccessibilityFactory.RegisterAccessibleProvider(DefaultAccessibleProvider);
end;
if DefaultAccessibleItemProvider = nil then
begin
DefaultAccessibleItemProvider := TVTDefaultAccessibleItemProvider.Create;
GetAccessibilityFactory.RegisterAccessibleProvider(DefaultAccessibleItemProvider);
end;
if MultiColumnAccessibleProvider = nil then
begin
MultiColumnAccessibleProvider := TVTMultiColumnAccessibleItemProvider.Create;
GetAccessibilityFactory.RegisterAccessibleProvider(MultiColumnAccessibleProvider);
end;
finalization
GetAccessibilityFactory.UnRegisterAccessibleProvider(MultiColumnAccessibleProvider);
MultiColumnAccessibleProvider := nil;
GetAccessibilityFactory.UnRegisterAccessibleProvider(DefaultAccessibleItemProvider);
DefaultAccessibleItemProvider := nil;
GetAccessibilityFactory.UnRegisterAccessibleProvider(DefaultAccessibleProvider);
DefaultAccessibleProvider := nil;
end.
我的问题 - 我如何翻译或使用上述内容,以便在包含 VirtualTrees.Accessibility.hpp 文件后也可以从 C++ Builder 获得可访问性支持?将上述内容翻译成 C++ 将不胜感激。
【问题讨论】:
标签: delphi accessibility c++builder virtualtreeview