お世話になります。
フォーム上にテキストボックスが複数あり、下記条件を付けたく
そのチェックをどのタイミング(イベント?)で行ったらよいのか
わかりません。
<条件>
・入力許可桁数は4桁のみ。4桁以上でも未満でも許可しない。
・その4桁は西暦or年月であり、日付として認識できるものしか
許可しない
(例) 西暦であれば:2007 (2007年)
年月であれば:0427 (4月27日)
というような入力しか認めない。
テキストボックスのchangeイベントで上記条件を判定するように
しました。
一見うまくいったように思えたのですが・・
テキストボックスに「0」とだけ入力し、その状態でマウスで
別のテキストボックスをクリックしたところ、前のテキストボックス
は「0」が入力されたままとなり、changeイベントでの入力チェック
が動きませんでした。
exitイベントやlostfocusイベントなどもあるようなのですが、
それぞれに同じチェック機能をつけた方がよいのでしょうか?
それともこのイベントにつけておけば入力内容のチェックは
全てできる。というイベントがありますでしょうか?
ご教示お願い致します。
Vb6SP6 WinXP
入力チェックは一括でやってしまう派です。
入力・選択されたものは後で計算・登録を行うかと思いますが、
その時にチェックをしてしまえばいいかと思います。
#個人的な意見ですので参考程度にどうぞ。
>テキストボックスに「0」とだけ入力し、その状態でマウスで
>別のテキストボックスをクリックしたところ、前のテキストボックス
>は「0」が入力されたままとなり、changeイベントでの入力チェック
>が動きませんでした。
半角数字の「0」入力なら、入力した時点で Change イベントが走っている
はずですが?
エラー処理した後に「0」入力(不都合な入力)を残したままにするので
あれば、そこから別のテキストボックスに移動したところで Change
イベントが起きる訳が無いですよね? Change(変更)してないのだから。
イベントの問題ではなく、エラー処理の内容が目的に合ってないのでは?
Change イベントを使用する場合、ほとんどが入力自体を許可しません。
不都合な入力があれば強制的に修正します。キーボードの入力関係の
イベントではコピペに対応できないため、Change イベントを使用します。
これに対し、入力は何でも許可し、最終的に何か計算・登録する時に
全てチェックし、入力エラーの表示をするのが SSY さんご紹介の方法
です。年入力といっても「2」と「0」と「0」と「7」を同時に入力する
のはユーザには不可能です。入力途中の状態は、「20」だったり「200」
だったりするわけですから、その都度エラー処理で修正されては入力
できなくなってしまいます。また、ユーザが入力した値を勝手に修正
すると不都合が起こる場合も多くあります。そのような場合には、1つ
1つの入力で入力チェックはしない仕様を考えます。
>exitイベントやlostfocusイベントなどもあるようなのですが
Validateイベントを使ったりしますかねぇ。
これも、その特性を理解して、対応するような処理を書かないと意味が
ありません。
[Visual Basic 中学校 > VB6 テクニック]
http://homepage1.nifty.com/rucio/main/technique/index_tec.htm
8.入力チェック論1 チェックするタイミング
9.入力チェック論2 チェックする方法
を読んでみてください。
全体にどのような設計をしているか、どのようなドキュメントを作成して
いるかわかりませんが、
>許可しない
という言葉(機能)の定義を詳細に明文化すれば自然と解決するのでは?
皆様、お世話になります。
勉強になりました。
チェックは一括で行うこととします。
ありがとうございました。m(_ _)m
解決マークをつけ忘れました。
失礼しました。
ツイート | ![]() |