テキストボックスの値チェックのイベントについて

解決


  2007-04-27 18:28:11  No: 136265

お世話になります。
フォーム上にテキストボックスが複数あり、下記条件を付けたく
そのチェックをどのタイミング(イベント?)で行ったらよいのか
わかりません。
<条件>
・入力許可桁数は4桁のみ。4桁以上でも未満でも許可しない。
・その4桁は西暦or年月であり、日付として認識できるものしか
  許可しない
  (例)  西暦であれば:2007  (2007年)
         年月であれば:0427  (4月27日)
         というような入力しか認めない。

テキストボックスのchangeイベントで上記条件を判定するように
しました。
一見うまくいったように思えたのですが・・

テキストボックスに「0」とだけ入力し、その状態でマウスで
別のテキストボックスをクリックしたところ、前のテキストボックス
は「0」が入力されたままとなり、changeイベントでの入力チェック
が動きませんでした。

exitイベントやlostfocusイベントなどもあるようなのですが、
それぞれに同じチェック機能をつけた方がよいのでしょうか?
それともこのイベントにつけておけば入力内容のチェックは
全てできる。というイベントがありますでしょうか?
ご教示お願い致します。

Vb6SP6 WinXP


SSY  2007-04-27 18:55:50  No: 136266

入力チェックは一括でやってしまう派です。

入力・選択されたものは後で計算・登録を行うかと思いますが、
その時にチェックをしてしまえばいいかと思います。

#個人的な意見ですので参考程度にどうぞ。


特攻隊長まるるう  2007-04-27 19:48:22  No: 136267

>テキストボックスに「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  チェックする方法
を読んでみてください。


とうしろう  2007-04-27 20:29:06  No: 136268

全体にどのような設計をしているか、どのようなドキュメントを作成して
いるかわかりませんが、

>許可しない

という言葉(機能)の定義を詳細に明文化すれば自然と解決するのでは?


  2007-04-27 22:34:52  No: 136269

皆様、お世話になります。
勉強になりました。
チェックは一括で行うこととします。
ありがとうございました。m(_ _)m


  2007-04-27 23:17:05  No: 136270

解決マークをつけ忘れました。
失礼しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加