我正在尝试将项目分组到TListView对象中,但是我找不到负责对对象进行分组的类,我也无法在文档中找到这样的内容。
该平台是Firemonkey(Android / iOS)/ Delphi XE6
答案 0 :(得分:8)
我认为你所指的属性是TListGroups
,这是一个包含TListGroup
个项目的集合。 Delphi文档中提供了demo。
不幸的是,它仅在VCL而非FMX中可用,因为底层功能是TListView
包装的Windows ListView控件的一部分。
您在FMX中最接近的是使用TListBox
和TListBoxGroupHeader
,多设备教程使用ListBox组件显示表视图(iOS和Android) <{3}}中的:
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;
这会产生(来自指示的docwiki的图像)
答案 1 :(得分:1)
在使用Livebindings时,可以通过将TListviewItem.header.break字段连接到要分组的字段来轻松地在FMX TListview控件中完成此操作(它将是db中的一个字段,在许多记录上都是冗余的)。