1.- Utiliza TJvDBUltimGrid, que dispone de esa opción.
2.- Puedes capturar el evento OnTitleClick del DBGrid y cambiar la SQL del Dataset ordenandolo por el campo correspondiente
Te paso un ejemplo válido para Un ADODataSet
Código Delphi
[-]
procedure TdmRecursos.OrdenaGrid(aColumn: TColumn);
Var
SQL,Orden, Temp : String;
Index : Integer;
Marca : TBookMark;
begin
With (aColumn.Grid.DataSource.DataSet as TADODataSet) do begin
If (aColumn.Field.FieldKind = fkCalculated) Or
(aColumn.Field.FieldKind = fkLookup) Then ShowMessage('No se puede ordenar por este campo')
Else Begin
Marca := aColumn.Grid.DataSource.DataSet.GetBookmark;
Try
Close;
SQL := CommandText;
If aColumn.Field.Lookup Then Orden := aColumn.Field.KeyFields
Else Orden := aColumn.FieldName;
Index :=Pos('Order',SQL)-1;
If Index <> -1
Then Temp := Copy(SQL,0,Index)+'Order by '+Orden
Else Temp := SQL + ' Order by '+Orden;
CommandText := Temp;
Open;
aColumn.Grid.DataSource.DataSet.GotoBookmark(Marca);
Finally
aColumn.Grid.DataSource.DataSet.FreeBookmark(Marca);
End;
End;
End;
end;