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

投稿時間:2004/04/13(Tue) 16:11
投稿者名:kamurin
Eメール:kamurin@hotmail.com
URL :
タイトル:
Tab移動
Enterキーを押したときに、フォーカスを次のTabIndexのコントロールに飛ばしたいのですが、
全てのコントロールのKeyPressに処理を書くしか無いでしょうか?

FormのKeyPreviewをTrueにして、
FormのKeyPressでEnterキーをとって、
フォーカスを次のTabIndexのコントロールに、
という感じに出来ればいいと思うのですが、
[フォーカスを次のTabIndexのコントロールに飛ばす]処理が思いつきません。

select case でベタ書きとかじゃないのがあれば、
宜しくお願いします。

投稿時間:2004/04/13(Tue) 17:26
投稿者名:GOD
Eメール:
URL :
タイトル:
Re: Tab移動
> Enterキーを押したときに、フォーカスを次のTabIndexのコントロールに飛ばしたいのですが、
> 全てのコントロールのKeyPressに処理を書くしか無いでしょうか?
>
> FormのKeyPreviewをTrueにして、
> FormのKeyPressでEnterキーをとって、
>
FormのKeyPressでEnterキーが取得可能なコントロールという条件なら
Private Sub Form_KeyPress(KeyAscii As Integer)
    Dim CtrlObj As Object

    If KeyAscii = vbKeyReturn Then
        Set CtrlObj = Me.ActiveControl
        CtrlObj.Enabled = False
        CtrlObj.Enabled = True
    End If
End Sub
↑のような感じですね。
ただ、ボタン系統のコントロールはEnterを押下してもボタン押下イベントが働いてEnter取得
できないと思いますけど・・・
サブクラス化すれば処理できるようになるのかな?(←未確認)

投稿時間:2004/04/14(Wed) 18:12
投稿者名:kamurin
Eメール:kamurin@hotmail.com
URL :
タイトル:
有難うございました。
有難うございました。
> ただ、ボタン系統のコントロールはEnterを押下してもボタン押下イベントが働いてEnter取得
> できないと思いますけど・・・

ボタン系統のコントロールは各コントロールにべた書きすることにしました。
Enter取得できるコントロールはEnabledの切り替えでいきます。

投稿時間:2004/04/14(Wed) 18:48
投稿者名:ひでかず
Eメール:
URL :
タイトル:
Re: 有難うございました。
> 有難うございました。
> > ただ、ボタン系統のコントロールはEnterを押下してもボタン押下イベントが働いてEnter取得
> > できないと思いますけど・・・
>
> ボタン系統のコントロールは各コントロールにべた書きすることにしました。
> Enter取得できるコントロールはEnabledの切り替えでいきます。

formのプロパティkeyPreviewをTrueにして、

Form_KeyPressの中などで
SendKeys "{TAB}"
を使ってもできます。
こんな感じで↓

Private Sub Form_KeyPress(KeyAscii As Integer)
 If KeyAscii = vbKeyReturn Then
  KeyAscii = 0
  SendKeys "{TAB}"
 End If
End Sub