テキストボックスの入力判定

解決


ディスト  2004-02-22 07:14:42  No: 111998  IP: [192.*.*.*]

テキストボックスに数値(数字)を入力してほしいのですが
その値は数値のみを入力して欲しいときの
判定方法でうまい方法はないでしょうか?

現状ではchangeイベントで
"0"以外で、さらにvalを通して0じゃない場合は数字ではないと
判定しているのですがこの場合だと
"00"、"000"…(以下略)や、文字も混じっている場合"67G"とか
このような場合にうまく判定できません

1ヶ月ほどのんびり考えていたのですが、どうにも良い方法が思いつかないので
うまい方法をご存じの方がいらっしゃったら、ご教授頂けませんか

編集    削除
oku  URL  2004-02-22 08:09:46  No: 111999  IP: [192.*.*.*]

SetWindowLong(API)を使ってテキストボックスの入力を数字に制限する
という方法では駄目ですか?
それでもコピペされた時は駄目ですけど。
コピペまでして数字以外を入力する人もいないと思うので。

vbvbvb.comでSetWindowLongを検索してみてください。
http://www.vbvbvb.com/jp/

編集    削除
ディスト  2004-02-22 20:31:02  No: 112000  IP: [192.*.*.*]

ありがとうございます
さっそく教えて頂いたsetwindowlongを使ってみましたが、
これで十分なようです、ありがとうございます

ついでにもう一つ質問させて下さい
APIというのを使うのは初めてで、サンプルを使って使い方はわかりましたが
このサンプル構文について

Declare Function SetWindowLong Lib "user32.dll" _
    Alias "SetWindowLongA" _
   (ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long

のような記述がありましたが、このアンダーバーは
どのような働きがあるのでしょうか?
手持ちの本ではこのような構文について見つけられなく
またネットで調べるにもこれを調べる為に何を調べればいいのかわかりません(^-^;

編集    削除
punto  2004-02-22 20:52:31  No: 112001  IP: [192.*.*.*]

おぃおぃ、、、試しにとってみれば?
VB は free format じゃないので statement は一行で終わらせなくちゃ
なんない。で、一つの statement を複数行に分割するのに使うのが
 '_'(under score) ってことらしいよ。

なさけないことに、'_' を書いたあとに ''' を書いて comment を書くこ
とはできない。 どう解釈したらそういう仕様を作れるんだろね…。
この辺り VB のタコさ加減の残骸か。なんとかしろよ…。

編集    削除
ディスト  2004-02-22 21:57:46  No: 112002  IP: [192.*.*.*]

あ、そうなんですか
根っから特殊なものなのだと思いこんでいたので
考えつきませんでした^^;

okuさん、puntoさん、ありがとうございました。

編集    削除