入力数値を限定するには?

解決


ニトロ  2007-05-15 22:06:44  No: 26134

Edit内に入力する数値を1〜15に限定するにはどうすればいいですか?


Ru  2007-05-15 23:01:10  No: 26135

OnKeyPressイベントで数値のみ入力できるように制御。
これだけだと16以上の数値も入るので多少工夫いります。


cocomo  2007-05-15 23:52:55  No: 26136

めんどくさいからTComboBoxで逃げるって言うのは?

var
  idx : Integer;
begin
  with ComboBox1 do
  begin
    Items.Clear;
    for idx := 1 to 15 do
      Items.Add(IntToStr(idx));
    DropDownCount := 15;
    Style := csDropDownList;
    ItemIndex := 0;
  end;
end;


uuu  2007-05-16 00:15:40  No: 26137

EditのOnChangeで、範囲チェックするのが簡単そう。
貼り付けされても反応するんで。

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text:= '1';
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
  i: integer;
begin
  i:= StrToIntDef(Edit1.Text, 0);
  if not (i in [1..15]) then
  begin
    ShowMessage('NG');
    Edit1.Text:= '1';
  end;
end;


ニトロ  2007-05-16 00:19:23  No: 26138

返信ありがとうございます。

結局メッセージを表示させるかたちで、
  if (StrToInt(Edit1.Text) < 1)
  or (StrToInt(Edit1.Text) > 15) then
  begin
      ShowMessage('1〜15の間で設定して下さい');
      Edit1.SetFocus;
      Exit;
  end;
こんな感じで書いてみました。


cocomo  2007-05-16 01:52:11  No: 26139

>  if (StrToInt(Edit1.Text) < 1)
>  or (StrToInt(Edit1.Text) > 15) then
if (StrToIntDef(Edit1.Text,0) < 1)
or (StrToIntDef((Edit1.Text,0) > 15) then
の方がいいんじゃない?


ニトロ  2007-05-16 04:56:52  No: 26140

みなさんアドバイスありがとうございます。
勉強になりました。またお願いします。


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

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






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