フック一覧 Close (画面フック) | 前の画面フック 次の画面フック |
VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)
この画面フックメソッドは、主にアプリフレームと呼ばれる画面アプリのための上位フレームワークを設計する方々がお使いになるものです。一般のアプリ開発者の方々は、上位フレームワーク設計者から示された情報があれば、必ずしもここの内容を詳細に知る必要はありません。
◇ 役割 (この画面フックメソッドに委託されている処理)
この画面アプリ全体にかかわるファイルまたはデータベースのクローズなどの閉鎖処理を行う。
◇ 配置 (ツーピーススタイルの場合にこの画面フックメソッドをどこに配置できるか)
ローカルピースに配置するか、または配置しない。セントラルピースに配置することは禁止されている。
◇ 代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)
VB での書き方:
Friend Function Close(パラメタ宣言列) As Integer
または
Friend Function 画面略称_Close(パラメタ宣言列) As Integer
C# での書き方:
internal int Close(パラメタ宣言列)
または
internal int 画面略称_Close(パラメタ宣言列)
Java での書き方:
int Close(パラメタ宣言列)
または
int 画面略称_Close(パラメタ宣言列)
なお、フック名としては、Close の他に閉鎖を用いることができる。
◇ 呼び出される契機 (以下が切っ掛けとなりこのフックメソッドが呼び出される)
アプリ操作者からこの画面に対して EndCm 指示がなされたとき。 項目フックメソッド Close よりも後に呼び出される。 画面フックメソッド CloseBLcl および項目フックメソッド CloseBLcl よりも後に呼び出される。
EndCm 指示とは、アプリ操作者がボタン Cm_EndCm をクリックすること、またはメニュー項目 Mn_EndCm をクリックすることか、これに相当する操作 (対応するショートカットキーの押下) をすること、または EndCm に対応づけられたファンクションキーを押下することを意味する。
◇ 戻り値の意味とデフォルト動作 (戻り値による FormBase への伝言)
FormBase.CLOSE_Allow (= -1): この画面プログラムの終了を許可せよ。 ただし、基底フォームでない場合には、FormBase.CLOSE_Hide が指定されたものとみなされて、このフォームの親フォームを含む画面プログラムの終了とはならない。
FormBase.CLOSE_Deny (= 0): この画面の終了処理をキャンセルせよ。FormBase は、この伝言を受けると、アプリ操作者からなされた EndCm 指示を無視して、指示がなされなかったかのように振る舞う。つまり、アプリ操作者からなされた EndCm 指示は無効になる。 ただし、プログラムの中で Hide メソッドを発した場合などのように、終了処理のキャンセルが不能な場合には、終了処理は行われることになってしまう。
FormBase.CLOSE_Hide (= 1): この画面が表示されない状態にせよ。 その際に、この画面をメモリ上から破棄するための終了処理は行わないようにしておき、後で画面を使いまわすことができる余地を残すようにせよ。 ただし、基底フォームで、なおかつ Shell メソッドまたはアプリ操作者からの指示によって直接起動されたフォームの場合には、FormBase.CLOSE_Allow が指定されたものとみなされて、この画面プログラムの終了となる。
デフォルト動作: Close 画面フックメソッドが組み込まれていない場合の動作は、FormBase.CLOSE_Allow が設定された場合と同様である。
開始閉鎖許諾チェックオプションがオンかオフかにかかわらず、戻り値の指定は有効である。
◇ 代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)
メッセージコード: "ENDCK"
"終了すると、 インプット途中のデータが有効になりません。"
メッセージコード: "ENDCM"
"終了します。"
◇ 使用上のヒントと注意事項
特定の項目固有の閉鎖処理は、この画面フックメソッドではなく、項目フックメソッド Close, または CloseBLcl で行ってください。
セントラル側で行う閉鎖処理は、この画面フックメソッドではなく、画面フックメソッド CloseBLcl,または項目フックメソッド CloseBLcl で行ってください。
このフックメソッドの中で、プログラムの終了を拒否することにした場合は、適当なメッセージをアプリ操作者に向けて発してから、戻り値を FormBase.CLOSE_Deny にしてください。
なお、アプリ操作者は、何のメッセージも示されないと、自分の指示どおりにプログラムが終了するものと期待する。このフックメソッドの本来の役割は、この期待に応えてプログラム終了処理を進めることである。
この中でメソッド SetFocusLogically を呼び出した場合には、画面フックメソッド Close (本フックメソッド) の戻り値が FormBase.CLOSE_Deny の場合に限って効果を発揮する。
◇ 関連事項
閉鎖処理に関係するフックメソッドには、 画面フックメソッド Close (本フックメソッド),項目フックメソッド Close,画面フックメソッド CloseBLcl,項目フックメソッド CloseBLcl の四つがある。
この画面フックメソッドは、画面フックメソッド Open と対をなす。
◇ 使用例
' 受注業務画面に関するローカル側の後始末処理 ・・・ を行う。 Friend Function 閉鎖() As Integer 'ヘルプを閉じる。 Const HELP_QUIT As Integer = &H2 'Terminate HELP Dim Y As Integer = WinHelp(CType(fB.myForm, Fr_受注業務).Handle.ToInt32(), "Dummy", HELP_QUIT, 0) ' Return FormBase.CLOSE_Allow End Function ' 閉鎖
// 受注業務画面に関するローカル側の後始末処理を行う。 internal int 閉鎖( ) { // (ここにクローズ時に行う処理を記述します。) return FormBase.CLOSE_Allow; } // 閉鎖
// 受注業務画面に関するローカル側の後始末処理を行う。 int 閉鎖( ) { // (ここにクローズ時に行う処理を記述します。) return FormBase.CLOSE_Allow; } // 閉鎖