2013-02-24 89 views
4

我正在使用Delphi 2010和TListView列出名稱和其他數據。前兩列是姓&名TListView列排序(按前兩列排序)

標題=姓
子項目[0] =名字

我怎麼排序ListView控件由這兩列?這些只會是列表視圖將被排序的列,我希望始終保持排序(當添加,編輯,刪除項目時)

我該如何做到這一點?

+5

我會使用虛擬模式。不要讓GUI控件成爲你的數據結構。 – 2013-02-24 23:31:02

回答

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; 
+2

正是我期待的!謝謝! – JakeSays 2013-02-25 00:41:30