使用VirtualStringTree添加可访问性支持时,需要在VirtualTrees.Accessibility
部分中包含单元uses
。这在Delphi中有效。
C ++ Builder中的等效项是包含#include "VirtualTrees.Accessibility.hpp"
。但是包含include文件没有任何作用。
我已将问题追溯到VirtualTrees.Accessibility.pas
文件,并且在hpp文件中缺少此代码的同时,它执行了几行代码以在Delphi中注册默认可访问性提供程序。因此,包含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 ++将非常感激。
基于此链接的研究结果,Remy Lebeau的回答:
The initialization part is not called
以及VirtualTree GitHub上的未解决问题:
https://github.com/Virtual-TreeView/Virtual-TreeView/issues/951
我在这里分享一个解决方案,可以通过以下任何一种方法来实现:
方法A
通过致电:
TVirtualTreeAccessibility::RegisterDefaultAccessibleProviders();
根据Joachim Marder的建议,在cpp文件中的某个位置
方法B
通过添加:
#pragma link "VirtualTrees.Accessibility"
在cpp源文件中]
方法C
通过添加类似内容:
{$HPPEMIT '#pragma link "VirtualTrees.Accessibility"'}
在VirtualTrees.Accessibility.pas
源代码中