如何排序 ListView 元件內指定的 Column |
答題得分者是:ccchen
|
yamigo
一般會員 發表:19 回覆:41 積分:12 註冊:2002-12-05 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 如題~如何排序 ListView 元件內指定的 Column .. 假設有一個 ListView 元件,內有 5 個 Columns.. 請問我如何排序指定的 Column .. 例如我要針對第 2 或第 4 個做升降冪排序~~ 小弟在 ColumnClick Event 裏下指令, 但卻苦無資料可供參考,在貴站或其它相關站台上, 也找不到類似主題與解決方法, 是否能在此尋求各位前輩們解答?yamigo 你好: 請先參考以下連結 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
1. 將ListView之SortType設為stBoth
2. ColumnClick時 void __fastcall TForm1::ListView1ColumnClick(TObject *Sender, TListColumn *Column) { ListView1->Tag = Column->Index;//將選擇之column index寫入Tag ListView1->CustomSort(NULL,0); //執行sort , 0為升冪1為降冪 } //--------------------------------------------------------------------------- 3. 於 onCompare void __fastcall TForm1::ListView1Compare(TObject *Sender, TListItem *Item1, TListItem *Item2, int Data, int &Compare) { if (ListView1->Tag == 0) //選first column直接用caption Compare = CompareText(Item1->Caption, Item2->Caption); else { int id =ListView1->Tag-1; //取得要sort之subitem之index Compare = CompareText(Item1->SubItems->Strings[id],Item2->SubItems->Strings[id]); } if (Data==1) //若是要Descending Compare = -Compare; }[NOTE] CompareText大小寫不分, 依需要可改用其他字串比較方式 |
yamigo
一般會員 發表:19 回覆:41 積分:12 註冊:2002-12-05 發送簡訊給我 |
|
jazchen
一般會員 發表:1 回覆:2 積分:0 註冊:2004-02-18 發送簡訊給我 |
感謝 ccchen 提供的範例 小弟順利撰寫出 TListView 指定 Column 排序的功能
我也另用兩個變數來紀錄上次排序的 Column 以及其 升冪或降冪
可以再下一次排序變更 升冪或降冪 的排序方式 但是由於發生錯誤,仔細觀看程式碼!
也上網去找其他範例,發現一些我搞不太懂的問題或情況:
void __fastcall TForm1::ListView1ColumnClick(TObject *Sender, TListColumn *Column) { ListView1->Tag = Column->Index;//將選擇之column index寫入Tag ListView1->CustomSort(NULL,0); //執行sort , 0為升冪1為降冪 }中的 ListView1->Tag = Column->Index; 是利用 TListView 物件的 Tag 屬性來紀錄要排序的 Column 如果 TListView 物件內的 listitem 有減少的動作 而沒有把 Tag 設定成 0 ,則程式有可能會發生錯誤 ListView1->CustomSort(NULL,0); 其中第一個參數 NULL 是什麼意思?? 第2個參數 0 便是 ListView1Compare(TObject *Sender, TListItem *Item1, TListItem *Item2, int Data, int &Compare) 中的第4個參數 (int Data) 對吧 這裡應該只要是傳遞 int 型態進來即可 應該算是一個自訂用途的參數~ 這樣對嗎?? |
sikchun
一般會員 發表:5 回覆:7 積分:2 註冊:2006-07-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |