Pergunta

Estou tentando agrupar os itens dentro do objeto TListView, mas não consigo encontrar a classe responsável por agrupar os objetos, nem consegui encontrar dentro da documentação.

  • Qual é a classe responsável por agrupar itens dentro do objeto TListView e como usá-la corretamente?

A plataforma é Firemonkey (Android/iOS) / Delphi XE6

Foi útil?

Solução

A propriedade a que acredito que você está se referindo é TListGroups, uma coleção que contém TListGroup Unid.Há um demonstração fornecido na documentação do Delphi.

Infelizmente, ele está disponível apenas no VCL e não no FMX, pois a funcionalidade subjacente faz parte do controle ListView do Windows que TListView embrulhos.

O mais próximo que você pode chegar no FMX é usar TListBox e um TListBoxGroupHeader, que é abordado no Tutorial sobre vários dispositivos Usando componentes ListBox para exibir uma visualização de tabela (iOS e Android) no 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;

Isso produz (imagem do docwiki indicado)

Sample table view listbox appearance in iOS and Android

Outras dicas

Isso é facilmente realizado no controle FMX TlistView enquanto usa o LiveBindings conectando seu campo TlistViewItem.header.break para o FIELED que você deseja agrupar (será um campo no seu DB que é redundante sobre muitos registros).

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top