ICE23
ICE23 validates the control tab order for each dialog box.
ICE23 validates the following in the Dialog table and Control table:
- That every record in the Dialog table specifies a control in the Control_First column that exists in the dialog box specified by the Dialog column.
- That every record in the Control table specifies a control in the Control_Next column that is on the same dialog as the control listed in the Control column, or Control_Next contains the Null value.
- That following the Control_Next entries from control to control in the Control table makes a single, closed, loop that comes back to the initial control. Not every control needs to be in the loop, but the loop must pass through every control that has an entry in the Control_Next column.
Result
ICE23 posts an error message if the tab order of controls does not form a single closed loop in the dialog box.
Example
ICE23 would post the following error messages for the example shown.
- Dialog1 has no Control_First.
- Control_First of dialog Dialog2 refers to nonexistent control ControlX.
- Dialog3 has dead-end tab order at control ControlB.
- Dialog4 has malformed tab order at control ControlC
- Dialog5 has malformed tab order at control ControlC.
- Control_Next of control Dialog6.ControlC links to unknown control.
Dialog Table (partial)
Dialog | Control_First |
---|---|
Dialog1 | |
Dialog2 | ControlX |
Dialog3 | ControlA |
Dialog4 | ControlA |
Dialog5 | ControlA |
Control Table (partial)
Dialog | 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 |
To fix these errors note the following in the above tables and make the indicated changes.
Not every row in the Dialog table has a control specified in the Control_First column. Change the Control_First column of the Dialog1 record in the Dialog table to a control that exists in Dialog1.
Not every row in the Dialog table has a control specified in the Control_First column that exists on the dialog box. Change the Control_First column of the Dialog2 to a control that exists in Dialog2.
Following the Control_Next entries in the Control table from control to control does not make a closed loop in every case. Change the Control_Next column for ControlB in Dialog3 to ControlA.
Following the Control_Next entries in the Control table from control to control does not lead back to the initial control in every case. Change the Control_Next column for ControlC in Dialog4 to refer to ControlA.
Following the Control_Next entries in the Control table from control to control does not pass through every control in the dialog box having an entry in the Control_Next column. Change the Control_Next column for ControlC in Dialog5 to ControlD.
Control_Next does not refer to a valid control that is in the same dialog as the control listed in the Control column. Change the Control_Next column for ControlC in Dialog6 to refer to ControlD.
Related topics