– добавление иконки (через 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.