Mam problem z sortowaniem kolumn w TListView, a mianowicie po kliknięciu w nagłówki kolumn sortowanie jest dobre jeśli w kolumnie są wartości słowne, ale jeśli same liczby na czym mi też zależy niestety sortowanie jest błędne.
Zamieszczam kod:
- Kod: Zaznacz cały
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int sort; bool column[20]; int sort2; bool column2[20];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TListColumn *ListCol;
TListItem *ListIt;
ListIt = ListView1->Items->Add();
ListIt->Caption = "Beata";
ListIt->SubItems->Add("30");
ListIt = ListView1->Items->Add();
ListIt->Caption = "Iwona";
ListIt->SubItems->Add("138910");
ListIt = ListView1->Items->Add();
ListIt->Caption = "Syliwa";
ListIt->SubItems->Add("60370");
ListIt = ListView1->Items->Add();
ListIt->Caption = "Aneta";
ListIt->SubItems->Add("70");
ListIt = ListView1->Items->Add();
ListIt->Caption = "Zenobia";
ListIt->SubItems->Add("40");
ListIt = ListView1->Items->Add();
ListIt->Caption = "FIlona";
ListIt->SubItems->Add("370");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,
TListColumn *Column)
{
sort=Column->Index;
((TCustomListView *)Sender)->AlphaSort();
if (column[sort]==false) column[sort]=true;
else column[sort]=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1Compare(TObject *Sender, TListItem *Item1,
TListItem *Item2, int Data, int &Compare)
{
if (column[sort]==true)
{
if (sort==0)
Compare=CompareText(Item1->Caption,Item2->Caption);
else
Compare=CompareText(Item1->SubItems->Strings[sort-1],Item2->SubItems->Strings[sort-1]);
}
else
{
if (sort==0)
Compare=CompareText(Item2->Caption,Item1->Caption);
else
Compare=CompareText(Item2->SubItems->Strings[sort-1],Item1->SubItems->Strings[sort-1]);
}
}
//---------------------------------------------------------------------------
Oraz dla ułatwienia cały projekt z BCB6.
Projekt Sortowania
Mam nadzieję, że ktoś z Was pomoże mi w tej kwestii sortowania.
Pozdrawiam