- 日時: 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★ さん と あき☆彡 さんの投稿分)
|