Fonte: www.activedelphi.com.br
Veja nesta dica como é simples realizar a tarefa de ordenação dos dados de um DBGrid que está ligado a um ClientDataSet, criando e selecionando índices em memória.
O código abaixo mostra como realizar a ordenação clicando no titulo da coluna desejada. Clicando uma uma vez será utilizada a ordem crescente e na segunda, a ordem decrescente.
Primeiramente, no evento onCreate do Form, criaremos um índice Crescente e um Decrescente para cada campo do DBGrid, com o seguinte código:
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
for i := 0 to clientdataset1.FieldCount - 1 do
begin
CLIENTDATASET1.IndexDefs.Add('a' + CLIENTDATASET1.Fields[i].FieldName,
CLIENTDATASET1.Fields[i].FieldName, []);
CLIENTDATASET1.IndexDefs.Add('d' + CLIENTDATASET1.Fields[i].FieldName,
CLIENTDATASET1.Fields[i].FieldName, [ixDescending]);
end;
end;
Em seguida, programaremos o evento onTitleClick do DBGrid:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
if 'a' + Column.FieldName = CLIENTDATASET1.IndexName then
CLIENTDATASET1.IndexName := 'd' + column.FieldName
else
CLIENTDATASET1.IndexName := 'a' + column.FieldName;
end;
Pronto! Seu DBGrid em ordem Crescente e Decrescente de qualquer coluna, com apenas um click!
Nenhum comentário:
Postar um comentário