TListView列排序(按前两列排序)

4
我正在使用Delphi 2010和TListView列出姓名等数据。前两列是姓和名。
标题=姓 SubItems [0] = 名
如何按这两列对ListView进行排序?这些将是Listview按顺序排序的唯一列,我希望始终保持此排序方式(添加、编辑、删除项目时)。
我该如何实现这个功能?

5
我会尽力进行翻译:我会使用虚拟模式。不要让GUI控件成为你的数据结构。 - David Heffernan
1个回答

7
SortType 设置为 'stBoth',并实现一个 OnCompare 事件处理程序。例如:
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
var
  S1, S2: string;
begin
  S1 := Item1.Caption;
  if Item1.SubItems.Count > 0 then
    S1 := S1 + Item1.SubItems[0];
  S2 := Item2.Caption;
  if Item2.SubItems.Count > 0 then
    S2 := S2 + Item2.SubItems[0];

  Compare := CompareText(S1, S2);
end;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接