フック一覧 KeyPreview (画面フック) 前の画面フック 次の画面フック

VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)

KeyPreview 画面フックメソッド

役割 (この画面フックメソッドに委託されている処理)

この画面に対して行われたキーインを傍受 (インタセプト) して、必要ならキーコードがインプットされなかったものとする。

配置 (ツーピーススタイルの場合にこの画面フックメソッドをどこに配置できるか)

ローカルピースに配置するか、または配置しない。セントラルピースに配置することは禁止されている。

代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)

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 にするとキーコードがインプットされなかったものとみなされる。

代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)

(関係する代行メッセージなし)

使用上のヒントと注意事項

関連事項

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