Нужно сделать запрет на ввод букв, только цифры. - вопрос №2754195

procedure TForm6.Button1Click(Sender: TObject);
Label lb1;
var i,a,b:integer;
key:char;
begin
ShowMessage('Privet parthner!'+#13+'Я рад, что вы состязаетесь со мной!'
+#13+#13+'Отгадайте мое любимое число!'+#13+'Для справки: оно меньше тысячи.');
lb1: Randomize;
b:=Random(1000);
i:=0;
a:=Round(StrToFloat(InputBox('Ввод числа','Введите число','')));
Repeat
if a<b then a:=Round(StrToInt(InputBox('Ввод числа','Больше','')));
if a>b then a:=Round(StrToInt(InputBox('Ввод числа','Меньше','')));
i:=i+1;
if not (key in ['A'..'Z']) then begin ShowMessage('Только цифры!');
end;
until a=b;
case i of
1..9:ShowMessage('Это случайность!');
10:ShowMessage('Чудесно!');
11,12:ShowMessage('Очень хорошо!');
13,14:ShowMessage('Посредственно!');
else ShowMessage('Удачно!');
end;
If MessageDlg('Сыграем еще?',mtInformation,[mbYes,mbNO],0)=mrYes
then goto lb1;
ShowMessage('Пока.');
end;

end.
01.02.18
1 ответ

Ответы

InputBox стандартный элемент, вы не можете вмешаться в его работу, если не имеете его исходного текста

надо или вводить дополнительную проверку попытки парсинга в числовое значение, и в случае ошибки сообщать пользователю

или создать свой контрол, в режиме диалога, повторяющий общую функциональность InputBox, но уже в нем выполнять ввод по своим правилам — хоть посимвольно, игнорируя «не цифры», хоть строками с сообщением об ошибке

а простого решения «одной фразой подсказки» в данном случае просто нет

ps

все еще хитрее - большинство языков под винду, для элеметов типа InputBox, MsgBox, а так же диалогов типа выбора файла и подобных — вызывают таковые из самой системы, где они уже давно существуют.

вот если бы вы на форме использовали для ввода элемент типа TextBox, у него наверняка должны быть события и свойства

в свой свойствах может быть маска для валидации, в событиях — события связаные с валидацией (вариант с маской вообще самый простой)

я давно не работаю с делфи, 99% с C# но в этих вопросах принципы общие

так вот «валидация» — это и есть механизм обеспечения ограничений для данного поля ввода. это есть так же во всех современных средствах программирования, где есть GUI

в этом случае достаточно было бы разобраться с валидацией, а освоение виртуозного управления процессом ввода оставить на потом
01.02.18
Посмотреть всех экспертов из раздела Технологии > Delphi
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store