StringGrid各セルの入力値を小数1桁までまたか小数以下なしに
制限したいと思ってます。
SetEditTextを使えば制限を掛けれますが、どうも自分の望んでい
る物と違っていて。。。
そこで、入力を検査する関数を作りたいのですが、良い案が浮かび
ません、どなたかサンプルになる様なコードを教えていただけない
でしょうか?
「かごッパ」 小数1桁までの数字制限なら、これでいけるッパでしょ。
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
K, vp : 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;
ipEdit := FindControl(GetWindow(StringGrid1.Handle, GW_CHILD)) as TInplaceEdit;
if Assigned(ipEdit) then begin
vp := Pos('.', ipEdit.Text);
if (vp > 0)and(vp < Length(ipEdit.Text)) then Key := #0;
end;
end;
「つじッパ」 おぉ〜ナルホド…これでイッケンラクチャクでケロ…ではメシ…
「かごッパ」 けど…チョット問題が残ってるッパよ。
「つじッパ」 ン?まだでケロ…
「らぶッパ」 そっか、これだと小数点がある文字列の途中が編集できないっパ。
「みかッパ」 もし入力間違えしたら、お尻から消してやり直せばいいッパじゃん。
「つじッパ」 そうでケロ…これでやっとメシ…
「らぶッパ」 でも〜やっぱり、それじゃ少し面倒ッパね。
「かごッパ」 うーん、やり方変えなくちゃダメッパか〜
「つじッパ」 ン…ならお先に…でケロ…
「らぶッパ」 変更前じゃなくて〜、このように変更後にチェックした方がいいッパかも。
var
SavedCell : string;
procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String);
begin
SavedCell := Value;
end;
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String);
var
vp : Integer;
begin
vp := Pos('.', Value);
if (vp > 0)and(vp < Length(Value)-1) then begin
StringGrid1.Cells[ACol, ARow] := SavedCell;
StringGrid1.EditorMode := True;
end else begin
SavedCell := Value;
end;
end;
「かごッパ」 これに数字キーチェックを追加したらOKッパかな。
「みかッパ」 この続きは後にして、そろそろ食事にするッパ。
「らぶッパ」 あれっ?、キュウリが全部なくなってるッパです〜
「みかッパ」 コラッ、つじッパ!
「つじッパ」 …Zzz…もうコレ以上食えないでケロ…Zzzz…
ツイート | ![]() |