Quick Tips: Ordenação no DBGrid – Parte 1

 

Nesta quick tip veremos como fazermos a ordenação na DBGrid quando o usuário clicar no título da coluna.

 

Nesta quick veremos como fazer ordenação crescente ao clicar no título da coluna.

 

Para isso, insira um DBGrid, um ClienteDataSet e um DataSource no formulário, conforme mostrado abaixo:




No evento DBGridTitleClick insira o seguinte código:

 

procedure TForm1.DBGridPrincipalTitleClick(Column: TColumn);

var

  Idx:TIndexDef;

Begin

  If Not TClientDataSet(Column.Grid.DataSource.DataSet).Active Then

     Abort;

 

  // O índice já está em uso

  TClientDataSet(Column.Grid.DataSource.DataSet).IndexDefs.update;

 

  //Verifica se o index da lista defaul do dataSet

  if(TClientDataSet(Column.Grid.DataSource.DataSet).IndexDefs.IndexOf(Column.Field.FieldName)) > -1 then

    Idx := TClientDataSet(Column.Grid.DataSource.DataSet).IndexDefs.Find(Column.Field.FieldName)

  else

    idx := nil;

 

  //se index nao estiver criado entao adiciona, senao remove configuração descendente

  if(Idx = nil)then

     TClientDataSet(Column.Grid.DataSource.DataSet).AddIndex(Column.Field.FieldName, Column.Field.FieldName, [], '', '', 0);

 

  TClientDataSet(Column.Grid.DataSource.DataSet).IndexName := Column.Field.FieldName;

end;

 

É isso aí pessoal, vou ficando por aqui.

Fiquem a vontade para criticar, tirar dúvidas e sugerir novos temas.
Abraço.

Ricardo Coelho