Share via


ICE23

ICE23 は、各ダイアログ ボックスのコントロール タブ オーダーを検証します。

ICE23 は、Dialog テーブルControl テーブルで次のことを検証します。

  • Dialog テーブル内のすべてのレコードにより、Dialog 列で指定されたダイアログ ボックスに存在する Control_First 列のコントロールが指定される。
  • Control テーブル内のすべてのレコードが、Control 列に表示されているコントロールと同じダイアログにある Control_Next 列のコントロールを指定するか、Control_Next に Null 値が含まれている。
  • Control テーブル内のコントロールからコントロールへ Control_Next エントリをたどると、最初のコントロールに戻る単一の閉じたループが作成される。 すべてのコントロールがループ内にある必要はないが、ループは、Control_Next 列にエントリを持つすべてのコントロールを通過する必要がある。

結果

コントロールのタブ オーダーがダイアログ ボックスで 1 つの閉じたループを形成しない場合、ICE23 によりエラー メッセージが投稿されます。

ICE23 では、ここに示す例に対して次のエラー メッセージが投稿されます。

  • Dialog1 には Control_First がありません。
  • ダイアログ Dialog2 の Control_First は、存在しない ControlX を参照しています。
  • Dialog3 には、コントロール ControlB に行き止まりのタブ オーダーがあります。
  • Dialog4 のコントロール ControlC のタブ オーダーの形式が正しくありません
  • Dialog5 のコントロール ControlC のタブ オーダーの形式が正しくありません。
  • コントロール 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 エントリをコントロールからコントロールにたどっても、すべてのケースで初期コントロールに戻るわけではありません。 ControlA を参照するには、Dialog4 の ControlC の Control_Next 列を変更してください。

Control テーブル内の Control_Next エントリを、コントロールからコントロールにたどっても、Control_Next 列にエントリがあるダイアログ ボックスのすべてのコントロールを通過するわけではありません。 Dialog5 の ControlC の Control_Next 列を ControlD に変更してください。

Control_Next は、Control 列に一覧表示されているコントロールと同じダイアログ内にある有効なコントロールを参照しません。 ControlD を参照するには、Dialog6 の ControlC の Control_Next 列を変更してください。

ICE リファレンス