Вместо 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]);
}
}
//---------------------------------------------------------------------------
Вот и все! А я уже чуть сам не сел эту сортировку писать