tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル数値入力設定
記事No15419
投稿日: 2012/01/26(Thu) 22:22
投稿者あったん
テキストボックスの数値を”12.34”のように
小数点以下2桁にするために
タイマーで
text1.text=format(val(text1.text),"0.00")
としているのですが。
”12.3”を入力する際に

”1” ”2” ”.”と打った際に”12.00”に書き換えられ、
”3”を押すと”312.00”となりました。


Text1_GotFocus()でタイマを止め、
Text1_LostFocus()でタイマを再開することは可能でしたが・・・・・・
良い方法を教授願います。

[ツリー表示へ]
タイトルRe: 数値入力設定
記事No15420
投稿日: 2012/01/27(Fri) 07:08
投稿者VBレスキュー(花ちゃん)
> Text1_GotFocus()でタイマを止め、
> Text1_LostFocus()でタイマを再開することは可能でしたが・・・・・・
> 良い方法を教授願います。

なぜ、タイマーコントロールを使う必要があるのですか?
普通は(Excel でも) GotFocus で編集状態(Format を解除)にして、LostFocus で
Format をするかと思うのですが。

[ツリー表示へ]
タイトルRe^2: 数値入力設定
記事No15421
投稿日: 2012/01/27(Fri) 09:16
投稿者あったん
> なぜ、タイマーコントロールを使う必要があるのですか?
> 普通は(Excel でも) GotFocus で編集状態(Format を解除)にして、LostFocus で
> Format をするかと思うのですが。

早速ご回答ありがとうございました。

数値変更してそのまま放置(カーソルがtext1にあるまま)しても、数値桁設定を反映したいからです。LostFocusが発生しないまま、実行したいからです。

[ツリー表示へ]
タイトルRe^3: 数値入力設定
記事No15422
投稿日: 2012/01/27(Fri) 09:21
投稿者あったん
申し遅れましたが、開発環境です。

vb6.0SP6 、OS Windows7、VB歴5年

以上、よろしくお願いします

[ツリー表示へ]
タイトルRe^3: 数値入力設定
記事No15423
投稿日: 2012/01/27(Fri) 12:11
投稿者shu
> 数値変更してそのまま放置(カーソルがtext1にあるまま)しても、数値桁設定を反映したいからです。LostFocusが発生しないまま、実行したいからです。

なんのためにそれをしたいのか分かりませんが、表示だけなら気にしない
方がいいと思いますしフォーマットしてどこかに使用するならテキストボックスの
内容を書き換える必要はなく使用する処理内でフォーマットした文字列を使えばよいと
思います。

[ツリー表示へ]
タイトルRe^4: 数値入力設定
記事No15424
投稿日: 2012/01/28(Sat) 00:24
投稿者ミッキー
あったんさんの要望をまとめると

1.テキストボックスに数値を入力した際、
  "12.34", "12.30", "12.00" といった具合に
  小数点第2位まで表示したい

2.該当のテキストボックス内にフォーカスが残っている状態でも
  小数点第2位まで表示したい

3.タイマーコントロールで制御している。
  が、例えば「12.34」と打ち込みたいとき
  「1」「2」「.」まで打ち込むと"12.00"と表示されてしまう。
  「3」を打つと "312.00" になってしまい、これではダメ

でよろしいですか?

だとすると、例えば「12.」まで打ち込んだとします。
PCは「最終的には 12.00 〜 12.99 のどれかになる」と認識します。

小数点を打ってから少数第1位を入力するまで1分かかりました。
この場合、PCに

A.ある程度時間が経過したし、"12.00" でいいだろう

と判断させるか、はたまた

B.しばらく入力がないが、"12.00"以外の可能性はあるので待ってみる

と判断させるか、どちらですか?

Aと判断させたい → タイマーで入力経過時間をみていればいい
Bと判断させたい → フォーカスが離れるまで待機。LostFocus イベントで処理。

だと思いますが・・・

文字入力位置を制御する方法もありますね。
例えば小数点を打たれた後の数字を、小数点第1位に来るようにする.
元々、小数点第1位に 0 があった場合は、その 0 と置き換える。

それかサードパーティのコントロールを使用するか、ですかね。

[ツリー表示へ]
タイトルRe^5: 数値入力設定
記事No15425
投稿日: 2012/01/30(Mon) 15:58
投稿者あったん
ミッキ-さんご回答ありがとうございます
> Aと判断させたい → タイマーで入力経過時間をみていればいい
上記の方法で成功しました。
ありがとうございました。

[ツリー表示へ]