テキストボックスに入力文字の制限

解決


笑み  2009-01-14 15:43:05  No: 141279  IP: 192.*.*.*

初めまして笑みです。
VB5.0を使っています。VBの初心者です。下記のことに関して教えていただけますか。

1.テキストボックス1に3文字以上入力できないようしたいですが、どうしたらいいですか。
2.テキストバックス2に3文字が入力された直後、すぐテキストボックス1の文字と比較したいですが、いい方法がありますか。

よろしくお願いします

編集 削除
 2009-01-14 16:19:51  No: 141280  IP: 192.*.*.*

ヒントだけ書いときます。わからないときはまた聞いてください。

ヒント1.  Text1 と Text2 の Changeイベントを使う。
ヒント2.  If文を使う。
ヒント3.  テキストボックス1の文字列は Text1.Text で取得できる。
ヒント4.  文字列の長さはLen関数を使う。

編集 削除
笑み  2009-01-14 19:31:58  No: 141281  IP: 192.*.*.*

この件は解決しました。どうもありがとうございます。

別の件でまたちょっと教えていただきたいことがあります。
Enterキーを無視する方法がありますか。

テキストボックスにBarCodeのデータを読み込んでいます。
読んだ後に必ず入力された文字列が消えます。その原因はBarCode Readerは
自動的に文字列の最後にEnterを入れたと思います。
文字列が消えない方法がありますか。

度々すみませんが、よろしくお願いします。

編集 削除
 2009-01-14 21:39:53  No: 141282  IP: 192.*.*.*

下のようにすればEnterキーをキャンセルできます。

ただ、私はバーコードリーダーを使ったことがないので、
バーコードリーダーの入力でKeyPressイベントが発生するのかどうかはわかりませんが...

Private Sub Text1_KeyPress(KeyAscii As Integer)

    If KeyAscii = vbKeyReturn Then
        KeyAscii = 0
    End If

End Sub

編集 削除
特攻隊長まるるう  2009-01-15 10:40:44  No: 141283  IP: 192.*.*.*

> 自動的に文字列の最後にEnterを入れたと思います。
> 文字列が消えない方法がありますか。
VB5.0 では Enter を入れると文字列が消えるんですか。。
自分のプログラムで消しているのではなくって?

編集 削除
笑み  2009-01-15 11:18:33  No: 141284  IP: 192.*.*.*

ご返事をいただきまして、誠にありがとうございます。

こちらの開発環境はWindowsNT, VB5.0です。

バーコードリーダーは文字を読み込んだ後に改行しているようです。そのため
テキストボックスで表示された文字列は消えてしまいました。

ム様の方法でやって見ましたが、効かない見たいです。
別の方法がないかなとちょっと困っています。
ご存じな方が是非教えていただきたいと思います。

よろしくお願いします。

編集 削除
魔界の仮面弁士  2009-01-15 11:36:28  No: 141285  IP: 192.*.*.*

》笑みさん
> この件は解決しました。どうもありがとうございます。
どのようにして解決されたのでしょうか?


> BarCode Readerは自動的に文字列の最後にEnterを入れたと思います。
製品によっては、末尾制御コード(Enter, Tab等)の送出を On/Off するための
スイッチ、または設定用バーコードが付属している事がありますが、
そういったものは無いのでしょうか?


> Enterキーを無視する方法がありますか。
そのバーコードリーダーが、PS/2 接続や USB 接続などといった、
キーボード インターフェイスとして認識されるタイプの製品であれば、
VB からは KeyPress イベント内で判断できます。
(この場合、そもそも TextBox を使わずに、Form のみで判定する事も可能)

一方、キーボード入力ではなく製品(COMポートに接続するタイプなど)では、
そもそも Enter への変換を、メーカー提供アプリやドライバ、あるいは
自作アプリ側で行っているでしょうから、その処理を握り潰せば良いかと。


》ムさん
> Private Sub Text1_KeyPress(KeyAscii As Integer)
TextBox に MaxLength プロパティを指定している場合、文字数上限を超えると
VB5 では KeyPress が発動しませんので、その点は注意してください。>笑みさん

もし、MaxLength プロパティを併用する必要がある場合には、
  (案1) TextBox の KeyPress イベントの代わりに、
      Form の KeyPress イベントを利用する(要 KeyPreview = True)。
  (案2) MaxLength を、末尾 Enter の分だけ大目に見積もっておく。
  (案3) KeyDown イベント等と併用する。
などといった対策になる可能性があります。

編集 削除
特攻隊長まるるう  2009-01-15 12:47:51  No: 141286  IP: 192.*.*.*

原因を調べようとしてください。

こちらでは[VB5.0]の環境を用意するのは難しいので[VB6.0]で確認しています。

> ム様の方法でやって見ましたが、効かない見たいです。
魔界の仮面弁士さんの情報を参考にすると、効かないのではなく
イベント自体が起こってないのでは?
それなら
> 別の方法がないかなとちょっと困っています。
これは間違った考え方でしょう。

> バーコードリーダーは文字を読み込んだ後に改行しているようです。そのため
> テキストボックスで表示された文字列は消えてしまいました。
[VB6.0]ではキーボード入力で改行しても文字列は消えませんでした。
改行したら文字列が消えるテキストボックスなど、常識で考えて使えないと
思いますが、改行して文字列を消しているのはテキストボックスなんですか?
追加したプログラムではなくて?

編集 削除