全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1614
推到 Plurk!
推到 Facebook!

用ListView做 Item sort時,設成stText會有問題!?

尚未結案
ychch0819
一般會員


發表:25
回覆:29
積分:15
註冊:2006-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-10 23:42:22 IP:118.169.xxx.xxx 訂閱
最近用到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;
}
}
系統時間:2024-03-29 19:09:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!