Eu utilizo o código abaixo. Desse modo ele ordena de forma crescente e
decrescente. E com o Rubem falou, tem que usar o ClientDataSet.

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
  enum_IndexOption: TIndexOptions;
  str_IndexAsc,
  str_IndexDesc,
  str_IndexName: String;
begin
  if (Column.Field.FieldKind = fkData) then
  begin
    str_IndexAsc := Concat('asc_',Column.FieldName);
    str_IndexDesc := Concat('desc_',Column.FieldName);

    str_IndexName := '';
    enum_IndexOption := [];

    if (ClientDataSet1.IndexName = str_IndexAsc) then
    begin
      str_IndexName := str_IndexDesc;
      enum_IndexOption := [ixDescending];
    end
    else if (ClientDataSet1.IndexName = str_IndexDesc) then
    begin
      str_IndexName := str_IndexAsc;
    end
    else
    begin
      str_IndexName := str_IndexAsc;
    end;

    ClientDataSet1.IndexDefs.Clear;

ClientDataSet1.IndexDefs.Add(str_IndexName,Column.FieldName,enum_IndexOption);
    ClientDataSet1.IndexName := str_IndexName;
  end;
end;


[As partes desta mensagem que não continham texto foram removidas]

Responder a