タイトル | : パスワードBOXのようなもの(textbox) |
記事No | : 13545 |
投稿日 | : 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
|