掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バーコードリーダーで読み取り、処理を実行させるには? (ID:139112)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ぺんねさんの > いまいち、使い方が分かりませんでした。 は、 KeyPressイベントの使い方がわからない ではなく、 KeyPressイベント内で「END」が入力されたかどうか判定しつつ 入力された文字を無効にするにはどう記述していいかわからない というお話だと思います。 元々のお話が > ENDという文字を画面上に出力させないで、 > プログラムを動作させる事は可能なのでしょうか? ですから、現状のFormデザインではTextBox等キーボードからの文字入力を 受け付けるコントロールがあり、かつそこにフォーカスがあるのだろうと 推測します。 これを踏まえると、例えば Private Sub Form_KeyPress(KeyAscii As Integer) Static strBuffer As String Select Case KeyAscii Case Asc("E"), Asc("N"), Asc("D") strBuffer = strBuffer & Chr$(KeyAscii) If Left$("END", Len(strBuffer)) <> strBuffer Then strBuffer = "" End If KeyAscii = 0 Case Asc(vbCrLf) If strBuffer = "END" Then MsgBox "「END」キター!" '「END」が入力された時の処理 KeyAscii = 0 End If strBuffer = "" End Select End Sub のような感じになるかと思います。 ポイントは、 ★ FormのKeypreview=Trueにすることで、どのコントロールに コントロールにフォーカスがあっても同じように動作させる。 ★ KeyPressイベントは1文字ごとに発生するので、連続した文字列を 判定したい場合は、過去の入力文字を記録しておく必要がある。 (上記サンプルではstrBufferをStaticで用意して格納しています) ★ バーコードリーダーから入力される文字列の最後にEnterを 送らせる設定にし(バーコードリーダーの設定オプションにあるはずです)、 入力文字列のチェックをvbCrLf(Enter=CRLF)入力時に限る。 ★ 入力された文字を無効にするには、KeyPressイベント中で KeyAsciiに0を代入する。 確かKeyPressで入力クリア(KeyAscii = 0)は、Enter時にBeep音が鳴るように 覚えていますので、それが嫌な場合はKeyDownイベント等を使う必要があったと思います。 また、上記サンプルではTextBoxに「E」「N」「D」が入力できなくなります。 キーボードモードで入力させる以上、どうしても入力コントロールへの影響は 若干あります。 入力コントロールの機能を完全に保証するには、バーコードリーダーを 外部入力機器モード接続としてキーボードと別に処理する必要があります。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.