Edit内に入力する数値を1〜15に限定するにはどうすればいいですか?
OnKeyPressイベントで数値のみ入力できるように制御。
これだけだと16以上の数値も入るので多少工夫いります。
めんどくさいから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;
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;
返信ありがとうございます。
結局メッセージを表示させるかたちで、
if (StrToInt(Edit1.Text) < 1)
or (StrToInt(Edit1.Text) > 15) then
begin
ShowMessage('1〜15の間で設定して下さい');
Edit1.SetFocus;
Exit;
end;
こんな感じで書いてみました。
> if (StrToInt(Edit1.Text) < 1)
> or (StrToInt(Edit1.Text) > 15) then
if (StrToIntDef(Edit1.Text,0) < 1)
or (StrToIntDef((Edit1.Text,0) > 15) then
の方がいいんじゃない?
みなさんアドバイスありがとうございます。
勉強になりました。またお願いします。
ツイート | ![]() |