Пример 2. Контроль ввода с использованием Case

Дано: текстовое поле Edit2.

Требуется: разработать процедуру, контролирующую ввод символов (событие OnKeyPress) соответствующих алфавиту вещественных чисел. При вводе недопустимого символа подменить его пустым значением (код #0). Использовать оператор case.

После назначения события 1 Object TreeView®Edit1

1Object Inspector ®ÌEvents ®OnKeyPress,

в разделе interface будет объявлена процедура Edit2KeyPress(Sender: TObject; var Key: Char). В разделе implementation появится текст шаблона этой процедуры.

Текст, добавленный разработчиком, выделен курсивом.

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

Begin

case Key of

'0'..'9': ; // диапазон допустимых символов, оператор отсутствует

',' : ; // допустима запятая

#8 : ; // допускается использование <Backspace>

else Key := Chr(0); // другие символы подменяются пустым символом

End;

End;

Параметр-переменная Key соответствует коду символа нажатой клавиши. Если вводимый символ не соответствует указанному символьному множеству ['0'..'9', '+', '-', ‘,’, #8], то параметру-переменной Key будет присвоено пустое значение (функция Chr(0) возвращает пустое значение, код #0).

else
0’..’9’:  
Начало
Конец
Схема алгоритма. Контроль ввода вещественных чисел procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char)  
Key  
‘,’:  
#8  
Key:=Chr(0)
Подмена недопустимого символа пустым

Преобразования Строка-Число и Число-Строка

Для ввода или отображения чисел используют функции преобразования.

StrToInt (S: String): Integer - преобразует символы строки S в целое число.

IntToStr (Value: Integer): String - преобразует целое число Value в строку символов.

StrToFloat (S: String): Extended - преобразует символы строки S в вещественное число.

StrToIntDef (S: String; Default: Integer): Integer- преобразует строку S в целое число, если строка содержит недопустимый символ, то возвращается значение Default, равное номеру ошибочного символа строки S.

FloatToStr (Value: Extended): String - преобразует вещественное значение Value в строку символов.

FloatToStrF (Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): String - преобразует вещественное значение Value в строку символов с учётом параметра Format .

Значения параметра Format:

ffExponent - экспоненциальный формат;

ffFixed - фиксированное положение разделителя дробной и целой частей;

ffGeneral - универсальный формат, соответствует ffFixed, если количество значащих цифр > Precision, и Value >= 0,00001, то число представляется в формате ffExponent.

Precision – общее количество значащих цифр.

Digits - количество цифр в десятичном порядке, число округляется

Val(S: string; var V; var Code: Integer) - процедура преобразует строку S в числовое значение переменной V целого или вещественного типа. Переменная Code = 0, если преобразование успешно. Если преобразование в число невозможно, то Code присваивается порядковый номер недопустимого символа.

TButton – кнопка

Компонент класса TButton - используют для управления программой. Основное событие - OnClick (нажатие кнопки).

Свойства (properties) компонента:

Cancel: Boolean - если установлено значение True, событие OnClick возникает при нажатии клавиши Esc.

Default: Boolean - если установлено значение True, событие OnClick возникает при нажатии клавиши Enter.

В отличие от большинства других видимых компонентов кнопка TButton является компонентом системы Windows, и поэтому не может изменять свой цвет произвольным образом - она его меняет вместе с изменением палитры Windows. Кнопка всегда имеет системный цвет clBtnFace.

После размещения кнопки на форме и назначения в окне Инспектора объектов события OnClick, в модуль будет добавлено описание шаблона процедуры обработки события.

Type

TForm1 = class(TForm)

…………….

Button1: TButton;

procedure Button1Click(Sender: TObject);

…………………..

Implementation

……………………………..

procedure TForm1.Button1Click(Sender: TObject);

Begin

…………….

End;

…………………

Наши рекомендации