Компонент 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.Detail:= 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;
Компонент ComboBox представляет собой комбинацию Списка и Поля редактирования, что позволяет вводить данные как с клавиатуры, так и по индексу списка, выбрать данные в списке, удалить элемент списка. Он занимает всего одну строчку, в отличие от ListBox.
Count число элементов списка; DropDownCount – количество элементов в раскрытом списке; Text – текст находящийся в поле редактирования (ввода); Items – массив строк списка; ItemIndex – номер элемента в списке (-1 если ничего не выбрано); Sorted – сортировка элементов. В свойстве items можно открыть String List Editor и запол нить список (начинается с 0).
Команда ComboBox1.Items.Add («Вводимый текст») добавит элемент списка; а команда ComboBox1.Items.Clear – очистит список. Вместо стиля текста имеется свойство Style Name.
Рис. 22. Компонент ComboBox с картинкой и указателем «V».
Аналогично, можно использовать компонент PopupBox:
PopupBox1.Items.Add («Item1»);
Компонент может загружать / сохранять данные в файл.
Компонент StatusBar обычно выровнен по нижней части формы и отображает информацию о приложении по мере его запуска: ProgressBar1.Value:= ProgressBar1.Value + n;
Компонент ToolBar предоставляет пользователю панель инструментов или набор команд, которые можно использовать для активации определенных функций в программном обеспечении. Элементы управления панелью инструментов часто используются в программах для обработки грамматики или текста и обычно предоставляют пользователю быстрый доступ к часто используемым функциям, таким как выделение текста жирным шрифтом, курсивом…
FireMonkey введен еще один компонент для просмотра списка, который можно использовать для хранения и представления различных типов элементов – ListView.
Элементы в виде списка могут иметь одну или несколько функций:
Заголовок или текст (используя элемент Item. Text);
Связанное изображение (с помощью Item.Bitmap);
Значок, с помощью Items. Appearance;
Прикрепленная графическая или текстовая кнопка, с помощью Item. ButtonText.
Можно настроить внешний вид представления списка, изменив расположение элементов списка, включая заголовок, связанное изображение, текстовые сведения или значок аксессуара.
В ListView есть режим редактирования, в котором можно выбрать один или несколько элементов.
Элементы в TListView можно добавлять либо путем привязки к источнику данных, либо с помощью кода: ListView.Items.Add для добавления в конец, или внедрить внутрь: ListView.Items.Insert.
Удалить строку: TListView.Items.Delete (i);
Изменить текст в выбранной ячейке на текст в Edit:
ListView1.Items.Item [n]:= Edit1.Text;
Число в строку: i.ToString;
Имеется уточняющее свойство: Detail;
Для заполнения, вставки, сортировки списка используют:
ListView1.BeginUpdate…..EndUpdate.
Свойство OnFilter позволяет тонко обращаться с элементами.
Свойство ItemAppearance (в Onject Inspector) позволяет определить: колонтитулы, внешний вид и поведение компонента:
подсвойство ItemAppearance – пояснительный рисунок, наличие основного и детализированного текста, наличие управляющей кнопки в режиме просмотра;
подсвойство ItemEditAppearance – поведение элемента в режиме редактирования.
В коде программы вместо этих свойств используют: ItemAppearanceName и ItemEditAppearanceName.
За неимением компонента RichEdit его функции исполняет Memo, имеющая практически те же свойства и действия (кроме форматирования текста); по внешнему виду это простое белое поле.
Нужно установить свой стиль шрифта (в TextSettings, отменив все в StyledSettings); CheckSpelling определяет возможность проверки орфографии; обязательно укажите в настройках WordWrap = true, чтобы не вмещающийся в строчку текст автоматически переходил на строчку вниз. Прокрутка не вмещающегося на экране текста установлена в свойствах автоматически.
Для простого вывода информации нужно установить запрет редактирования: ReadOnly:= true.
Основное свойство компонента: Lines, в которое вводится текст при создании компонента или программно (что является основным):
– текст добавит команда Memo1.Lines.Add («Вводимый текст»);
– получить строчку текста по индексу: str:= memo1.Lines [n];
– скопировать весь текст:
Memo1.SelectAll; Memo1.CopyToClipboard;
Компонент Memo удобен также как база данных. Он может хранить большое количество информации, а заполнить его очень просто, скопировав в Lines в Object inspector при создании компонента строчки, созданные в обычном Word, при этом шрифт сам примет все значения, установленные для Memo.
Можно достаточно просто установить обмен информацией с компонентом Таблица, поставив его Cells [] в соответствие строкам Memo (счет начинается с 0 для обоих компонентов).
Для того, чтобы придать данным из Memо 2-мерный тип, характерный для Таблицы, можно отделить друг от друга части текста в строке, предназначенные для строк (или колонок) Таблицы, например (;), а при загрузки Таблицы использовать функции работы с текстом: копирования части текста до определенного элемента (;), позицию этого элемента, удаление предыдущей части текста для копирования следующей части текста.
Но если в Delphi 7 количество строк в Memo может составлять несколько тысяч, то в ситуации с Android число строк может быть ограничено; при этом можно сохранить и большее число строк, но при обращении Memo1.Lines [101] и более может происходить сбивка адресации и неуправляемые действия.
Для просмотра строчек вне видимости, автоматически предусмотрены установки по скроллингу.
Несомненным достоинством компонента является наличие собственого свойства сохранения и загрузки в файл (без проблем – во внутреннюю область):
Memo1.Lines.SaveToFile (GetHomePath + '/Имя файла. txt’);
Memo1.Lines. LoadFromFile (GetHomePath + '/Имя. txt’);
Другие функции работы с текстом в Memo:
Memo1.ClearSelection; // удалить выделенный текст
Memo1.CutToClipboard; // вырезать в буфер обмена
Memo1.CopyToClipboard; // скопировать в буфер обмена
Memo1.PasteFromClipboard; //вставить из буфера обмена
Memo1.SelText; //функция возвращает текстовую строку выделенного текста
Memo1.Undo; // отмена последнего изменения
Memo1.Lines.Delete (0); //удаление 0 строки
Memo1.SelStart:= 0; //начальное положение выделения
Memo1.SelLength:= 15; //Длина выделенного текста
Если необходимо всегда видеть выделенный текст, даже при переходе управления на другой элемент управления, то установите свойство HideSelection в false.
Компоненты CkeckBox и RadioButton используются для выбора уже известных условий.
Компоненты RadioButton обычно объединяются в группы внутри компонента-контейнера GroupBox; активна одна кнопка, для определенной группы, что достигается простым помещением группы связываемых кнопок в контейнер GroupBox, а также приданием одинакового имени (например «1») свойству GroupName.
Как сам контейнер, так и кнопки, имеют свойство Text, что может использоваться для показа условий.
Выбрать компонент можно функцией:
RadioButton1.isChecked:= true;
Работа с компонентом производится на свойства в Events: OnChange и OnClick, а также как выбор в коде:
if RadioButton1.isChecked = true then ….
Также удобно изменять текст при компоненте:
if RadioButton1.isChecked = true then RadioButton1.Text:= «Выбор сделан»
else RadioButton1.Text:= «Отказ от предложения».
Надо отметить, что компонент прихотлив, и довольно часто неизвестно что от него ждать; если он явно не виден в настоящий момент, то его состояние (isChecked) может и не считываться, в таком случае следует поставить ему в самом начале, когда компонент виден, в соответствие компонент Edit, который доступен в любом состоянии и в любом месте:
if RadioButton1.isChecked = true then Edit1.Text:= «1»; // В начале при выборе RadioButton
if Edit1.Text =– «1» then …. // в любом месте программы
Рис. 23. Элементы RadioButton в контейнере GroupBox позволяют сделать выбор.
CheckBox.
Флажок (независимый переключатель) отличается от выше описанного переключателя тем, что в группе флажков одновременно можно установить флажки в любой комбинации (в том числе могут быть установлены или сброшены все флажки).
Флажок может находиться в установленном или сброшенном состоянии. Одиночный флажок часто используется, например, для включения / выключения какого-либо режима. Флажок выглядит как прямоугольник с текстовым заголовком. Если в нем есть галочка, то обозначенная этим флажком опция включена (в этом случае также говорят, что флажок отмечен). Если прямоугольник пуст, то флажок снят, или сброшен. Дейстия с одним флажком не отражаются на состоянии других флажков, если это не было специально предусмотрено.
В Events используют свойства OnClick и OnChange, но обычно просто в программе используются состояния группы флажков и в зависимости от этого выполняются действия.
О проекте
О подписке
Другие проекты