VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/10/26(Thu) 22:42
投稿者あっちゃん
Eメール
URL
タイトル配列チェックボックスのkeyPreviewが効かない?

みなさま、ちょっと悩んでいますので相談させてください

質問内容を明確に伝えるために実際に使うフォームは使わず
簡易版で質問させていただきます

開発環境はVB6・WinXPProSP2 使用環境はXP・Windows2003Server・WinNTです

Form1というフォームにcmdEndというコマンドボタン
chkpassというチェックボックスが配列で0〜5で6つ有ります。

なお、フォームのkeyPreviewはTrueにしてあり
TabIndexは0からchkpass(0)→chkpass(1)→…→chkpass(5)→cmdEnd→chkpass(0)
となっています

chkpassにフォーカスがあり、Tabキーあるいは↑↓キーでフォーカスがムーブします。

chkpass(0)にフォーカスがあってShift+tabキーor↑キーを押すとchkpass(6)に
フォーカスがあたるようにしたいです(現在はcmdEnd)
またchkpass(5)にフォーカスがあってtabキーor↓キーを押すとchkpass(0)に
フォーカスがあたるようにしたいです(現在はcmdEnd)

ソースは

Private intindex As Integer  '配列番号を格納

Private Sub Form_Load()
    intindex = 0
End Sub

Private Sub chkpass_GotFocus(Index As Integer)
    '配列番号を取得
    intindex = Index  '★
End Sub

Private Sub chkpass_KeyPress(Index As Integer, KeyAscii As Integer)
    Call fsSpecialfocus(KeyAscii)
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
    Call fsSpecialfocus(KeyAscii)
End Sub

Private Sub fsSpecialfocus(ByVal intascii As Integer)
    Select Case intascii
        Case vbKeyDown  '↓キー
            If intindex = 6 Then
                chkpass(0).SetFocus     'チェックボックス1へセットフォーカス
            End If
        Case vbKeyUp    '↑キー
            If intindex = 1 Then
                chkpass(5).SetFocus     'チェックボックス6へセットフォーカス
            End If
        Case vbKeyTab   'タブキー
            If intindex = 1 Then
                chkpass(5).SetFocus     'チェックボックス6へセットフォーカス
            ElseIf intindex = 6 Then
                chkpass(0).SetFocus     'チェックボックス1へセットフォーカス
            End If
    End Select
End Sub

Private Sub cmdEnd_Click()
    End
End Sub

です

ためしに★の次の行に

msgbox intindex をつけてテストすると
chkpass(0)にフォーカスがあると 0
chkpass(1)にフォーカスがあると 1

chkpass(5)にフォーカスがあると 5
のメッセージボックスが表示されます

この場合cmdEndにtabstopをfalseにすればいいかもしれませんが
冒頭で申し上げましたとおり
実運用ではもっと他にコマンドボタンやコンボボックスなどがありますし
業務用なので載せることは不可能です。
(ちなみにこれは自宅で作っています)

長くなってしまったので最終目的をもう一度書きます。

・chkpass(0)にフォーカスがあるときにShift + tab もしくは↑キーで
chkpass(5)にフォーカスを移動

・chkpass(5)にフォーカスがあるときにtab もしくは↓キーで
chkpass(0)にフォーカスを移動

です。

ご教授お願いいたします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -