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


Виталий Донцов

8.3. КОМПОНЕНТ СПИСОК – ListBox

Компонент ListBox представляет собой Список элементов. Свойства: Count – число элементов списка; Items – массив строк списка; ItemIndex – номер элемента в списке (-1 если ничего не выбрано); text – все содержимое компонента; Sorted – сортировка элементов.

В свойстве items нажав на три точки (…) можно открыть String List Editor и заполнить список (начинается с 0).

Добавить элемент списка можно командой:

ListBox.Items.Add («Вводимый текст»);

причем можно вставить и объект: ListBox.AddObjectsToList ();

Свойство AlternatingRowBakground позволяет окрасить через один.

Свойство columns разделит список на колонки.

Cвойство ShowCheckboxes покажет флажки.

Cвойство ListStyle – горизонтальный или вертикальный;

MultiSelectStyle – разрешает множественный выбор.

Заполнять многостраничный список строками из Memo:

ListBox1.Items:= Memo13.Lines;

Можно каждую строчку, выделив мышью или в Items Editor, форматировать отдельно: тип, размер, цвет шрифта… Или программно:

listbox1.ListItems[n].StyledSettings:= listbox1.ListItems [n].StyledSettings – [TStyledSetting. Family, TStyledSetting.Size];

listbox1.ListItems[n].Font. Family:=«Tahoma’;

listbox1.ListItems[n].Font.Size:= 14;

Главные функции работы с ListBox:

listbox1.ListItems[n].Font. Family:= «Tahoma’;//Шрифт

listbox1.ListItems[n].Font.Size:=;//Размер шрифта

istBox1.ItemHeight; // Высота строки

istBox1.Items. LoadFromFile («Имя_Файла»);//Загрузка файла

ListBox1.Items.SaveToFile («Имя_Файла»); //Сохранить файл

ListBox1.Items.Add («Новая Строка»); //Строка в конец списка

ListBox1.Items.Insert (i, «Новая_Строка»); // Добавление строки перед строкой с номером i

ListBox1.Text – все данные списка;

Индекс строки: i:= ListBox3.ItemIndex;

Получить текст выделенной строки:

str:= ListBox1.Items[ListBox1.ItemIndex];

Доступ к элементу списка:

ListItems [Index] или ItemByIndex (Index);

или with ListBox1 do s:= Items [ItemIndex];

Выделить все: SelectAll; Снять выделение: ClearSelaction;

Поменять местами элементы: Excange [Item1, Item2];

Удаление строки: ListBox1.Items.Delete (i);

Сортировка списка: ListBox1.Sorted:= True;

Поставить в соответствие строкам Списка ячейки Таблицы:

with ListBox1, StringGrid1 do Cells [i, j]:= Items [ItemIndex];

Прокрутить список (выбранная строка вверху):

ListBox1.ScrollToItem(ListBox1.ItemByIndex (n);


Рис. 21. Заполнение строчек ListBox (2 колонки).


Свойство Events: OnClick – основное для работы с компонентом, при этом на первое касание строки она выделяется (серым), на второе – выполняется запрограммированное действие.

Загрузить компонент данными можно и таким образом:

for i:= 0 to ADevices.Count-1 do

begin

Item:= TListBoxItem.Create (ListBox1);

Item.StyleLookup:= ’listboxitembottomdetail’;

Item. ItemData. Text:= ADevices[i].DeviceName;

Item. ItemData.Detai= ADevices[i].Address;

ListBox1.AddObject (Item);

end;

Здесь также видна возможность редактирования стиля списка:

Item.StyleLookup:= ’listboxitembottomdetail’;

Позволяет загружать список из строки и уменьшенной подстроки:

Item. ItemData. Text:= ADevices[i].DeviceName;

Item. ItemData.Detail:= ADevices[i].Address;

Свойство Bitmap позволяет ассоциировать с элементом картинку.

Полная очистка списка осуществляется методом Clear, обновление:

var

ListBoxGroupHeader: TListBoxGroupHeader;

begin

ListBox1.BeginUpdate;

ListBox1.Clear;

ListBoxGroupHeader:= TListBoxGroupHeader.Create (ListBox1);

ListBoxGroupHeader. Text:=«Files for Sending.»;

ListBox1.AddObject (ListBoxGroupHeader);

ListBox1.EndUpdate;

end;


Можно индивидуально формировать строки списка, в том числе ширину и высоту строк (Общие свойства в Object Inspector – ItemWith и ItemHeight будут отображать нули).

Компонент часто используют для ввода списка, например, файлов:

var

n: Integer;

s, sd: String;

ListBoxGroupHeader: TListBoxGroupHeader;

begin

//Очищаем Memo и ListBox

Memo1.Lines.Clear;

ListBox1.BeginUpdate;

ListBox1.Clear;

ListBoxGroupHeader:= TListBoxGroupHeader.Create (ListBox1);

ListBoxGroupHeader. Text:=«Files List.»;

ListBox1.AddObject (ListBoxGroupHeader);

ListBox1.EndUpdate;

//Ищем и вносим в ListBox1 все *.txt файлы из downlowd

n:=0;

sd:= '/storage/emulated/0/Download’;

for s in TDirectory.GetFiles (sd, «*.txt’) do

begin

n:=n+1;

ListBox1.Items.Add (Copy (s, Length (sd) +2,100));

listbox1.ListItems[n].StyledSettings:= listbox1.ListItems [n]. StyledSettings – [TStyledSetting. Family, TStyledSetting.Size]; //Формат

listbox1.ListItems[n].Font. Family:=«Tahoma’;

listbox1.ListItems[n].Font.Size:= 14;

end;

if n = 0 then

ShowMessage («Нет *.txt файлов в Download!»)

else

ShowMessage («Обнаружено ‘ + IntToStr (n) + «файлов).

Использован вариант перечисления: for s in, а путь к директории объявлен прямо: '/storage/emulated/0/Download’, что возможно при объявлении разрешений на чтение файлов из внешних источников; перед открытием файлов ListBox обновляется, это нужно делать внутри методов:

ListBox1.BeginUpdate;

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

ListBox1.EndUpdate;

Мы используем куки-файлы, чтобы вы могли быстрее и удобнее пользоваться сайтом. Подробнее