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

War es hilfreich?

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)

Sample table view listbox appearance in iOS and Android

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top