| 
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2012/12/28 12:18
名前: Yacrin
 
************************************************************************************ カテゴリー:[テキストボックス][キー操作][]                                      *
 * キーワード:TextBox,フォーカス移動,エンターキー,Enter,タブ移動                  *
 ***********************************************************************************
 '==================================================================================
 '投 稿 日:2012/12/28 12:18
 '投 稿 者:Yacrin
 'タイトル:EnterキーのTab動作扱い (VB6.0)
 '動作確認:Windows Vista / Windows 7 / VB6.0(SP6)
 '==================================================================================
 
 今さらですが、VB6でのEnterキーのTab動作扱いの事です。
 業務使用での大量のバッチ入力作業ではどうしてもTabの代わりに
 Enterキーが必要です。そこで、連続の「Shift + Enter」での逆移動
 等、今までとは少し違った方法でのEnterをTabキーに完全に対応させた
 サンプルをご紹介します。
 
 '//モジュール変数
 Dim mKeyDownStatus  As Integer
 Dim mKeyPressStatus As Integer
 
 '//フォームのKeyPreview = True にして。
 
 Private Function Get_KeyDownStatus(ByVal wc As Integer, _
 ByVal ws As Integer) As Integer
 '//移動コード生成
 Get_KeyDownStatus = wc * 10 + ws
 End Function
 
 Private Sub KeyStatusClear()
 '//移動コード生成
 mKeyDownStatus = 0
 mKeyPressStatus = 0
 End Sub
 
 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 mKeyDownStatus = Get_KeyDownStatus(KeyCode, Shift)
 If KeyCode = vbKeyReturn Then
 '//EnterでTabシミュレート
 SendKeys "{Tab}"        '//SendMessage等を推奨
 KeyCode = 0
 End If
 
 '//以下省略
 End Sub
 
 Private Sub Form_KeyPress(KeyAscii As Integer)
 mKeyPressStatus = Get_KeyDownStatus(KeyAscii, 0)
 If mKeyDownStatus = 130 Or mKeyDownStatus = 131 Then
 KeyAscii = 0
 Else
 KeyStatusClear
 End If
 End Sub
 
 Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
 '//連続の「Shift + Tab」対応用、
 '//これがないと、一度Shiftキーを押してしまうと残ってしまうためです。
 '//また、Enterキーの時もクリアしてTabキーの判定に備えます。
 If KeyCode = 16 Or mKeyPressStatus = 130 Then
 KeyStatusClear
 End If
 End Sub
 
 Private Sub Text1_Validate(Index As Integer, Cancel As Boolean)
 Dim wcd As Integer: wcd = mKeyDownStatus + mKeyPressStatus
 '//wcd = 260 の時、Enterで順移動しようとしている
 '//wcd =  0 の時、Tab  で順移動しようとしている
 '//wcd = 161 の時、Shift + Tab  で逆移動しようとしている
 '//wcd = 261 の時、Shift + Enterで逆移動しようとしている
 
 '//通常は wcd = 26 or wcd = 0 で順移動、それ以外は逆移動として判断
 '//逆移動の時、TabIndex = 0 の項目は Cancel = True にしたりできます。
 
 '//以下省略
 End Sub
 
 以上です。
 
 
 ------------------------------------- by 花ちゃん -----------------------------
 同様のコードは、下記にも掲載してあります。
 http://www.hanatyan.sakura.ne.jp/vbhlp/ibe_keyidou.htm
 http://www.hanatyan.sakura.ne.jp/vbhlp/ReMoveTab.htm
 
 http://hanatyan.sakura.ne.jp/patio/read.cgi?no=31 (NAO★ さん と あき☆彡 さんの投稿分)
 
  |