Yo lo que hago es el proceso siguiente:
Código Delphi
[-]
procedure TF_BuscarMecanic.DBGridBuscarTitleBtnClick(Sender: TObject;
ACol: Integer; Field: TField);
var c: string;
begin
Edit1.Text :='';
c:=Field.FieldName;
ComboBox1.Text:=c;
OrdenarGrid.Close;
if Sw_1 = 0 then
begin
OrdenarGrid.SQL[0]:= 'SELECT NOM, ID_MECANIC FROM H0001';
OrdenarGrid.SQL[1]:= 'WHERE BAIXA_EMPRESA IS NULL';
OrdenarGrid.SQL[2] :='ORDER BY '+ c + ' ASC';
Sw_1:=1;
end
else
if Sw_1 = 1 then
begin
OrdenarGrid.SQL[0]:= 'SELECT NOM, ID_MECANIC FROM H0001';
OrdenarGrid.SQL[1]:= 'WHERE BAIXA_EMPRESA IS NULL';
OrdenarGrid.SQL[2] :='ORDER BY '+ c + ' DESC';
Sw_1:=0;
end;
OrdenarGrid.Open;
OrdenarGrid.FieldByName(ComboBox1.Text).Index := 0;
DBGridBuscar.SetFocus;
end;
Donde Sw_1 es una variable Integer y privada del form, lo tengo combinado con un ComboBox para poder hacer la selección desde ambos componentes.
Nota: Utilizo firebird 1.5.
Saludos
Josep