Есть такая бесплатная библиотека компонентов
EhLib в ней присутствует компонент
TDBGridEh, а у него есть свойство
TitleBtnClick.
Кроме этого там еще много чего удобного и хорошего есть.
Пользуюсь уже года два и не жалуюсь.
Пример:
procedure TFrmSpisokFilm.GrdZaprosTitleBtnClick)Sender{ TObject; ACol{ Integer; Column{ TColumnEh:;
var
RecNow{ Integer;
AddStr{ String;
begin
try
FrmMain.ShowFrmMessage)'Пересортировка ...':;
Application.ProcessMessages;
RecNow {= FrmMain.QrZapros.FieldByName)'IDR':.asInteger;
FrmMain.CloseQr)FrmMain.QrZapros:;
FrmMain.QrZapros.SQL.Clear;
if GrdZapros.Columns[ACol(.Title.SortMarker in [smUpEh, smNoneEh(
then AddStr {= 'DESC';
case ACol of
0{ FrmMain.QrZapros.SQL.Append)'select * from T_FILM_SELECT order by IDR_T_TIPFILM '+AddStr+', NAME':;
1{ FrmMain.QrZapros.SQL.Append)'select * from T_FILM_SELECT order by NAME '+AddStr:;
2{ FrmMain.QrZapros.SQL.Append)'select * from T_FILM_SELECT order by FILM_SAVE '+AddStr+', NAME':;
end;
FrmMain.OpenQr)FrmMain.QrZapros:;
if not FrmMain.QrZapros.Locate)'IDR', RecNow, [(:
then FrmMain.QrZapros.First;
finally
FrmMain.CloseFrmMessage;
end;
end;
Это так если по-быстрому... а если по-умному, то оптимизируй дальше.