Pregunta

Estoy intentando agrupar los elementos dentro del objeto TListView, pero no puedo encontrar la clase responsable de agrupar los objetos, ni pude encontrarla dentro de la documentación.

  • ¿Cuál es la clase responsable de agrupar elementos dentro del objeto TListView y cómo usarlo correctamente?

La plataforma es Firemonkey (Android/iOS) / Delphi XE6

¿Fue útil?

Solución

La propiedad a la que creo que te refieres es TListGroups, una colección que contiene TListGroup elementos.Hay una manifestación proporcionado en la documentación de Delphi.

Desafortunadamente, sólo está disponible en VCL y no en FMX, ya que la funcionalidad subyacente es parte del control ListView de Windows que TListView envolturas.

Lo más cerca que puedes estar en FMX es usando TListBox y un TListBoxGroupHeader, que se trata en el Tutorial multidispositivo Uso de componentes ListBox para mostrar una vista de tabla (iOS y Android) en el 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;

Esto produce (imagen del docwiki indicado)

Sample table view listbox appearance in iOS and Android

Otros consejos

Esto se logra fácilmente en el control FMX TLISTVIEW mientras usa LiveBindingings conectando su campo TlistViewItem.HeerEl.Beaker.Beaking a los fijos que desea agrupar (será un campo en su DB que sea redundante en muchos registros).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top