6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
LabeledEdit1, и TabOrder=1, TabStop=true для TButton1, а для
LabeledEdit2 свойство TabStop=false. Это для того, чтобы при нажатии клавиши Tab фокус автоматически перемещался с LabeledEdit1 на кнопку
иобратно. Кроме того, установите свойство AutoSelect для
LabeledEdit1 равным true.
Будем вводить числа в окне LabeledEdit1, затем введенное число про-
сто выведем в LabeledEdit2, но не "сразу"! Сначала преобразуем его во внутреннее представление целого числа для того, чтобы "выловить" ошибки.
Если будут ошибки при вводе, то естественно, преобразования не произойдет и возникнет исключение EConvertError. Для отладки и тестирования нашего приложения нам хватит и стандартной реакции системы, поэтому обработку исключения мы делать не будем. Добавьте лишь исключение
EConvertError в список игнора через меню
Окружение->Параметры>Отладчик->Исключения языка, чтобы удоб-
нее было запускать наше приложение из среды Lazarus.
Итак, с чего начнем? Задача вполне ясная. Необходимо обеспечить ввод пользователем только цифр от 0 до 9 и знака минус (-) (знак плюс (+) перед числом обычно не ставится). Для этого проще всего воспользоваться опреде-
ленным в Паскаль типом – множество и оператором in для определения при-
надлежности символа к допустимым.
В LabeledEdit1 для события OnKeyPress напишите следующий об-
работчик:
procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: char);
begin
{разрешаем только цифры, знак минус и кл. BackSpace } if not (Key in ['0' .. '9', '-' , #8])