ОБСУЖДЕНИЕ

Сортировка Stringgrid-a

2 ответов 8,8 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Добрый вечер!

Может подскажете, можно ли отсортировать StringGrid по столбцам силами самого StringGrid-а?
Если нет, то может есть что-то похожее с заложенной возможностью сортировки?
Функция-то очень простая и очень нужная, не может быть, чтобы небыло.

Заранее спасибо.
 
Вместо StringGrid-а использую ListView, свойство ViewStyle = vsReport.

Добавление новой строки в таблицу (4 столбца):

TListItem* ListItem;
ListItem = Form1->ListView1->Items->Add();
ListItem->Caption = string1;
ListItem->SubItems->Add(string2);
ListItem->SubItems->Add(string3);
ListItem->SubItems->Add(string4);


Сортировка таблицы при нажатии на заголовок столбца:

void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,
TListColumn *Column)
{
ColumnToSort = Column->Index;
((TCustomListView *)Sender)->AlphaSort();
}
//---------------------------------------------------------------------------

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]);
}
}
//---------------------------------------------------------------------------

Вот и все! А я уже чуть сам не сел эту сортировку писать :)
 
Статус
Закрыто для дальнейших ответов.