大家好:
請問各位關於ListView排序,
目前我ListView顯示五行,
其中一行我故意弄成粗體字型顯示,
但經過排序之後,
粗體字沒有跟著一起排序
原本是顯示在第五行的資料為粗體
排序過後原本第五行的資料跑到第二行了。
但卻沒有顯示為粗體字型,
反而還停留再第五行為粗體,
請問各位大大要怎麼解決才好呢?
//--------------------------------------------------------------------------- #include
#pragma hdrstop #include "ListViewColors.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TStringList *Index;
bool Test = false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender)
{
Index = new TStringList;
TListColumn *pCol;
pCol = ListView1->Columns->Add();
pCol->Caption = "1";
pCol->Width = 50;
pCol = ListView1->Columns->Add();
pCol->Caption = "2";
pCol->Width = 50;
pCol = ListView1->Columns->Add();
pCol->Caption = "3";
pCol->Width = 150;
pCol = ListView1->Columns->Add();
pCol->Caption = "4";
pCol->Width = 150; TListItem *pItem1;
for (int i=6; i>0; i--)
{
Index->Add(IntToStr(i));
pItem1 = ListView1->Items->Add();
pItem1->ImageIndex = i;
pItem1->Caption = "";
pItem1->SubItems->Add(IntToStr(i));
pItem1->SubItems->Add("Index" IntToStr(i));
pItem1->SubItems->Add("測試" IntToStr(i));
} Index->SaveToFile(ExtractFilePath(Application->ExeName) "a.txt"); }
//--------------------------------------------------------------------------- void __fastcall TForm1::ListView1CustomDrawSubItem(TCustomListView *Sender,
TListItem *Item, int SubItem, TCustomDrawState State,
bool &DefaultDraw)
{
if ( (StrToInt(Index->Strings[Item->Index])) == 2)
{
ListView1->Canvas->Font->Style = TFontStyles() << fsBold;
ListView1->Canvas->Font->Size = 10;
}
}
//--------------------------------------------------------------------------- void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,
TListColumn *Column)
{
Test = !Test;
ListView1->Tag = Column->Index;//將選擇之column index寫入Tag
ListView1->CustomSort(NULL, Test); //執行sort , 0為升冪1為降冪
}
//--------------------------------------------------------------------------- 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;
}
//--------------------------------------------------------------------------- void __fastcall TForm1::ListView1Click(TObject *Sender)
{
if (ListView1->SelCount==0)
return;
int MailIndex = ListView1->Selected->Index;
Index->Strings[MailIndex] = 0;
Index->SaveToFile(ExtractFilePath(Application->ExeName) "a.txt");
}
//---------------------------------------------------------------------------