掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TDBGridで入力値を小数第1位までと制限するには (ID:9324)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ピーマコ : 「前にも同じ質問ありましたよねぇ」 なかざわ : 「そやったかな〜」 ピーマコ : 「あれ〜?ミソジになってからもの忘れ激しいんじゃないですか〜?1年くらい前のことですけど」 なかざわ : 「なんや?DBGridやのうて StringGridでの質問やろ。それならおぼえとるわい!」 オジャマ : 「あの時に使われていたTInplaceEditは DBGridの場合でもOKなんですか?」 なかざわ : 「TInplaceEditやったら DBGridでも一緒やで」 オジャマ : 「でも〜それだとチョット問題があったんですよね〜」 ピーマコ : 「そうそう、たしか小数点があると〜途中の文字編集が出来なくなっちゃいます」 オジャマ : 「そうなんです。その問題…なんとかなりませんか?」 なかざわ : 「ンなもん簡単や。caret位置のチェック追加しといたらエエやん。」 オジャマ : 「あッそっか。caretの位置が小数点の右側にある時だけ無効にすればいいんですよね」 ピーマコ : 「お〜ナルホド…、これでもうカンペキですよ〜」 なかざわ : 「い〜やまだやな、ホカにもまだマズイとこあるで」 オジャマ : 「え〜?何かまだ問題残ってましたっけ?」 なかざわ : 「小数点を後から追加することもあるやんか。その位置のチェックもしとかなアカン」 ピーマコ : 「さすがナカザワさん、細かいとこまで良く気がつきますね〜よる年ナミのせいですか〜?」 オジャマ : 「ピーマコさん、それをいうなら'年のコウ'でしょ♪^^;」 なかざわ : 「(--;…ホンマにもう…、ウチを年寄り扱いするヤツは今日のお昼もおごってやらん!」 ピーマコ : 「あぁっ^^; チョッと口がスベッタだけですぅ〜今月も大ピンチなんでお願いしますよ〜」 オジャマ : 「ピーマコさ〜ん、それをいうなら'チョッと口が過ぎた'では…^^;;;」 procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); const MNCNT = 1; var K, dotPos, crtPos, numLen : Integer; ipEdit : TInplaceEdit; begin K := ord(Key); if K = $08 then exit; if not(K in [$2E, $30..$39]) then begin Key := #0; exit; end; if TWinControl(Sender).ControlCount > 0 then begin ipEdit := TWinControl(Sender).Controls[0] as TInplaceEdit; numLen := Length(ipEdit.Text); crtPos := ipEdit.SelStart; dotPos := Pos('.', ipEdit.Text); if dotPos > 0 then begin case K of $2E: Key := #0; else if (numLen - dotPos >= MNCNT)and(crtPos >= dotPos) then Key := #0; end; end else if (K = $2E)and(numLen - crtPos > MNCNT) then Key := #0; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.