Gruppo di articoli all'interno dell'oggetto TlistView?
-
02-01-2020 - |
Domanda
Sto cercando di raggruppare gli elementi all'interno dell'oggetto TlistView, ma non riesco a trovare la classe responsabile del raggruppamento degli oggetti, né sono stato in grado di trovare tali all'interno della documentazione.
- .
- Qual è la classe responsabile della raggruppamento degli elementi all'interno dell'oggetto TlistView e come usarlo correttamente?
La piattaforma è Firemonkey (Android / IOS) / Delphi XE6
Soluzione
La proprietà che credo che ti riferisca a è TListGroups
, una collezione che contiene elementi generacoliatagcode. C'è un Demo fornito nella documentazione Delphi.
Sfortunatamente, è disponibile solo nel VCL e non FMX, poiché la funzionalità sottostante fa parte del controllo di Windows ListView che TListGroup
Wraps.
Il più vicino è possibile ottenere in FMX utilizza TListView
e un TListBox
, che è coperto nel tutorial multi-dispositivo utilizzando i componenti di ListBox per visualizzare una vista tabella (iOS e Android) in 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;
.
Questo produce (immagine dal Docwiki indicata)
Altri suggerimenti
Questo è facilmente realizzato nel controllo FMX TListView durante l'utilizzo di Livebindings collegando il campo TListViewItem.header.break al fieled che si desidera raggruppare (sarà un campo nel tuo DB ridondante su molti record).
.