ICE23
ICE23 验证每个对话框的控件选项卡顺序。
ICE23 在 Dialog 表 和 Control 表中验证以下内容:
- Dialog 表中的每条记录都指定了对话框列所指定的对话框中存在的Control_First列中的控件。
- 控件表中的每条记录都指定与控件列中列出的控件位于同一对话框中的Control_Next列中的控件,或Control_Next包含 Null 值。
- 在控件表中从控件到控件的Control_Next项之后,会创建返回初始控件的单个闭合循环。 并非每个控件都需要在循环中,但循环必须传递每个控件,该控件在Control_Next列中有一个条目。
结果
如果控件的 Tab 键顺序未在对话框中形成单个闭合循环,则 ICE23 会发布错误消息。
例
ICE23 将为所示的示例发布以下错误消息。
- Dialog1 没有Control_First。
- 对话框对话框 2 的Control_First是指不存在的 ControlX。
- Dialog3 在 ControlB 上具有死端选项卡顺序。
- Dialog4 在 ControlC 处的 Tab 键顺序格式不正确
- Dialog5 在 ControlC 上出现格式不正确的选项卡顺序。
- Control_Next控件 Dialog6.ControlC 链接到未知控件。
对话框表(部分)
对话 | Control_First |
---|---|
Dialog1 | |
Dialog2 | ControlX |
Dialog3 | ControlA |
Dialog4 | ControlA |
Dialog5 | ControlA |
控制表(部分)
对话 | 控制 | 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 |
若要修复这些错误,请记下上述表中的以下内容并做出指示的更改。
对话表中的每一行都没有在Control_First列中指定的控件。 将 Dialog1 记录的Control_First列更改为 Dialog1 中存在的控件。
对话框表中的每一行都没有在对话框中存在的Control_First列中指定的控件。 将 Dialog2 的Control_First列更改为 Dialog2 中存在的控件。
在控件表中Control_Next项之后,控件表中的项在每种情况下都不会创建一个闭合循环。 将 Dialog3 中 ControlB 的 Control_Next 列更改为 ControlA。
在控件表中的Control_Next项从控件到控件之后,不会在每个情况下返回初始控件。 更改 Dialog4 中 ControlC 的Control_Next列以引用 ControlA。
在控件表中从控件到控件的Control_Next项之后,不会通过对话框中具有Control_Next列中的条目的每个控件传递。 将 Dialog5 中 ControlC 的 Control_Next 列更改为 ControlD。
Control_Next不引用与控件列中列出的控件位于同一对话框中的有效控件。 更改 Dialog6 中 ControlC 的 Control_Next 列以引用 ControlD。
相关主题