Читать книгу Программирование для Android и работа с датчиками в среде Delphi 11 - Виталий Иванович Донцов - Страница 17

9. КОМПОНЕНТЫ ДЛЯ РАБОТЫ С ДАННЫМИ – Таблицы и Базы

Оглавление

Собственно, все компоненты текстового ввода/вывода рабо тают с данными, но традиционно именно Таблица предназначена для их накопления и отображения. Создать таблицу можно поместив ее на Форму и назначив число колонок через Items Editor, при этом могут быть назначены разные виды колонок для ввода разного типа данных (на практике ограничиваются обычной строковой колонкой и при необходимости преобразовани ем типов вводимых данных).


Рис. 24. Назначение колонок компоненту StringGrid через Item Editor.


В Delphi 10.3, 11, имеется как старая текстовая таблица StringGrid, так и новый введенный компонент Grid. Если работа с StringGrid такая же, как и ранее, то компонент Grid фактически представлен набором колонок, каждая из которых отображается и программируется отдельно. Чтобы добавить колонку программно теперь придется приводить новую конструкцию создания новой колонки с указанием ее ширины:

StringGrid1.AddObject(TStringColumn.Create (nil));

StringGrid1.Columns [i].Width:= 35;


Соответственно, удалить колонку можно оператором Release (после чего придется перенумеровывать колонки):

StringGrid1.Columns[i].Release;


Основные свойства таблицы остались прежние и отображены в Инспекторе объектов в свойствах Option.

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

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

Так как нулевые колонки никуда не делись, а важность нумерации строк остается, лучше убрать этот только мешающий элемент и оставить за нулевыми колонкой и строкой функции их нумерации или обозначения; при этом становится более понятным нумерация данных, не приходится помнить, что данные 1 находятся в строке 0 и при обращении к таблице постоянно изменять: n:= n-1.

Основным способом работы с таблицей остается работа с клетками [Cells] с указанием координат – колонки Columns (с) и строки Row (r): StringGrid1.Cells [c,r], с операторами присвоения:

StringGrid1.Cells [c,r]:= «текст» или переменной str: String;

str:= StringGrid1.Cells [c,r];


Так как часто содержание Таблицы – числа, то обычным является применение изменения типов данных: StrToInt (), IntToStr (), StrToFloat (), часто с одновременным форматированием: FloatToStrF (n, ffFixed, count всего цифр, count цифр после запятой).

Данным в таблице можно поставить в соответствие данные Memo (нумерация начинается также с 0 и также первую 0-строчку можно для ясности пропустить). Так же, как и в Memo число строк в таблице может быть ограничено, что прямо указывается в Инспекторе объектов в свойстве RowCount; однако, в таблице присутствуют еще и колонки, чего нет в Memo. Поэтому при обращении к Memo и обратно приходится переходить от 1-мерности Memo к 2-мерности таблиц, записывая в Memo все подряд, а при заполнении таблицы разбивая сплошной текст на участки соответствующие строкам и колонкам.

В Memo строки могут быть большой длины (автоматический перевод на другую видимую строку WardWrap:= true не отражается на нумерации строк).

Поэтому все строки таблицы в пределах одной колонки можно совместить, вводя разделитель (например «;») и записать длинную строку.

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

Большие таблицы можно визуально отражать с определенной строки – TopRow и колонки – LeftRow. Часто таблица предназначено только для чтения – ReadOnly или вообще для промежуточных действий и невидима – Visible:= false.

Новый тип таблиц – Grid позволяет вводить различный типы колонок, например, с цифровым вводом, избавляясь таким образом от необходимости переопределять тип вводимых данных. При этом основным элементов таблицы является колонка, а сама таблица представляет собой по существу, набор колонок разного типа. Ширину колонок можно изменять программно или визуально мышью, а также выделив колонку определить ее ширину в Инспекторе объектов или прямо двигая границу колонки мышью. Ширину строки определяет свойство в Инспекторе объектов.

В соответствии с основной идеей Firemonkey, согласно которой каждый компонент – это также и контейнер для других элементов, TGrid представляет собой контейнер в котором можно разместить FMX-объекты как коллекции строк:

TColumn: столбец таблицы с неопределенным содержимым. Можно использовать для создания своих столбцов (с ComboBox и другими элементами);

TStringColumn: столбец содержит только строки;

TCheckColumn: в столбце будут размещаться чекбоксы;

TProgressColumn: для отображения прогресса операции;

TPopupColumn: столбец со списком выбора;

TGlyphColumn: столбец с картинками;

TDate.. и Ttime.. – специально для даты и времени;

Tinteger… Currency… Float – для различных типов чисел.


Для смешанной таблицы работают обычные для StringGrid процедуры, так, для строки «3» четырех разнотипных колонок:

StringGrid1.Cells [0,3]:= «Это строка 3»; //Колонка для строк

StringGrid1.Cells [1,3]:= ’true’; //Колонка для CkeckBox

StringGrid1.Cells [2,3]:= ’21:20»; //Колонка для ввода времени

StringGrid1.Cells [3,3]:= «123»; //Колонка для чисел

StringGrid1.Cells [4,3]:= «2»; // Колонка № Glyph из ImageList


Базы данных – одно из востребованных возможностей для программ на персональных компьютерах, на приложениях для Android используются реже, однако, разработана специальная группа компонентов Fire, также часто используется база SQLite, встроенной в приложение (группа FireDoc).

Компонент FDConnection обеспечивает соединение с базой данных, компонент FDTable – доступ к таблицам, компонент FDQuery – связь с базой данных посредством SQL запросов. Отображение данных обычно идет для ключевых элементов в Списках, а основная информация – в Таблицах.

Компоненты для Баз данных занимают большую часть палитры Palette, хотя многие не доступны для платформы Android; работа с ними часто идет вместе с компонентами для работы с Интернет и гораздо лучше проводить их на персональном компьютере.

Также, для баз данных и WEB-приложения гораздо лучше подходит язык Phyton с библиотеками.


Рис. 25. Смешанная таблица StringGrid.

Программирование для Android и работа с датчиками в среде Delphi 11

Подняться наверх