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。

ICE 参考