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

È stato utile?

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)

Sample Table View Listbox Aspetto in iOS e Android

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

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top