در مورد مرتب کردن(sort) ستون های یه DBGrid زیاد بحث شده این یه نمونه خوب برای سورت با کلیک بر روی عنوان ستون

procedure Tmain_frm.DBGrid1TitleClick(Column: TColumn);
var i: integer;
begin
if (Column.Title.Font.Style = [fsbold]) and (Column.Title.Font.Color = clWindowText)then begin
TADOQuery(Column.Grid.DataSource.DataSet).Sort:='['+Column.FieldName+']'+' DESC' ;
for i:=0 to TDBGrid(Column.Grid).Columns.Count-1 do begin
TDBGrid(Column.Grid).Columns[i].Title.Font.Style:=[];
TDBGrid(Column.Grid).Columns[i].Title.Font.Color:= clWindowText; end;
Column.Title.Font.Style:=[fsbold];
Column.Title.Font.Color:= clred; end
else begin
TADOQuery(Column.Grid.DataSource.DataSet).Sort:='['+Column.FieldName+']' ;
for i:=0 to TDBGrid(Column.Grid).Columns.Count-1 do begin
TDBGrid(Column.Grid).Columns[i].Title.Font.Style:=[];
TDBGrid(Column.Grid).Columns[i].Title.Font.Color:= clWindowText; end;
Column.Title.Font.Style:=[fsbold]; end;
end;


پ.ن. اگه بشه یه جوری این کد رو تغییر بدیم که یه فلش هم نشون بده عالی میشه