我试图从标准的VCL TEdit控件中检索可访问的信息.get_accName()和Get_accDescription()方法返回空字符串,但get_accValue()返回输入TEdit的文本值.
我刚开始尝试了解MSAA,此时我有点迷失了.
我的TEdit是否需要具有可以向MSA公开的其他已发布属性?如果是这样,那就需要创建一个从TEdit下降的新组件,并添加其他已发布的属性,如"AccessibleName","AccessibleDescription"等......?
另外,请注意,我查看了应该可访问的VTVirtualTrees组件,但MS Active Accessibility Object Inspector仍然看不到AccessibleName已发布属性,即使在该控件上也是如此.
在这一点上,我感到茫然,并对此事的任何建议或帮助表示感谢.
...
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Vcl.ComCtrls,
Vcl.ExtCtrls,
oleacc;
const
WM_GETOBJECT = $003D; // Windows MSAA message identifier
OBJID_NATIVEOM = $FFFFFFF0;
type
TForm1 = class(TForm)
lblFirstName: TLabel;
edFirstName: TEdit;
panel1: TPanel;
btnGetAccInfo: TButton;
accInfoOutput: TEdit;
procedure btnGetAccInfoClick(Sender: TObject);
procedure edFirstNameChange(Sender: TObject);
private
{ Private declarations }
FFocusedAccessibleObj: IAccessible;
FvtChild: Variant;
FAccProperties: TStringList;
FAccName: string;
FAccDesc: string;
FAccValue: string;
procedure DoGetAccessibleObjectFromPoint(aPoint: TPoint); …Run Code Online (Sandbox Code Playgroud)