esto lo tengo en el evento ontittleclick del tdbgrid. cada columna corresponde a un campo.
case (column.index) of
0

rden:=' ORDER BY CODIGOCOLOR';
1

rden:=' ORDER BY COLOR';
2

rden:=' ORDER BY CANTIDAD';
3

rden:=' ORDER BY FECHA';
else
orden:=' ORDER BY MOVIMIENTO';
end;
IF (SENTIDO=' ASC')THEN
BEGIN
SENTIDO:=' DESC';
END
ELSE
SENTIDO:=' ASC';
CADENALECTURA:=PRIMERACADENA+CONDICION+MOVIMIENTO+ORDEN+SENTIDO;
QHISTORICO.CLOSE;
QHISTORICO.SQL.Clear;
QHISTORICO.SQL.Add(CADENALECTURA);