Группировка элементов внутри объекта TListView?
-
02-01-2020 - |
Вопрос
Я пытаюсь сгруппировать элементы внутри объекта TListView, но я не могу найти класс, ответственный за группировку объектов, и я не смог найти такой в документации.
- Какой класс отвечает за группировку элементов внутри объекта TListView и как его правильно использовать?
Платформа - Firemonkey (Android/iOS) / Delphi XE6
Решение
Свойство, о котором, как я полагаю, вы говорите, это TListGroups
, коллекция , которая содержит TListGroup
Товары.Там есть ДЕМОНСТРАЦИЯ предоставлено в документации Delphi.
К сожалению, он доступен только в VCL, а не в FMX, поскольку базовая функциональность является частью элемента управления Windows ListView, который TListView
обертывания.
Самое близкое, что вы можете получить в FMX, - это использовать TListBox
и еще TListBoxGroupHeader
, который описан в Руководстве по работе с несколькими устройствами Использование компонентов ListBox для отображения табличного представления (iOS и Android) в docwiki ( доквики ):
procedure TForm1.FormCreate(Sender: TObject);
var
c: Char;
i: Integer;
Buffer: String;
ListBoxItem : TListBoxItem;
ListBoxGroupHeader : TListBoxGroupHeader;
begin
ListBox1.BeginUpdate;
for c := 'a' to 'z' do
begin
// Add header ('A' to 'Z') to the List
ListBoxGroupHeader := TListBoxGroupHeader.Create(ListBox1);
ListBoxGroupHeader.Text := UpperCase(c);
ListBox1.AddObject(ListBoxGroupHeader);
// Add items ('a', 'aa', 'aaa', 'b', 'bb', 'bbb', 'c', ...) to the list
for i := 1 to 3 do
begin
// StringOfChar returns a string with a specified number of repeating characters.
Buffer := StringOfChar(c, i);
// Simply add item
// ListBox1.Items.Add(Buffer);
// or, you can add items by creating an instance of TListBoxItem by yourself
ListBoxItem := TListBoxItem.Create(ListBox1);
ListBoxItem.Text := Buffer;
// (aNone=0, aMore=1, aDetail=2, aCheckmark=3)
ListBoxItem.ItemData.Accessory := TListBoxItemData.TAccessory(i);
ListBox1.AddObject(ListBoxItem);
end;
end;
ListBox1.EndUpdate;
end;
В результате получается (изображение из указанной docwiki)
Другие советы
Это легко выполняется в управлении FMX TlistView при использовании Livebindings, подключив поле TlistViewitem.header.break до filed, который вы хотите сгруппировать (это будет поле в вашей БД, который является избыточным количеством во многих записей).
.