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

Виталий Донцов – Delphi: реальности программирования для смартфонов (страница 3)

18

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

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

– наиболее важное свойство: Align – выравнивание; в Android на смартфоне важно, чтобы компоненты не «ехали» на разных экранах. Из множества типов выравнивания общеприменимы: Вверх, Вниз, Вправо, Влево и Client, растягивающий компонент на весь контейнер (Панель, Форму и пр.), обычно используют несколько панелей вплотную и выравнивание Вверх и Вниз, а между ними – Client. Также имеется выравнивание Scale, впрочем, изменение размеров происходит автоматически для разных экранов.

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

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

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

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

– добавление иконки (через ImageList Editor), без возможности ее сдвига,

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

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

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

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

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

4. Типы данных в Delphi 10.3

Типы данных, как обычно, объявляются перед началом программы (до begin) используя инициацию var:

var x,y:Integer; m: Double; n: Float; str1:String; // Строковая переменная.

Mas: array [1…100] of String; // Массив одномерный из 100 строк, начало с 0

Ar: array [0..9] of array [0..9] integer; // Многомерный массив, начало с 0.

D: array of real; // Динамический массив

MyChar: Char; // Тип для хранения простого символа.

R: TRect; //Область, ограниченную R. Left, R. Up, R. Right, R.Down.

Численные значения: Word, Integer, Doable, Float, Real; учитывая, что точность составляет 5—6 знаков, обычно используют Integer для целочисленных и Double для чисел с запятой, которые могут быть представлены также в формате Е: 3.14E+2 = 3.14E+00 = 3.14; 23.5Е-2 = 0.235. Для округления числа «x» удобно использовать Round (x), округляющий до ближайшего целого; также можно использовать для выделения целой части Trunk (x) и дробной части Frac (x).

Для ряда функций нужно добавить пакет math в User начала программы. Доступны многие математические функции, в том числе: абсолютное значение abs (х), квадрат sqr (x) и корень квадратный из х: sqrt (x); для степенной функции преобразование: xn = exp (n*ln (x); корень n-й степени из x = exp (1/n*lnx). Имеется также функция возведения XY: Power (x,y):

var   Z: Real; begin   Z:= Power (0.25, 0.5); {Z:= 0.5} end;

Функция получения вероятного числа: Random (n), по умолчанию пустые скобки () – вероятное число от 0 до 1; при «n» целочисленном – целочисленное значение от 0 до «n-1».

Символы представлены типом Char: Type: Char = #0..#255; Char:= «3». Код символа можно узнать по функции Chr (n). Код ANSI: #0…255. UNICODE: первые 256 символов = ANSI. Chr (66) = B; Char (67) = C.

var   myChar: Char; begin    myChar:= «G»; // Назначение из символьной константы    ShowMessage («Символ G = ' + myChar); //Получаем «Символ G = G»   myChar:= #65; // Назначение из целочисленной константы    ShowMessage («#65 = ' + myChar); // Получаем «#65 = А» end;

Присваивание значения требует двоеточия перед равенством: n:= 10; обычное равенство (=) используется в булевых значениях сравнения (true/false): if n = 10 then… Неравенство: X <> Y.

Массивы: важная часть программ для накопления данных. Могут быть:

– одномерные: Mas: array [1…100] of String; // все начинаются с 0.

– многомерныe: Ar: array [0..9] of array [0..9] of integer;

– динамический массив: D: array of real.

Перед использованием динамического массива устанавливается его длина (начинается с 0): setLeangth (D,20). Закрытие массива: D_M: =nil. элементы массива начинаются с 0, исключая строковой массив, начинающийся с 1.

Доступ к массиву по его индексу: n:= D [21]; соответственно: D [21]:= n. Для заполнения массива обычно применяется конструкция цикла:

for n:= 1 to 100 do

begin

D [n]:= n-1; //Нумерует компоненты массива D [100], начиная с 0

end;

Можно найти максимальное и минимальное значение и среднее по массиву: MaxIntVal (D); MinVal (D): double); Mean (D):double), копировать массив в другой с определенного компонента: D:= copy (D, 0, 20) и др.

Строки: ShortString: 255 символов и занимает в памяти 2 байта; String = AnsiString: 1031 символ. AnsiString или WideString содержат большое количество символов. В типе AnsiString символы кодируются в коде ANSI, а в типе WideString в коде Unicode. Общим типом является тип String. String [n] – ограничивает длину строки.

Со строками можно проводить множество операций:

– найти в строке субстроку, ее индекс: n:= Pos (subStr, str);

– копировать строку str c позиции index и числом знаков count: str1:= copy (str, index, count);

– аналогично удалить часть строки по индексу delete (str, index, count);

– вставить субстроку: insert (str1, str0, index);

– длину строки можно узнать как: length (str).

Для выравнивания строк полезна функция вставки пустых символов: StringOfChar (»», count); если использовать моноширинный шрифт, то получим идеально выровненные в столбик строчки.

SelStart и SelLength устанавливают позицию 1-го символа и длину записи, SelText – выделенный текст, весь текст выделяет SelectAll; ClearSelection очищает выделенный текст; Clear очищает текст, Undo возвращает предыдущее действие.

Для копирования текста используют CopyToClipBorad, для вставки Paste, для замены символов StringReplace (). Перед копированием целесообразно выделить текст для копирования; так, Memo.CopyToClipBorad ничего не копирует, для копирования всего содержимого компонента Memo нужно предварительно выделить его содержимое:

Memo.SelectAll;