包 | spark.accessibility |
类 | public class DataGridAccImpl |
继承 | DataGridAccImpl ListBaseAccImpl AccImpl AccessibilityImplementation Object |
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4 |
运行时版本: | Flash Player 10, AIR 1.5 |
创建 Spark DataGrid 之后,其 focusOwner
子对象的 accessibilityImplementation
属性即设置为此类的实例。辅助功能实现放置于该占位符 focusOwner
对象上,以便 DataGrid 的辅助功能实现不掩盖项编辑器的辅助功能实现。DataGrid 组件自身不具有辅助功能实现。需要该步骤,因为 Flash Player 的当前版本不支持 MSAA 对象的多个级别。项编辑器可以是任意组件并需要是全部 MSAA 对象。项编辑器对象会作为 MSAA 树结构中 DataGrid 的同级对象出现。每个项编辑器的辅助功能实现因此通过与该组件相关联的辅助功能实现(如 CheckBox 的 CheckBoxAccImpl
)处理。项编辑器的辅助功能实现仅在存在项编辑器会话时出现,且同时仅可以有一个项编辑器活动;因此,在任意时间具有项编辑器辅助功能实现活动的一个实例,或不存在实例。
在 DataGrid
类中覆盖两种方法,以正确处理 DataGrid
和 DataGrid
的 focusOwner
子级之间的焦点。GridItemRenderer
类将项呈示器的辅助功能关闭,因为默认情况下,会按照 DataGrid 辅助功能实现下的简单对象处理。当其限制非项编辑器组件(如 CheckBox、Panel 等)可以在 DataGrid 中的使用方式时,可防止这些项目显示为 MSAA 树中 DataGrid 的同级。允许所有网格项呈示器显示为 MSAA 树中 DataGrid 的同级后,会使屏幕阅读器的用户感到困惑,因为没有任何上下文或关系。若需要显示这些已启用辅助功能的呈示器,开发人员当然可以覆盖该默认行为。
然后,Flash Player 将使用此类允许诸如屏幕阅读器之类的 MSAA 客户端查看和操作 DataGrid。有关辅助功能实现类和 MSAA 的背景信息,请参阅 mx.accessibility.AccImpl 和 flash.accessibility.AccessibilityImplementation 类。
DataGridAccImpl
扩展 ListBaseAccImpl
(因为 DataGrid
扩展用于扩展 ListBase
类的 DataGridBase
)。Spark DataGridAccImpl
与 MX AdvancedDataGridAccImpl
最为相似,因为 AdvancedDataGrid 也支持 MX DataGrid 所不支持的单个单元格和行选择。
子代
按此顺序,DataGrid 的 MSAA 子代为
- 每个可见标题单元格的一个子代(从左侧开始)。“可见”在此处意味着不是由开发人员隐藏的 (
column.visible=false
)。开发人员未标记为不可见但向下滚动屏幕在此认为“可见”的列标题。 - 在行选择模式下,网格中每个数据行的一个子代;或者
- 在单元格选择模式下,网格中每个单元格的一个子代,不包括不可见(如上所述)列中的单元格。
子代的数量依赖于 dataProvider
中行与列的数量,而不是当前显示在屏幕上的项目数量。
请注意,与 ListBase
不同,DataGrid 子代计数不反映控件的数据行数量。辅助技术因此应避免将 AccChildCount
用作报告行计数的方法。
该属性不是由项编辑器的 DataGrid 辅助功能实现处理的,因为项编辑器对自己进行管理。
角色
DataGrid 的 MSAA 的角色为 ROLE_SYSTEM_LIST
。
DataGrid 中每个数据行或单元格的角色为 ROLE_SYSTEM_LISTITEM
。
DataGrid 中的每个标题单元格的角色为 ROLE_SYSTEM_COLUMNHEADER
。
该属性不是由项编辑器的 DataGrid 辅助功能实现处理的,因为项编辑器对自己进行管理。
名称
DataGrid 的 MSAA 名称默认为一个空字符串。该名称包装在 FormItem
元素中时,即为 FormItem 的标签。要覆盖此行为,请设置 DataGrid 的 accessibilityName
属性。设置 accessibilityName
属性也会将可访问名称应用于代表 DataGrid 的 DataGrid 的 focusOwner
子对象。
每个数据行的名称(在行选择模式下)是表单“_column1Name_: _column1Value_, _column2Name_: _column2Value_, ..., _columnNName_: _columnNValue_, Row _m_ of _n_”的字符串。列使用逗号互相分隔,且列名称和值使用冒号互相分隔。开发人员隐藏的列会从 Name 字符串中完全省略。示例 Name 字符串:“Contact Name: Doug, Contact Phone: 555-1212, Contact Zip: 12345, row 3 of 7”。
请注意,“Row _m_ of _n_”已本地化。
在列 1 中的每个数据单元格的 Name(在单元格选择模式下)是表单“_columnName_: _columnValue_, Row _m_ of _n_”的字符串。例如:“Contact Phone: 555-1212, Row 2 of 5”。随后的列使用相同格式,但省略“Row _m_ of _n_”部分。
请注意,“Row _m_ of _n_”已本地化。
列标题(在单元格或行选择模式下)的 Name 字符串通常是标题文本。例如:“Contact Phone”。但如果网格按相应列进行了排序,则字符串“sorted”或“sorted descending”会追加至列名,以显示排序和方向。例如:“Contact Name sorted”。对于多列排序,级别字符串也追加,用于指示排序列的集合中每个列的级别。例如,如果网格首先按列 3 排序,然后按列 2 排序,其列 2 按降序排序,列 3 的名称以“Sorted Level 1”结束,列 2 的名称以“Sorted descending level 2”结束。本地化指示升序排序、降序排序和排序级别的字符串。
当更改 DataGrid 或其某个项的名称时,DataGrid 将为行或单元格调度具有正确 childID 的 MSAA 事件 EVENT_OBJECT_NAMECHANGE
,或者为其本身调度 0。
如果辅助功能名称不是为项编辑器设置的,则会基于单元格的列标题名称设置一个辅助功能名称。
描述
DataGrid 的 MSAA 描述默认为一个空字符串,但您可以设置 DataGrid 的 accessibilityDescription
属性。
每行、每个单元格或每个标题的说明都是空字符串,且无法由 AccImpl 设置。
该属性不是由项编辑器的 DataGrid 辅助功能实现处理的,因为项编辑器对自己进行管理。
状态
DataGrid 的 MSAA 状态是以下项的组合:
-
STATE_SYSTEM_UNAVAILABLE
(当enabled
为false
时) -
STATE_SYSTEM_FOCUSABLE
(当enabled
为true
时) -
STATE_SYSTEM_FOCUSED
(当enabled
为true
且 DataGrid 具有焦点时) -
STATE_SYSTEM_MULTISELECTABLE
(当allowMultipleSelection
为 true 时)
数据行或单元格的状态是以下项的组合:
-
STATE_SYSTEM_FOCUSABLE
-
STATE_SYSTEM_FOCUSED
(当具有焦点时) -
STATE_SYSTEM_OFFSCREEN
(当行或单元格滚动到屏幕外时) -
STATE_SYSTEM_SELECTABLE
-
STATE_SYSTEM_SELECTED
(当选择该项时)
标题单元格的状态是 STATE_SYSTEM_NORMAL
,因为标题单元格可能无法获得焦点或无法被选中。因为当前已实现,所以标题单元格可能不会报告 STATE_SYSTEM_OFFSCREEN
,即使已移动网格自身,使其标题在屏幕外,也会如此。
当更改 DataGrid 或其某个项的状态时,DataGrid 将为该行或单元格调度具有正确 childID 的 MSAA 事件 EVENT_OBJECT_STATECHANGE
,或者为其本身调度 0。
该属性不是由项编辑器的 DataGrid 辅助功能实现处理的,因为项编辑器对自己进行管理。
值
DataGrid 与其子代(行、单元格和标题)不具有 MSAA 值。
位置
DataGrid 的 MSAA 位置或其中的行、数据单元格或标题单元格是其边界矩形。未定义当前在屏幕上不显示的项目的位置。
该属性不是由项编辑器的 DataGrid 辅助功能实现处理的,因为项编辑器对自己进行管理。
默认操作
DataGrid 没有 MSAA DefaultAction。行或单元格的 MSAA DefaultAction 是“双击”,标题单元格的 MSAA DefaultAction 是“单击”,且请求默认操作字符串时,会返回相应的本地化字符串。
在数据行或单元格上执行默认操作会导致其获得焦点并将其选中,并可能导致其它行为(具体取决于单元格/行类型)。在标题上执行默认操作会导致按相应列将网格进行排序。在标题上重复的默认操作会在升序和降序之间切换排序顺序。在此次编写中,没有通过 AccImpl 安排同时在几个列中进行多级别排序。
该属性不是由项编辑器的 DataGrid 辅助功能实现处理的,因为项编辑器对自己进行管理。
焦点
在网格中没有特定项目(行或单元格,具体取决于选择模式)作为焦点时,焦点返回 0,指示该网格自身已具有焦点。此种情况仅在网格不包含数据时发生。
当行(行选择模式)或单元格(单元格选择模式)具有焦点时,焦点返回设置了焦点的项目的 childID。
当 DataGrid 获得焦点时,其调度 MSAA 事件 EVENT_OBJECT_FOCUS
。焦点在网格中的行或单元格之间移动时也会调度该事件。
项编辑器启动或出现时,焦点更改事件会在项编辑器上触发。保存或关闭项编辑器时,会在 DataGrid 上触发焦点更改事件。
选择
DataGrid 允许选中单个行、单个单元格、多个行或多个单元格,具体取决于 allowMultipleSelection
属性。选择将返回选中项目的整数 childID 数组。
专门选择某项时,该项会调度 MSAA 事件 EVENT_OBJECT_SELECTION
。当单元格(单元格选择模式)或行(行选择模式)添加至当前选择集时,调度的事件为 EVENT_OBJECT_SELECTIONADD
。同样,如果项目(单元格或行)从选择中删除,则已调度事件为 EVENT_OBJECT_SELECTIONREMOVE
。如果所有选择已清除(不管已选择项目的数量),或已执行选择所有或选择区域操作,则已调度事件为 EVENT_OBJECT_SELECTIONWITHIN
。与上述情况都不匹配的任何选择操作会调度 EVENT_OBJECT_SELECTION
。
该属性不是由项编辑器的 DataGrid 辅助功能实现处理的,因为项编辑器对自己进行管理。
选择
accSelect
方法实现通过 MSAA 针对 DataGrid 中涉及选择和/或焦点的更改所进行的请求。DataGrid 的 AccImpl 支持对 DataGrid 其自身的焦点设置,或对 DataGrid 中的某一数据项或数据项集(行或单元格,具取决于选择模式)的焦点设置。支持的操作包括设置焦点,专门选择某一项,以及从选择中添加和删除某一项或项集,所有都按照在 Microsoft Active Accessibility 规范中的定义。在此次编写中,尝试使用 accSelect
扩展在单元格多选择模式下已选择的多单元格区域以同时包括更多行和列,产生的结果与使用鼠标执行相同操作而产生的结果可能不同。
该属性不是由项编辑器的 DataGrid 辅助功能实现处理的,因为项编辑器对自己进行管理。
方法 | 由以下参数定义 | ||
---|---|---|---|
DataGridAccImpl(master:UIComponent)
构造函数。 | DataGridAccImpl | ||
一个 IAccessible 方法,执行与此 AccessibilityImplementation 表示的组件关联的默认操作,或执行该组件的子元素之一的默认操作。 | AccessibilityImplementation | ||
MSAA 方法,返回指定 AccessibilityImplementation 中子元素边框的 DisplayObject 或 Rectangle。 | AccessibilityImplementation | ||
IAccessible 方法,更改此 AccessibilityImplementation 所表示组件中的选定内容。 | AccessibilityImplementation | ||
[静态]
启用 DataGrid 类中的辅助功能。 | DataGridAccImpl | ||
MSAA 方法,返回此 AccessibilityImplementation 所表示组件的默认操作,或该组件的子元素之一的默认操作。 | AccessibilityImplementation | ||
MSAA 方法,返回在组件内具有子焦点的子元素(如果有)的无符号整数 ID。 | AccessibilityImplementation | ||
MSAA 方法,返回此 AccessibilityImplementation 所表示组件的名称或组件子元素之一的名称。 | AccessibilityImplementation | ||
MSAA 方法,返回此 AccessibilityImplementation 所表示组件的名称或组件子元素之一的系统角色。 | AccessibilityImplementation | ||
MSAA 方法,返回包含全部所选子元素的 ID 的数组。 | AccessibilityImplementation | ||
IAccessible 方法,返回此 AccessibilityImplementation 所表示组件的当前运行时状态,或该组件的子元素之一的当前运行时状态。 | AccessibilityImplementation | ||
MSAA 方法,返回此 AccessibilityImplementation 所表示组件的运行时值,或该组件的子元素之一的运行时值。 | AccessibilityImplementation | ||
AccessibilityImplementation | |||
AccessibilityImplementation | |||
返回一个数组,其中包含 AccessibilityImplementation 中所有子元素的无符号整数 ID。 | AccessibilityImplementation | ||
[静态]
用于支持表单辅助功能的方法。 | AccImpl | ||
表示对象是否已经定义了指定的属性。 | Object | ||
[静态]
如果组件的“已启用”设置为 false,则返回 true。 | AccImpl | ||
返回 true 或 false,以表示边框由 x、y、width 和 height 指定的文本对象是否应该视为 AccessibilityImplementation 表示的组件的标签。 | AccessibilityImplementation | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
设置循环操作动态属性的可用性。 | Object | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object |
DataGridAccImpl | () | 构造函数 |
public function DataGridAccImpl(master:UIComponent)
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4 |
运行时版本: | Flash Player 10, AIR 1.5 |
构造函数。
参数master:UIComponent — 此 AccImpl 实例使其具有辅助功能的 UIComponent 实例。
|
enableAccessibility | () | 方法 |
public static function enableAccessibility():void
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4 |
运行时版本: | Flash Player 10, AIR 1.5 |
启用 DataGrid 类中的辅助功能。
此方法将由 MXML 编译器自动生成的应用程序启动代码调用。之后,在初始化 DataGrid 实例时,会将这些实例的 accessibilityImplementation
属性设置为该类的实例。
Tue Jun 12 2018, 11:04 AM Z