フック一覧 KeyPreview (項目フック) | 前の項目フック 次の項目フック |
VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)
◇ 役割 (この項目フックメソッドに委託されている処理)
この項目に対して行われたキーインを傍受 (インタセプト) して、必要ならキーコードがインプットされなかったものとする。
◇ 配置 (ツーピーススタイルの場合にこの項目フックメソッドをどこに配置できるか)
ローカルピースに配置するか、または配置しない。セントラルピースに配置することは禁止されている。
◇ 代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)
VB での書き方:
Friend Function KeyPreview(パラメタ宣言列) As Boolean
または
Friend Function 項目略称_KeyPreview(パラメタ宣言列) As Boolean
パラメタ宣言列の中には、この項目フックメソッド固有のパラメタとして ByVal pm_KeyCode As Integer および ByVal pm_Shift As Integer を含めることができる。
C# での書き方:
internal bool KeyPreview(パラメタ宣言列)
または
internal bool 項目略称_KeyPreview(パラメタ宣言列)
パラメタ宣言列の中には、この項目フックメソッド固有のパラメタとして int pm_KeyCode および int pm_Shift を含めることができる。
Java での書き方:
boolean KeyPreview(パラメタ宣言列)
または
boolean 項目略称_KeyPreview(パラメタ宣言列)
パラメタ宣言列の中には、この項目フックメソッド固有のパラメタとして int pm_KeyCode および int pm_Shift を含めることができる。
pm_KeyCode には、インプットされたキーコードが設定されている。
pm_Shift には、Shift キーなら 1, Ctrl キーなら 2, Alt キーなら 4 が設定されている。そして、これらのキーを組み合わせた場合には、たとえば Ctrl キーと Alt キーなら 6 というように、合計の数値になる。
◇ 呼び出される契機 (以下が切っ掛けとなりこのフックメソッドが呼び出される)
この項目に対してキーインが行われたとき。
◇ 戻り値の意味とデフォルト動作 (戻り値による ItemBase への伝言)
KeyPreView の戻り値を True にするとキーコードがインプットされなかったものとみなされる。
◇ 代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)
(関係する代行メッセージなし)
◇ 使用上のヒントと注意事項
この項目に対応するコントロールは、TextBox でなければならない。
◇ 関連事項
MANDALA V6 と次の点が非互換である。イベントハンドラ KeyDown および KeyPress の仕様変更 (非互換点) のために、VB 6.0 では可能であったフックメソッド KeyPreview の中でのキーコードの変更ができなくなった。そして、これに伴い、フックメソッド KeyPreview の固有パラメタ pm_KeyCode および pm_Shift に ByRef 指定をすることができなくなった。
◇ 使用例
Friend Function JutyuCd_KeyPreview(ByVal pm_KeyCode As Integer, _ ByVal pm_Shift As Integer, _ ByVal fB As FormBase) As Boolean If pm_Shift <> 0 Then Return True ' Select Case pm_KeyCode Case System.Windows.Forms.Keys.Up If fB.De2 = 0 Then fB.PerformCommand(Ae_MsgL0.COMMAND_Prev) fB.SetCursor(FormBase.CURSOR_InitialPosition) Return True End If Case System.Windows.Forms.Keys.Down If fB.De2 = fB.MaxDspC Then fB.PerformCommand(Ae_MsgL0.COMMAND_NextCm) fB.SetCursor(FormBase.CURSOR_InitialPosition) Return True End If End Select ' Return False End Function ' KeyPreview
internal bool JutyuCd_KeyPreview( int pm_KeyCode, int pm_Shift, FormBase fB ) { if (pm_Shift != 0) return true; // switch (pm_KeyCode) { case (int)System.Windows.Forms.Keys.Up: if (fB.De2 == 0) { fB.PerformCommand(Ae_MsgL0.COMMAND_Prev); fB.SetCursor(FormBase.CURSOR_InitialPosition); return true; } break; case (int)System.Windows.Forms.Keys.Down: if (fB.De2 == fB.MaxDspC) { fB.PerformCommand(Ae_MsgL0.COMMAND_NextCm); fB.SetCursor(FormBase.CURSOR_InitialPosition); return true; } break; } // return false; } // KeyPreview
boolean JutyuCd_KeyPreview( int pm_KeyCode, int pm_Shift, FormBase fB ) throws Exception { if (pm_Shift != 0) return true; // switch (pm_KeyCode) { case KeyEvent.VK_UP: if (fB.De2 == 0) { fB.PerformCommand(Ae_MsgL0.COMMAND_Prev); fB.SetCursor(FormBase.CURSOR_InitialPosition); return true; } case KeyEvent.VK_DOWN: if (fB.De2 == fB.MaxDspC) { fB.PerformCommand(Ae_MsgL0.COMMAND_NextCm); fB.SetCursor(FormBase.CURSOR_InitialPosition); return true; } } // return false; } // KeyPreview