Microsoft Access Club >SampleFile Q & A >インデックス >このページ >次頁 < 前項

Q&A-Help002 ビット マスクとしての組み込み定数



引数 Button や引数 Shift の値を調べるには、ビット マスク (ビット マスク : ビット フィールドの値のそれぞれのビットの状態をテストしたり、設定またはリセットしたりするための値。ビット処理演算子 (And、Eqv、Imp、Not、Or、および Xor) と組み合わせて指定します。)を使います。

引数 Button は、ビット フィールドになっています。

最下位ビットから順にビット 0 が左ボタン、ビット 1 が右ボタン、ビット 2 が中央ボタンに対応しているので、各ボタンを示す値は、左ボタンが 1、右ボタンが 2、中央ボタンが 4 になります。イベントに対応するボタンの 1 ビットだけが設定されます。

次の組み込み定数 (組み込み定数 : Access、VBA、ADO、または DAO によって提供される定数。これらの定数は、各ライブラリの <グローバル> をクリックして、オブジェクト ブラウザで利用することができます。)が、引数 Button のビット マスクとして用意されています。

 

定数
acLeftButton 1
acRightButton 2
acMiddleButton 4

 

引数 Shift も、ビット フィールドになっています。

最下位ビットから順にビット 0 が Shift キー、ビット 1 が Ctrl キー、ビット 2 が Alt キーに対応しているので、各キーを示す値は、Shift キーが 1、Ctrl キーが 2、Alt キーが 4 になります。各ビットは重複して設定することができ、引数 Shift にはイベント発生時に押されていたキーの値を合計した値が渡されます。
たとえば、Ctrl キーと Alt キーが押されているとき、引数 Shift の値は 6 になります。

次の組み込み定数が、引数 Shift のビット マスクとして用意されています。

 

定数
acShiftMask 1
acCtrlMask 2
acAltMask 4

 

ボタンやキーが組み合わされて押された場合は、その組み合わせに応じたビット フィールドが設定されますが、これらの組み込み定数を使うと、ビット フィールドを意識せずにキーの組み合わせを検出することができます。ボタンやキーが押されると、対応するビットが設定されます。

 

使用例

次の使用例では、Shift キー、Ctrl キー、または Alt キーが押されたかどうかを調べます。

次の使用例の実行結果を確認するには、[キーハンドラ] という名前のテキスト ボックスが配置されたフォームに対し、次のイベント プロシージャを追加します。

 

Private Sub キーハンドラ_KeyDown(KeyCode As Integer, Shift As Integer)

    Dim intShiftDown As Integer
    Dim intAltDown As Integer
    Dim intCtrlDown As Integer

    ' ビット マスクを使って、押されたキーを調べます。
    intShiftDown = (Shift And acShiftMask) > 0
    intAltDown = (Shift And acAltMask) > 0
    intCtrlDown = (Shift And acCtrlMask) > 0

    ' 押されたキーを示すメッセージを表示します。
    If intShiftDown Then MsgBox "Shift キーが押されました。"
    If intAltDown Then MsgBox "Alt キーが押されました。"
    If intCtrlDown Then MsgBox "Ctrl キーが押されました。"

End Sub


 


Q&A-Help001 ビット マスクとしての組み込み定数


-Microsoft Access Club-