[リストへもどる]
一括表示

投稿時間:2004/03/12(Fri) 02:18
投稿者名:寝タロ
Eメール:
URL :
タイトル:
MSFlexGrid上の→↑←↓について
こんにちは、


MSFlexGrid関係の質問なのですが、

MSFlexGrid上にフォーカスがある時
→↑←↓のキーを押すとセルが上下左右に移動しますが
そのキーに追随して別のコントロールも動かしたいのですが、
MSFlexGridのイベントで、→↑←↓のキーを押した時のイベントは
無いのでしょうか???
因みに、KeyDownイベントでは、→↑←↓のキーを押した時のイベントは
発生しませんでした。

もしかして、私のMSFlexGrid上のプロパティの設定が足りないのかなと思い。
色々プロパティを変更してみたのですが、
→↑←↓のキーを押した時のイベントは発生しませんでした。
(見つけられませんでした。)

RowColChangeイベントも考えたのですが、MSFlexGrid内の隅に移動すると
RowとColの変更が無いのでイベントが発生しません。

VB逆引きヘルプを見せて頂いてると
別のコントロールにフォーカスを移し(TextBox)、
間接的に移動する方法が、あったのですが、
MSFlexGrid上にフォーカスがある時の、
→↑←↓のキーを押した時のイベント認識は、
無理なのでしょうか?

宜しく、お願いします。

投稿時間:2004/03/12(Fri) 09:26
投稿者名:黒影
Eメール:
URL :
タイトル:
Re: MSFlexGrid上の→↑←↓について

> MSFlexGrid関係の質問なのですが、
>
> MSFlexGrid上にフォーカスがある時
> →↑←↓のキーを押すとセルが上下左右に移動しますが
> そのキーに追随して別のコントロールも動かしたいのですが、
> MSFlexGridのイベントで、→↑←↓のキーを押した時のイベントは
> 無いのでしょうか???
> 因みに、KeyDownイベントでは、→↑←↓のキーを押した時のイベントは
> 発生しませんでした。

確認はしてませんが、SelChange で出来ませんか?

投稿時間:2004/03/12(Fri) 11:23
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: MSFlexGrid上の→↑←↓について
> 確認はしてませんが、SelChange で出来ませんか?

SelChange イベントで押した事は認識できますのでAPIを使って
どのキーを押したか取得すればいいようですね。

Option Explicit
Private Declare Function GetKeyState Lib "user32" _
    (ByVal nVirtKey As Long) As Integer
Private Const VK_LEF = &H25     '←
Private Const VK_UP = &H26      '↑
Private Const VK_RIGHT = &H27   '→
Private Const VK_DOWN = &H28    '↓

Private Sub MSFlexGrid1_SelChange()
    If GetKeyState(VK_LEF) < 0 Then
        MsgBox "← キーが押されました"
    ElseIf GetKeyState(VK_UP) < 0 Then
        MsgBox "↑ キーが押されました"
    ElseIf GetKeyState(VK_RIGHT) < 0 Then
        MsgBox "→ キーが押されました"
    ElseIf GetKeyState(VK_DOWN) < 0 Then
        MsgBox "↓ キーが押されました"
    End If
End Sub

投稿時間:2004/03/12(Fri) 23:02
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Re^3: MSFlexGrid上の→↑←↓について
ありがとうございました。

出来ました。

こんなに、簡単だなんて。

ひとつ勉強になりました。

黒影さん、花ちゃんさん
即答して頂き
ありがとうございました。

では。では。

投稿時間:2004/03/12(Fri) 23:51
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Re^4: MSFlexGrid上の→↑←↓について
すいません、早とちりでした。

実際、少し動かしていると、
最初の書き込みでも書いた様に

>RowColChangeイベントも考えたのですが、MSFlexGrid内の隅に移動すると
>RowとColの変更が無いのでイベントが発生しません。

の部分で、SelChangeイベントとRowColChangeイベントが
発生しない為、やはり、↑←↓→は認識されませんでした。

MSFlexGridの、Col = 0、Row = 0 の時、←とか↑を押した際の事です。

なぜ、こんな事をと思うかもしれませんが、
Col = 0 の時、←で別のMSFlexGridにフォーカスを移したいと思っています。

やはり、隅にきた場合はイベントは発生しないのでしょうか。

宜しく、お願いします。

投稿時間:2004/03/13(Sat) 01:43
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: MSFlexGrid上の→↑←↓について
取得が必要な時Timer イベントを発生させてその中で取得しては?

投稿時間:2004/03/14(Sun) 21:52
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Re^6: MSFlexGrid上の→↑←↓について
返信が遅れてすいませんでした。


花ちゃんさん、ご返事ありがとうございました。


それで、いこうと思います。
やはり、Timerですね。

フックというテクニックがあると
聞いていたので、
そっち、のコードもみてみたかったですけど。

これで動くので、これでいきたいとおもいます。



ありがとうございました。

では、では、