4

名前やその他のデータを一覧表示するためにDelphi2010とTListViewを使用しています。最初の2列は、名前と名です。

キャプション=姓
SubItems[0]=名

ListViewをこれらの2つの列で並べ替えるにはどうすればよいですか?これらはリストビューが並べ替えられる列のみであり、常に並べ替えを維持したいと思います(アイテムの追加、編集、削除時)

どうすればこれを達成できますか?

4

1 に答える 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;
于 2013-02-24T23:56:29.350 に答える