tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル パスワードBOXのようなもの(textbox)
投稿日: 2009/03/26(Thu) 15:11
投稿者たたんか
ご相談させて頂きたく投稿しました!
まだプログラムを始めて経験が浅いもので、
関数とか、色々使いまわせない状況です。
お問い合わせしたい内容は、パスワードBOXのような
1Byteの英語小文字、英語大文字、数値のみ入力できる
テキストボックスを作りたく思っています。

下記に記したソースで動作させると、
一応、思っている動きに近い動作をするのですが、
11文字以上の入力があった場合に
KeyboradでBS処理を行うと、正常動作しなくなります。
例:
(1234567890abcdef)など入力し、
動作させると(1234567890abcde1)となる。

こちらの環境は
WindowsXP SP3 VB6.0となります。
よろしくお願いします。



Private Sub Text1_KeyPress(KeyAscii As Integer)
    Dim intA As Integer        '数値計算1
    Dim intB As Integer        '数値計算2
    Dim strSHKtxt As String    'ショートカット

    strSHKtxt = Text1.Text
    If (KeyAscii > 0) And (KeyAscii < 7) Then    'いくつかのキー処理
        MsgBox "特殊キーを利用する処理は出来ません。", vbCritical, "警告"
        KeyAscii = 0
        Exit Sub
    End If
    If (KeyAscii = 8) Then                    'BS処理
        intA = Len(strSHKtxt)
        intB = intA - 1

        If Not Text1.Text = "" Then
            Text1.Text = Left(strSHKtxt, intB)
        Else
            Exit Sub
        End If
        
        Text1.SelStart = Len(Text1.Text)'ここで、11文字以上の文字を認識
        Text1.SelText = Len(Text1.Text)'ここで、異常動作(入力文字の最後の文字が変更される)
        
        Exit Sub
    End If
    If (KeyAscii >= 9) And (KeyAscii <= 31) Then'いくつかのキー処理
        MsgBox "特殊キーを利用する処理は出来ません。", vbCritical, "警告"
        KeyAscii = 0
        Exit Sub
    End If
    If (KeyAscii = 10) Then'改行
        MsgBox "改行コードは登録出来ません。", vbCritical, "警告"
        KeyAscii = 0
        Exit Sub
    End If
    If (KeyAscii >= 48) And (KeyAscii <= 57) Then '数字
    
        Exit Sub
    End If
    If (KeyAscii >= 65) And (KeyAscii <= 90) Then '大文字A〜Z
        
        Exit Sub
    End If
    If (KeyAscii >= 97) And (KeyAscii <= 122) Then'小文字a〜z
        
        Exit Sub
    End If
    KeyAscii = 0                'それ以外の入力無視
    Exit Sub
End Sub

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

古いスレッドにレスはつけられません。