реклама
Бургер менюБургер меню

Виталий Донцов – Программирование для Android и работа с датчиками в среде Delphi 11 (страница 3)

18

Рис. 13. Стили компонентов и добавление иконки через ImageList Editor.

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

Для компонентов обычно доступны:

– изменение размеров (и autoSize для Label),

– изменение цвета, в том числе градиентная заливка,

– изменение размера, цвета и типа шрифта (часто центрируют его, изначально расположен с краю – leading).

– видимость и доступность (Visible и Enable = true/false), причем иногда «недоступная» кнопка продолжает работать,

– наиболее важное свойство: Align – выравнивание; в Android на смартфоне важно, чтобы компоненты не «ехали» на разных экранах. Обычно используют несколько панелей вплотную и выравнивание Top и Bottom, а между ними – Client. Часто используется Scale, для разных экранов.

– Также для текстовых компонентов имеется свойство WordWrap (установите как true) для автоматического переноса на следующую строку не умещающегося текста;

– для просмотра не умещающегося на компоненте текста предусмотрено свойство ShowScrollBars и EnabledScroll = true, а также соответствующий компонент для скроллинга, что, впрочем, иногда не работает, а текст видимый на экране не помещается на экране смартфона (поэтому нужно чаще просматривать текущий результат программирования на реальном подключенном устройстве, а не на виртуальных моделях);

– добавление иконки (через ImageList Editor),

– возможность фокусируемости на данный компонент и «Read оnly» – только для чтения,

– стиль (часто приходится изменять установленный для всей формы стиль на подходящий для данного компонента),

– свойства Position (X и Y) от края контейнера (Панели, Формы) и отступы Margin – справ, слева, сверху и снизу,

– всем компонентам доступны вращение и анимации.

Свойство Sender: TObjectОтправитель») присутствует у всех компонентов, хотя редко используется. Но бывает полезно, например, узнать от какого типа источника происходит событие:

if (Sender is TButton) then ShowMassage («Click from Button»);

Или для разного действия при получении события OnClick от разных источников:

if Sender = Button1 then …… else ………..

Или для получения одного результата для разных компонентов: в Events на событие OnClick (или OnChange и т.п.) из выпадающего списка для нескольких компонентов выбрать нужный: например, Button1Click, с выполняемым везде кодом.

Или: Button2.OnClick (Sender); для Button1 – выполнит Button2.

Например, для приложения «Школьный Калькулятор» за счет свойства Sender можно значительно сократить код. Для функции power (степенная функция) в Uses ввести модуль Math.

Введем глобальную переменную S1:String; к которой можно будет иметь доступ из разных участков программы. Сбросим на Форму кнопки-числа и поставим их Text от 0 до 9, а также кнопку-сброс «C» (от Clear) и вспомогательное Edit2.

Для Button1Click:

with (Sender as TButton) do

begin

if Edit1.Text = «0» then Edit1.Text:= Text

else Edit1.Text:= Edit1.Text + Text; // Ввод числа

end;

Для остальных кнопок 2…9 и 0 введем ссылку: в Events на OnClick: Button1Click; // Ввод числа с любой кнопки

Теперь нажатие на любую кнопку-число отправит ее Text (0…9) в Edit1.Text.

Введем кнопки-действия: +, -, *, /, sqr, sqrt и power, sin, cos, Tan, Ln, Log. Для каждой определим сходный код:

S1:=Edit1.Text; // Первое число в глобальную переменную

Edit3.Text:= Button16.Text; // Выводим знак операции

Edit1.Text:= ' '; // Очищаем Edit1 от 1го числа для второго

Button21.OnClick (Sender); // Ссылка на действия с числами

Свойство Sender позволяет перейти на Button2, где имеет место код для всех действий:

//Если операция над 1-м числом – квадратный корень и др.

if Edit3.Text = ’sqrt’ then // Если первым вычисляем корень

begin

Edit2.Text:= «1»;

Edit1.Text:= FloatToStr (sqrt (StrToFloat (s1)));

s1:= Edit1.Text;

EXIT;

end;

//Если 1-е число из 2-х чисел

if Edit2.Text = «1» then

begin

Edit1.Text:= ' '; // Очищаем Edit1 от 1го числа для второго

Edit2.Text:= «2»; // Отмечаем следующее нажатие как 2-е

EXIT;

end

else // Если 2-е число введено

begin

if Edit3.Text = '+' then Edit1.Text:= FloatToStr (StrToFloat (s1) + StrToFloat (Edit1.Text));

************************

Введем также операции с памятью: M+, M-, MR, MC и возможность вводить тригонометрические функции: град или Пи.

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

Рис. 14. Программа для смартфона «Школьный калькулятор»

Рис. 15. Инспектор свойств компонентов.

5. Типы программ в DelpHi Android

В Delphi Android существует множество компонентов и еще больше свойств и методов, но далеко не все они нужны в обычном программировании. Можно выделить несколько типов программ в зависимости от задач и сложности.

Прикладные программы.

Прикладные программы как раз и являются основной задачей для Delphi изначально, хотя теснятся сейчас множеством любителей. Между тем, на Delphi можно создать (и создано) достаточно прикладных программ, которые по виду и функционалу близки к Word и Excel.

Для частных прикладных задач для профессионалов можно создавать сложные и функциональные программы минимумом средств как в Delphi 7, так и в Delphi Android. Фактически, для практически любой программы такого типа достаточны: