Читать книгу «Программирование для Android и работа с датчиками в среде Delphi 11» онлайн полностью📖 — Виталий Иванович Донцов — MyBook.
image

7. ВКЛАДКИ КОМПОНЕНТОВ

Базовые компоненты находятся на вкладке Standard, вклад ка Additional используется значительно меньше, так как ее эле менты практически дублируют вкладку Standart; из вкладки System используют компонент Timer, вкладка Win 32 исчезла.

Компонент Таблица представлен во вкладке Grids двумя таблицами – обычной строковой StringGrid и Grid в котором можно использовать самые разные типы данных и вставлять другие компоненты, также отдельный компонент Заглавие – Header.

Желание разнообразить возможности рисования обернулись их резким усложнением, однако, появилась вкладка Shapes, где представлены различне компоненты: прямоугольник, круг, овал, дуга, линия, подпись и другие типичные элементы рисунков, свойства которых можно задавать программно и рисовать или создавать графики. Компоненты графиков представлены PlotGrid с сеткой и осями координат, на котором фактически нужно рисовать график вручную, а также обычным Chart из TeeChartLite группы.

Вкладку Effects, задуманная для придания красивого вида элементов, использовать можно разве, чтобы сделать хоть как-то видимым компонент Edit. Различные эффекты мигания, скручивания, жалюзи и пр., как и ротация, доступная практически для всех элементов, предназначены для анимации (как и вкладка Animations, вкладка Styles и вкладки для 3D вида компонентов), к которой сам Delphi как раз не предназначен, и работать на смартфоне будет медленно, для прикладных программ это вооб ще дурной тон.

Видимо, вкладка LiveBinding, нововведение авторов языка Firemonkey, отслеживающая «жизнь» компонентов и их связь между собой, также вряд ли подойдет для привыкших к обычному программированию из-за множества специфических функций, которые легко заменить обычными методами Delphi.

Вкладка Color представлена множеством компонентов для работы с цветом, часто взаимодействующими между собой, и также скорее подходят для анимации, чем для прикладных программ. Определенный интерес представляет, возможно, простой ColorBox. Для создания цветового градиента с целью приданию графику вида «зеленая и красная области» подойдут два компонента Rectangle (прямоугольник) из вкладки Shapes, на которые накладываются другие прямоугольники уже как графики данных.

Как уже отмечалось, важными элементами приложения являются компоненты их вкладки Layouts, отвечающие за выравнивание компонентов, в них находящихся, хотя со времен первых вариантов Delphi эту функцию успешно играет компонент Панель – Panel.

Вкладка Common Control представлена рабочими элементами – TabControl и MultiView. Важнейшая вкладка Dialogs в Delphi 10, 11, отсутствует (вернее, не доступна для платформы Android).

Целый ряд вкладок предназначен для работы с Базами данных, в том числе SQL и специальная с широкими возможностями – Fire, вместе с вкладками для работы в Интернет.

Особое значение для Android имеют компоненты работы с элементами смартфона: камерой, сенсорами, аудиоплеером, интернетом, Bluetooth (вкладка Systems), что, впрочем, гораздо лучше делает сам смартфон; нужны специальные разрешения!

Для обычной работы каждого приложения понадобятся:

– из вкладки Standard: Label (метка), Edit (окошко), Memo (многостраничный текстовый компонент, аналог отсутствующего RichEdit), Button (кнопка), CheckBox или RadioButton для выбора различных условий, ListBox (списки), ImageControl вместе с ImageList и Panel для ввода иконок и картинок.

– из вкладки Addinional: PlotGrid для графиков, NumberBox для ввода числовых значений, ComboEdit для сложного ввода;

– из вкладки Grids: обычная StringGrid текстовых данных;

– вкладка Shapes: с уже готовыми фигурами для графиков;

– из вкладки Colors: возможно, ColorBox;

– из вкладки Effects: BevelEffect для создания бордюра компонента Panel, и TinnerGlowEffect для придания видимости ком- поненту Edit;

– компоненты вкладки Layouts нужны для выравнивания содержащихся других компонентов, хотя традиционно эту роль выполняет компонент Panel.

Таким образом, основные рабочие компоненты сосредоточены на вкладке Standart и большинство предназначено для ввода/вывода информации, причем текстового характера.

Типичные компоненты для ввода текста:

– Метка – Label,

– Окошко – Edit,

– компонент многостраничного ввода – Memo,

– Списки – List.

Свойства компонентов можно задавать в Инспекторе объектов или кодом, соответствующим свойствам. При добавлении на Форму компонент появляется в соответствующем Форме стиле, поэтому приходится для каждого компонента убирать все элементы стиля (ставить false во всех свойствах StyledSettings) и создавать свой собственный стиль, нужный именно этому ком- поненту; также можно установить видимый стиль компонента (StyleLookup), обычно его можно пропустить или ставить всегда соответствующим данному компоненты.

Общие свойства (размеры, стиль, положение, видимость, доступность, фокусируемость, позиция и отступы, свойство «только для чтения», свойства шрифта и пр.) описаны выше, также имются некоторые собственные свойства и способы работы с каждым отдельным компонентом.

8. КОМПОНЕНТЫ для ВВОДА И ВЫВОДА ТЕКСТА

8.1. КОМПОНЕНТ МЕТКА – Label

Компонент Label – предназначен для текстовой информации, например, заголовков, но подойдет и для ввода/вывода любого короткого текста. При использовании как заголовка ему лучше придать значение выравнивание Align: Top или Bottom и растянуть на всю Форму, не забыв центрировать текст в TextSetting (изначально свойство представлено как leading).

