Пример 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;
…………………