TListViewOnColumnClick (C++)
Description
This example shows how to use the OnColumnClick and OnCompare events of a list view to let users sort the columns in a report-style list view by clicking the column headers. This requires a global variable to keep track of the column that was clicked. The OnColumnClick event handler sets the global variable that indicates the column to sort and calls AlphaSort.
Code
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TListItem *Item;
TListColumn *Column;
const char imagenames[3][20] = {
"C++ Image", "Borland Image", "Delphi Image"};
const char Col2Array[3][40] = {
"Documentation for the C++ icon.",
"Borland icon.", "Delphi icon."
};
// Create a ListView item for each image in the ImageList.
ListView1->SmallImages = ImageList1;
ListView1->LargeImages = ImageList1;
for (int i = 0; i < ImageList1->Count; i++)
{
Item = ListView1->Items->Add();
Item->Caption = imagenames[i];
Item->ImageIndex = i;
Item->SubItems->Add(Col2Array[i]);
}
// Create two columns to show during viewing as vsReport.
Column = ListView1->Columns->Add();
Column->Caption = "Column 1";
Column->Width = 200;
Column = ListView1->Columns->Add();
Column->Caption = "Column 2";
Column->Width = 200;
ListView1->ViewStyle = vsReport;
}
int ColumnToSort = 0;
/*
The OnColumnClick event handler sets the global variable
to indicate the column to sort and calls AlphaSort.
*/
void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,
TListColumn *Column)
{
ColumnToSort = Column->Index;
dynamic_cast<TCustomListView *>(Sender)->AlphaSort();
}
/*
The OnCompare event handler causes the list view
to sort on the selected column.
*/
void __fastcall TForm1::ListView1Compare(TObject *Sender, TListItem *Item1,
TListItem *Item2, int Data, int &Compare)
{
if (ColumnToSort == 0)
Compare = CompareText(Item1->Caption,Item2->Caption);
else
{
int ix = ColumnToSort - 1;
Compare =
CompareText(Item1->SubItems->Strings[ix], Item2->SubItems->Strings[ix]);
}
}
Uses
- Vcl.ComCtrls.TCustomListView.OnColumnClick ( fr | de | ja )
- Vcl.ComCtrls.TCustomListView.AlphaSort ( fr | de | ja )
- Vcl.ComCtrls.TCustomListView.OnCompare ( fr | de | ja )
- System.SysUtils.CompareText ( fr | de | ja )
- Vcl.ImgList.TCustomImageList.GetCount ( fr | de | ja )
- Vcl.ComCtrls.TListItem.Caption ( fr | de | ja )
- Vcl.ComCtrls.TListColumn.Width ( fr | de | ja )
- System.Classes.TCollectionItem.Index ( fr | de | ja )
- System.AnsiStrings.CompareText ( fr | de | ja )