Общие StyledSetting обычно приходится убирать (false) и ставить собственные в TextSettings, свойства ротации и анимации вряд ли нужны.

Важное свойство: AutoSize – автоматический размер под текст, который можно и не ставить, а лучше сделать побольше размер в высоту и ширину.

Также важно свойство WordWrap = true в TextSettings, которое автоматически переводит не вмещающийся текст на строчку ниже (нумерация строчек в Memo при этом не меняется!).

Свойства компонента можно задавать и кодом. Работа с компонентом состоит обычно в передаче и считывании текста:

Label1.Text:= «Вводимый текст»; //текст в кавычках»»

Label1.Text:= str; // str – строковая переменная

str:= Label1.Text;

Label1.Text. Empty = «»;

Начальный текст обычно задается в Инспекторе объектов, как и его характеристики, которые можно поменять программно в ходе работы приложения.

Из длинного списка свойств и действий, предлагаемого подсказкой после ввода названия компонента и точки, означающей ввод свойств или действий, на самом деле используется обычно только ввод и вывод текста, а чаще всего Label используется вообще однократно при создании приложения для заголовков или подписей.

Рис. 19. Предлагаемые программно свойства и действия для компонента Label.

8.2. Компоненты ввода текста и чисел: Edit, ComboEdit, NumberBox

Edit

Компонент Edit, наверно, наиболее используемый в работе (наряду с Кнопкой – Button, которая и задает действия с ним).

Если в обычном Delphi 7 это обычное белое окошко, то в Delphi 11 это фактически не видимый элемент, с едва заметным подчеркиванием, которое приходится доводить до видимости компонентом из вкладки Effects InnerGlowEffect.

Если учитывать, что компонент используется для ввода и приходится буквально тыкать в него пальцем на экране, то это становится критичным.


Рис. 19. 3 вида компонента Edit в различном оформлении.


Основным свойством компонента, Edit, передающим введённую информацию, является свойство Text типа String. Вводимый Text можно ввести при создании компонента или затем программно. Не помещающийся текст остается доступен программно, но не виден на экране. Для работы с числами можно перевести текст в число: целое: X:= StrToInt (Edit1.Text); дробное: = StrToFloat (Edit1.Text);

Так как при вводе в компонент используются как текстовые данные цифры, то часто важно установить тип вызываемой при обращении к компоненту клавиатура: KeyboardType – изначальный Default общей клавиатуры заменить на ввод цифр – DecimalNumberPad.

Также можно ограничить максимальное вводимое число знаков (MaxLength) и задать фильтры для ввода символов.

Для ограничения ввода отслеживаются вводимые символы:

Реакция Edit на клавиши: KeyPress:

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 //8 и 46 код клавиш Backspace и Del

begin

KeyChar:= #0;

if (Length (Edit1.Text)> =11) = false then

ShowMessage («Допускаются только цифры!»)

else

ShowMessage («Длина текста превысила 11 знаков!»)

endend;

Или:

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.FilterChar:= «0123456789»;

Или: keyPress: if key = VK_Eskape (Enter) then

Или на Edit1KeyPress: if Key=»,» then Key:=».»;//Замена на лету


Ограничить ввод можно свойством ReadOnly, а также свой ствами Enabled и CanFocus; CheckSpelling – контроль правописания.

Задействовав свойство Password (true), можно заменить входящий текст видимыми точками, сделав компонент для ввода пароля.

Выделить часть текста можно:

Edit1.SetFocus; Edit1.SelStart:= 1; Edit1.SelLength:= 1;

С компонентом можно также связать Кнопки, щелкнув по нему правой кнопкой мыши и выбрав в Item Editor, например, кнопку очистки.

ComboEdit представляет собой строку редактирования, комбинированную с кнопкой, аналогично тому, как объединен редактор текста и кнопка выпадающего списка в стандартном элементе ComboBox.


NumberBox.

Для ввода непосредственно чисел не нужно использовать преобразования IntToStr (n), существуют специальные компоненты для ввода чисел (тип Single): NumberBox и SpinBox со свойством Value, при этом для отображения в качестве текста имеется свое свойство:

Label1.Text:= NumberBox1.Text;

Label1.Text:= SpinBox1.Text;

Также следует определить ValueType (Integer/Float) в Object Inspector (однако, при выборе Integer преобразование IntToStr все равно не действует без дополнительного Round). DecimalDigits отображает число десятичных знаков. Свойства HorzIncrement и VertIncrement: шаг приращения. Свойство Value компонента относится к Single, но даже выставив X как Integer в Object Insoector придется изменять тип: y:= round (x).


Рис. 20. Добавление в компонент Edit других компонентов.


SpinBox

SpinBox – окно редактирования, может отображать только число, с кнопками для увеличения и уменшения отображаемого значения.


ComboTrackBar

У ComboTrackBar – cвойства те же, и отображение каретки для ComboTrackBar (свойства Visible и CanShow) и режим выпадающего списка.


ComboEdit

Строка редактирования, комбирированная с кнопкой выпадающего списка (DropDownCount), с возможностью ввода строк текста (свойство Items). ComboEdit1.Items.Add (String) добавляет строчку; можно добавить строчку и цифру: ComboEdit1.Items.AddPair (String: String, Value: String).


TdateEdit, TtimeEdit, TCalendar

Позволяют в вид диалога выбрать дату, время. Строка ввода при получении фокуса отображает диалог выбора, результат передается в свойство DateTime (вместе или раздельно).

1
...
...
7