相关疑难解决方法(0)

在Delphi中创建可访问的UI组件

我试图从标准的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)

delphi accessibility delphi-2006 msaa delphi-xe3

20
推荐指数
2
解决办法
3868
查看次数

标签 统计

accessibility ×1

delphi ×1

delphi-2006 ×1

delphi-xe3 ×1

msaa ×1