用ListView做 Item sort時,設成stText會有問題!? |
尚未結案
|
ychch0819
一般會員 ![]() ![]() 發表:25 回覆:29 積分:15 註冊:2006-08-09 發送簡訊給我 |
最近用到ListView,在試著用Item來Sort時遇到一個奇怪的現象…(用BCB6和 BCB5都一樣)
我的Sort Function 就用內建的…沒有另外寫… 每次按下的Button都會固定產生四項Item… 只要sort type 設成 stNone...就很正常… 可是只要sort type設成stText...當按下subitem做sort後…在按下一次按鈕…就會出現list out of index 錯誤… 這是BCB的問題嗎!?還是stText的關係… 我的程式碼如下… 按鈕的程式: void __fastcall TForm1::Button1Click(TObject *Sender) { if (LV1->Items->Count) LV1->Clear(); TListItem *item; item=LV1->Items->Add(); item->Caption="AAA"; item->SubItems->Add("12"); item=LV1->Items->Add(); item->Caption="BBB"; item->SubItems->Add("9"); item=LV1->Items->Add(); item->Caption="CCC"; item->SubItems->Add("25"); item=LV1->Items->Add(); item->Caption="DDD"; item->SubItems->Add("220"); } ListView Column Click的程式: void __fastcall TForm1::LV1ColumnClick(TObject *Sender, TListColumn *Column) { LV1->Tag=Column->Index; //將選擇之column index寫入Tag LV1->CustomSort(NULL,0); //執行sort , 0為升冪1為降冪 } ListView Compare的程式 void __fastcall TForm1::LV1Compare(TObject *Sender, TListItem *Item1, TListItem *Item2, int Data, int &Compare) { if(LV1->Tag==0) //選first column直接用caption { Compare=CompareText(Item1->Caption, Item2->Caption); } else { int id=LV1->Tag-1; //取得要sort之subitem之index Compare=CompareText(Item1->SubItems->Strings[id],Item2->SubItems->Strings[id]); } if(Data==1) //若是要Descending { Compare=-Compare; } } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |