別のダイアログボックスを開いたままドキュメントを閉じようとすると、Wordが表示するエラーがときどき表示されますが、その理由を理解することができませんでした。
別のダイアログボックスを開いたままドキュメントを閉じようとすると、Wordが表示するエラーがときどき表示されますが、その理由を理解することができませんでした。
回答:
ほとんどのダイアログボックスは「モーダル」と見なされるため、ダイアログ自体が閉じられるまで、コントロールはメインプログラムまたは呼び出しコンテナに戻されません。これは仕様によるものであり、プログラマーはウィンドウをモーダルまたは非モーダルにするオプションがあります。通常、開いているダイアログが選択(Ok)または中止(Cancel)で処理されるまでメインプログラムが続行できない、または続行しない場合、ウィンドウはモーダルであると定義されます。
ダイアログボックスに次のようなメッセージが表示される場合があります。
文書に変更を加えました。それらを保存しますか?(はい・いいえ)
ここには明らかな正しい答えはありません。誤ってドキュメントを破損した可能性があります(たとえば、猫がキーボード上を歩いた)場合、答えは「いいえ」です。
Wordで最も安全なことは、質問に答えるまで閉じることを拒否することです。
プログラムはこのように設計されているため、アクションを回避するために、ユーザーは望ましくない場合があります。
通常、プログラムでユーザーが何らかのアクションをガイドする必要がある場合、ダイアログボックスが表示されます。保存されていないドキュメントを閉じることは、優れた例です。ダイアログでは、変更を保存するか、変更を破棄するか、閉じることを中止して編集に戻ることができます。プログラムは、この質問に答えずに意図的にクローズすることを拒否します。クローズすると、いくつかのアクションが強制されるためです。プログラムは、例えば、それ自身で決定することはできません。最近の編集を破棄するか、反対に、キーボード入力で正しいバージョンを上書きします。
終了に関係のないダイアログを考慮しても、通常は何らかのプロセスが進行中であり、まだ完了していないことを意味し、ユーザーはどちらに進むかを決定する必要があります。「単純に中止する」ことはできません。なぜなら、中止はユーザーが意図しないアクションでもあるためです。
また、作成者はすべての機能を「安全な方法」で作成する必要がないため、プログラムの設計も簡素化されます。
今日、ほとんどのダイアログは技術的な意味ではモーダルではありません(プログラムが責任を負います)が、プログラムのロジックフローのより広い意味でモーダルにする方が簡単です。
カーテンの後ろで、プログラム(この場合はMS Word)は、ウィンドウの作成時に「Xボタンクリックイベントハンドラー」を作成します。ダイアログウィンドウがある場合、Wordはそれを記録します。次に、Xボタンハンドラーで、Xボタンがクリックされると、記録された開いているダイアログウィンドウをチェックします。ある場合、ハンドラーはクローズ操作を中止します。存在しない場合は、プログラムを終了し、OSはプログラムが使用したメモリをクリーンアップします。これがその仕組みです。