ICE23
ICE23 验证每个对话框的控件 Tab 键顺序。
ICE23 验证 Dialog 表和 Control 表中的以下内容:
- Dialog 表中的每条记录都在 Control_First 列中指定一个控件,该控件存在于由 Dialog 列指定的对话框中。
- Control 表中的每条记录都在 Control_Next 列中指定一个控件,该控件与 Control 列中列出的控件位于同一对话框中,或者 Control_Next 包含 Null 值。
- 按照 Control 表中的 Control_Next 条目从一个控件移动到另一个控件,可形成一个可返回到初始控件的单一封闭循环。 并非每个控件都需要在循环中,但循环必须经过在 Control_Next 列中具有条目的每个控件。
如果控件的 Tab 键顺序没有在对话框中形成一个单一的封闭循环,ICE23 会发布错误消息。
对于显示的示例,ICE23 会发布以下错误消息。
- Dialog1 没有 Control_First。
- 对话框 Dialog2 的 Control_First 引用不存在的控件 ControlX。
- Dialog3 的控件 ControlB 的 Tab 键顺序为空。
- Dialog4 的控件 ControlC 的 Tab 键顺序不正确
- Dialog5 的控件 ControlC 的 Tab 键顺序不正确。
- Dialog6 的控件 ControlC 的 Control_Next 链接到未知控件。
Dialog 表(部分)
对话框 | Control_First |
---|---|
Dialog1 | |
Dialog2 | ControlX |
Dialog3 | ControlA |
Dialog4 | ControlA |
Dialog5 | ControlA |
Control 表(部分)
对话框 | 控制 | Control_Next |
---|---|---|
Dialog1 | ControlA | |
Dialog1 | ControlB | ControlA |
Dialog2 | ControlA | ControlB |
Dialog2 | ControlB | ControlA |
Dialog3 | ControlA | ControlB |
Dialog3 | ControlB | |
Dialog4 | ControlA | ControlB |
Dialog4 | ControlB | ControlC |
Dialog4 | ControlC | ControlB |
Dialog5 | ControlA | ControlB |
Dialog5 | ControlB | ControlC |
Dialog5 | ControlC | ControlA |
Dialog5 | ControlD | ControlA |
Dialog6 | ControlA | ControlB |
Dialog6 | ControlB | ControlC |
Dialog6 | ControlC | ControlX |
Dialog6 | ControlD | ControlA |
要修复这些错误,请注意上表中的以下问题并进行指示的更改。
并非 Dialog 表中的每一行都在 Control_First 列中指定了一个控件。 将 Dialog 表中 Dialog1 记录的 Control_First 列更改为 Dialog1 中存在的控件。
并非 Dialog 表中的每一行都在 Control_First 列中指定了一个对话框中存在的控件。 将 Dialog2 的 Control_First 列更改为 Dialog2 中存在的控件。
并非在所有情况下,按照 Control 表中的 Control_Next 条目从一个控件移动到另一个控件都会形成封闭循环。 将 Dialog3 中 ControlB 的 Control_Next 列更改为 ControlA。
并非在所有情况下,按照 Control 表中的 Control_Next 条目从一个控件移动到另一个控件都可返回到初始控件。 将 Dialog4 中 ControlC 的 Control_Next 列更改为引用 ControlA。
按照 Control 表中的 Control_Next 条目从一个控件移动到另一个控件时,不会经过话框中在 Control_Next 列中具有条目的每个控件。 将 Dialog5 中 ControlC 的 Control_Next 列更改为 ControlD。
Control_Next 引用的控件不是与 Control 列中列出的控件位于同一对话框中的有效控件。 将 Dialog6 中 ControlC 的 Control_Next 列更改为引用 ControlD。