Elemente innerhalb des TListView-Objekts gruppieren?
-
02-01-2020 - |
Frage
Ich versuche, die Elemente innerhalb des TListView-Objekts zu gruppieren, kann aber die Klasse, die für die Gruppierung der Objekte verantwortlich ist, nicht finden, und ich konnte sie auch nicht in der Dokumentation finden.
- Welche Klasse ist für die Gruppierung von Elementen innerhalb des TListView-Objekts verantwortlich und wie wird es richtig verwendet?
Die Plattform ist Firemonkey (Android/iOS) / Delphi XE6
Lösung
Die Immobilie, auf die Sie sich meines Erachtens beziehen, ist TListGroups
, eine Sammlung, die hält TListGroup
Artikel.Da ist ein Demo finden Sie in der Delphi-Dokumentation.
Leider ist es nur in der VCL und nicht in FMX verfügbar, da die zugrunde liegende Funktionalität Teil des Windows ListView-Steuerelements ist TListView
wickelt.
Das Beste, was Sie in FMX erreichen können, ist die Verwendung TListBox
und ein TListBoxGroupHeader
, das im Multi-Device-Tutorial behandelt wird Verwenden von ListBox-Komponenten zum Anzeigen einer Tabellenansicht (iOS und Android) im 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;
Dies ergibt (Bild aus dem angegebenen docwiki)
Andere Tipps
Dies ist leicht in der FMX TLISTView-Steuerung, während Sie LiveBindings verwenden, indem Sie Ihr TLISTViewItem.header.break-Feld an den von Ihnen gruppierenden Feld anschließen (es ist ein Feld in Ihrem dB, das über viele Datensätze redundant ist).