如何设置与 TEdit 控件关联的可访问名称?
How to set the Accessible Name associated with a TEdit control?
如果用户正在使用屏幕 reader(例如 Microsoft 讲述人),并且他们的焦点进入文本框:
他们听到的是:
Editing text
同时在可访问的应用程序中,
- 例如 Microsoft 文件资源管理器
- Microsoft Word
- 微软Excel
- 微软 Outlook
无障碍系统能够获取控件的 "Accessible Name":
Batch separator. Editing text
这通过 window 实现 IAccessible interface. It obtains a window's implementation of IAccessible by sending the hWnd the WM_GETOBJECT 消息起作用。但是,应用程序从不发送此消息:
Sent by both Microsoft Active Accessibility and Microsoft UI Automation to obtain information about an accessible object contained in a server application.
Applications never send this message directly. Microsoft Active Accessibility sends this message in response to calls to AccessibleObjectFromPoint, AccessibleObjectFromEvent, or AccessibleObjectFromWindow.
但是我们可以处理消息,return一个IAccessible接口给调用者:
case Message.Msg of
WM_GETOBJECT:
begin
if DWORD(Message.LParam) = OBJID_CLIENT then
Message.Result := LResultFromObject(IAccessible, Message.WParam, FAccessible);
end;
end;
在 .NET 世界中,他们围绕 Edit control, exposes a way to set the accessible name of an TextBox using the Control.AccessibleName property:
Control.AccessibleName Property
Gets or sets the name of the control used by accessibility client applications.
public string AccessibleName { get; set; }
我不知道底层 Microsoft Edit 控件如何公开辅助功能。除了 TCustomActionMenuBar.
,我在 VCL 中找不到任何对 IAccessible 的引用
VCL 如何公开辅助功能?
如何设置与 TEdit 控件关联的可访问名称?
如何设置与编辑控件关联的可访问名称?
奖金聊天
可访问项目的 名称 return 通过 read-only IAccessible.accName property.
编辑
Property Access Type Description
-------- ----------- ----------------------------------------------------------
accName Read-only The name of the object. All objects support this property.
See get_accName.
红利阅读
How does the VCL expose accessibility features?
完全没有。
如果你想要这个功能,你必须在你自己的代码中手动实现所有与IAccessible
相关的东西,然后子类化你的VCL控件来响应WM_GETOBJECT
消息,就像你一样显示在你的问题中。
例如:
Creating Accessible UI components in Delphi
如果用户正在使用屏幕 reader(例如 Microsoft 讲述人),并且他们的焦点进入文本框:
他们听到的是:
Editing text
同时在可访问的应用程序中,
- 例如 Microsoft 文件资源管理器
- Microsoft Word
- 微软Excel
- 微软 Outlook
无障碍系统能够获取控件的 "Accessible Name":
Batch separator. Editing text
这通过 window 实现 IAccessible interface. It obtains a window's implementation of IAccessible by sending the hWnd the WM_GETOBJECT 消息起作用。但是,应用程序从不发送此消息:
Sent by both Microsoft Active Accessibility and Microsoft UI Automation to obtain information about an accessible object contained in a server application.
Applications never send this message directly. Microsoft Active Accessibility sends this message in response to calls to AccessibleObjectFromPoint, AccessibleObjectFromEvent, or AccessibleObjectFromWindow.
但是我们可以处理消息,return一个IAccessible接口给调用者:
case Message.Msg of
WM_GETOBJECT:
begin
if DWORD(Message.LParam) = OBJID_CLIENT then
Message.Result := LResultFromObject(IAccessible, Message.WParam, FAccessible);
end;
end;
在 .NET 世界中,他们围绕 Edit control, exposes a way to set the accessible name of an TextBox using the Control.AccessibleName property:
Control.AccessibleName Property
Gets or sets the name of the control used by accessibility client applications.
public string AccessibleName { get; set; }
我不知道底层 Microsoft Edit 控件如何公开辅助功能。除了 TCustomActionMenuBar.
,我在 VCL 中找不到任何对 IAccessible 的引用VCL 如何公开辅助功能?
如何设置与 TEdit 控件关联的可访问名称?
如何设置与编辑控件关联的可访问名称?
奖金聊天
可访问项目的 名称 return 通过 read-only IAccessible.accName property.
编辑Property Access Type Description
-------- ----------- ----------------------------------------------------------
accName Read-only The name of the object. All objects support this property.
See get_accName.
红利阅读
How does the VCL expose accessibility features?
完全没有。
如果你想要这个功能,你必须在你自己的代码中手动实现所有与IAccessible
相关的东西,然后子类化你的VCL控件来响应WM_GETOBJECT
消息,就像你一样显示在你的问题中。
例如:
Creating Accessible UI components in Delphi