- - PR -
TextBoxでTAB入力を検出できたでしょうか?
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-12-26 10:21
おはようございます。
seaiです。 久々にVB6.0をいじることになったのですが TextBoxでTAB入力を検出できたでしょうか? OCRを使用する設備があります。OCRから送られてくる文字列を TextBoxに取り込んで処理するプログラムがあります。 その文字列の終端として今までのOCRは[CR]が付加されていたのですが 故障してしまったので在庫品と交換したのですが[TAB]が付加されていました。 プログラムは終端文字の入力を検出して処理を開始しています。 TABは通常フォーカスの移動になると思い付加される終端文字を変えたいのですが OCRが古すぎてマニュアルも見つからない状態なので変えることができません。 プログラムの修正で対応することになったのですが 交換前の文字列(例:"ABCDEFG"+[CR])はKeyDownイベントで 終端文字[CR]を検出できていました。 交換後の文字列(例:"ABCDEFG"+[TAB])はKeyDownイベントで 終端文字[TAB]を検出できませんでした。 プログラムを実行する設備はWindows2000-SP4です。 開発用のPCはWindowsXP-SP2です。 何か見落としがあるのでしょうか? ご教示のほどよろしくお願いします。 | ||||||||||||
|
投稿日時: 2007-12-26 10:46
Tab が入っていることを検証するだけならば普通にできます。 実際に Tab 文字が入っていないだけではないのでしょうか。
普通に InStr 関数で検知可能です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-12-26 11:57
じゃんぬねっとさん
早速の返信ありがとうございます。
TABは入っています。メモ帳に取り込んで確認してあります。 きちんとカーソル位置の前にTABが入っています。 ご提示の関数でTAB検出可能なのはわかるのですが、 TextBoxにTABキーが打ち込まれた時に処理をさせたいのです。 OCRからの入力はキーボードエミュレーションなので 常にText1にフォーカスを当てて入力を受け付けられるようにして、 終端文字の検出は以下の様に行おうとしています。
「OCRからTABが送られる」=「TABキーを押す」ということで Text1にフォーカスを当ててキーボードのTABキーを押しても KeyDownイベントが発生してくれません。 [CR]なら発生していましたので・・・ 要はTextBoxで文字列の入力を受けて最後にTABキーが押された (OCRからTABコードが届いた)ということを検出したいのです。 どうかよろしくお願いします。 | ||||||||||||
|
投稿日時: 2007-12-26 12:55
こんにちは。
VB6ではTabキーの操作はKeyDownイベント、KeyPressイベントでは検出されません。 Validateイベントなどで代替処理をしてください。 [追記] http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200612/200612_06120048.html こちらでも書かれてますが、マニュアルに載ってます。 #オンラインでのMSDNを探しきれませんでした・・・ [ メッセージ編集済み 編集者: J.J. 編集日時 2007-12-26 14:43 ] | ||||||||||||
|
投稿日時: 2007-12-26 13:21
あ、そういうことですか。 ならば、Tab がデータとして入っているのと今回の質問とは直接は関係ないということですね。
うーん、反応してくれるハズです。
これで AcceptsTab な TextBox ができるハズなので。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-12-26 15:43
じゃんぬねっとさん
返信ありがとうございます。
早速ご提示のコードで確認してみました。 FormにTextBoxを1個だけ貼り付けたて確認したところ 確かにKeyDownイベントでTABキーを受け付けてくれました。 そこで、現在修正中のプログラムに適用してみたのですが うまくいきません。単独の場合と何か違うところがないか 探してみたところフォーカスを受け取れるコントロールで複数あり TabStopプロパティーがTrueになっているものが1つだけありました。 そのプロパティーをFalesにしたところKeyDownイベントでTABキーを 受け付けてくれるようになりました。 特定のTextBoxでTabキーのKeyDownイベントを発生させたいときには フォーカスを受け取れる他のコントロール全てのTabStopプロパティーを Falseにしなければならないということでよろしいのでしょうか? J.Jさん 情報ありがとうございます。
フォーム上ではそのようですね。 何はともあれこれで設備の修正が一歩前進しました。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2007-12-26 16:50
そういうことか・・・orz 私のほうではTextBoxを複数配置して検証してたので「検出できねえじゃん」とか思ってました。 フォーカスが移動できない状態であれば検出できるようですね。(^_^;
Tabキーの性質を考えるとそうなんじゃないでしょうか。 もしくは、前述しましたがValidateイベントを使うとか。 | ||||||||||||
|
投稿日時: 2007-12-26 17:42
少々意地悪だったかもしれませんね...
Windows Message を取る方法もありますね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1