Виталий Донцов – Программирование для Android и работа с датчиками в среде Delphi 11 (страница 7)
Компонент Label – предназначен для текстовой информации, например, заголовков, но подойдет и для ввода/вывода любого короткого текста. При использовании как заголовка ему лучше придать значение выравнивание Align: Top или Bottom и растянуть на всю Форму, не забыв центрировать текст в TextSetting (изначально свойство представлено как
Общие
Важное свойство:
Также важно свойство
Свойства компонента можно задавать и кодом. Работа с компонентом состоит обычно в передаче и считывании текста:
Label1.Text:= «Вводимый текст»; //текст в кавычках»»
Label1.Text:= str; // str – строковая переменная
str:= Label1.Text;
Label1.Text. Empty = «»;
Начальный текст обычно задается в Инспекторе объектов, как и его характеристики, которые можно поменять программно в ходе работы приложения.
Из длинного списка свойств и действий, предлагаемого подсказкой после ввода названия компонента и точки, означающей ввод свойств или действий, на самом деле используется обычно только ввод и вывод текста, а чаще всего Label используется вообще однократно при создании приложения для заголовков или подписей.
Рис. 19. Предлагаемые программно свойства и действия для компонента Label.
8.2. Компоненты ввода текста и чисел: Edit, ComboEdit, NumberBox
Edit
Компонент
Если в обычном Delphi 7 это обычное белое окошко, то в Delphi 11 это фактически не видимый элемент, с едва заметным подчеркиванием, которое приходится доводить до видимости компонентом из вкладки
Если учитывать, что компонент используется для ввода и приходится буквально тыкать в него пальцем на экране, то это становится критичным.
Рис. 19. 3 вида компонента Edit в различном оформлении.
Основным свойством компонента,
Так как при вводе в компонент используются как текстовые данные цифры, то часто важно установить тип вызываемой при обращении к компоненту клавиатура:
Также можно ограничить максимальное вводимое число знаков (
Для ограничения ввода отслеживаются вводимые символы:
Реакция
if key = #13 // клавиша <Enter> then…;
case Key of
«0».. «9», #8:; // цифры и BackSpace
#13: Edit3.SetFocus; // переместить на Enter
«-’: if Length (Edit2.Text) <> 0 then Key:= #0; //ничего не отображать за выходом из рамок окна
else Key:= #0; // остальные символы не отображать.
end;
Можно также:
procedure TForm1.Edit1KeyDown (Sender: TObject; var Key: Word);
var
KeyChar: Char; Shift: TShiftState);
begin
if ((KeyChar <«0») or (KeyChar> «9») or (Length (Edit1.Text)> =11))
and (KEY <> 8) and (KEY <> 46) then //
begin
KeyChar:= #0;
if (Length (Edit1.Text)> =11) = false then
ShowMessage («Допускаются только цифры!»)
else
ShowMessage («Длина текста превысила 11 знаков!»)
end; end;
Или:
procedure TForm1.Edit1KeyPress (Sender: TObject; var Key: Char);
begin
case Key of
«0».. «9», #8:; // цифры и <Backspace>
// Замена точки или запятую десятичной дроби на правильный разделитель – DecimalSeparator
«.»,»,»
begin
Key:= FormatSettings.DecimalSeparator;
//проверка правильности разделителя
if pos (Key, Edit1.Text) <> 0
then Key:= #0;
end;
#13: Edit2.SetFocus; // <Enter> переместиться в поле Edit
else Key:= #0; // Остальные символы запрещены
end;
Проще, однако, установить фильтр ввода данных:
Edit1.Fi
Или:
Или на Edit1KeyPress: if Key=»,» then Key:=».»;//Замена на лету
Ограничить ввод можно свойством