Hola mantraxer.
Mirá, yo en algunos casos uso una función que saque, creo de about.com pero no estoy seguro ahora.
Le hice alguna modificación pero pienso que te va a servir, aprovecha el evento OnTitleClick del DBGrid
cambiando el sentido del órden a cada click.
Te lo documento lo mejor que puedo, si queda algo que no entiendas me decímelo:
Código Delphi
[-]
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
{$J+} const
PrevColInx: Integer = -1;
Orden: array[-1..0] of string=(' ASC',' DESC'); Valor: Integer = 0; {$J-} var
Inx: Integer;
begin
Inx:= Column.Index; Valor:= not Valor; if (PrevColInx > -1) then with DBGrid1.Columns[PrevColInx] do
begin
Title.Font.Style:= Title.Font.Style - [fsBold];
Title.Color:= clBtnFace;
end;
with IBQuery1 do
begin
Close;
SQL.Text:= 'SELECT * FROM CLIENTES ORDER BY '+
DBGrid1.Columns[Inx].FieldName + Orden[Valor];
Open;
end;
with DBGrid1.Columns[Inx] do
begin
Title.Font.Style:= Title.Font.Style + [fsBold];
Title.Color:= clLime;
DBGrid1.SelectedField:= DBGrid1.Columns[Inx].Field;
end;
PrevColInx:= Inx; end;
Saludos.