Ordenação de um ClientDataSet
Veja nesta dica como é simples realizar a tarefa de ordenação dos dados em um TClientDataSet, através de uma função. O código abaixo mostra como realizar a ordenação clicando no titulo da coluna desejada de um TDBGrid. Clicando uma vez será utilizada a ordem crescente e na segunda, a ordem decrescente. Primeiramente vamos criar a função;
procedure TFOrdenacao.OrdenarCDS(ADados: TClientDataSet; AFieldName: String);
var
AIndexName, AIndexNameOld: WideString;
ADesc, AIndex: Boolean;
begin
AIndexNameOld := ADados.IndexName;
ADados.IndexName := EmptyWideStr;
ADados.IndexDefs.BeginUpdate;
AIndexName := 'idx' + AFieldName;
if AnsiContainsText(AIndexNameOld, AFieldName) then
if not AnsiContainsText(AIndexNameOld, 'Desc') then
AIndexName := AIndexname + 'Desc';
ADesc := AnsiContainsText(AIndexName, 'Desc');
AIndex := ADados.IndexDefs.IndexOf(AIndexName) >= 0;
ADados.IndexDefs.EndUpdate;
if not AIndex then begin
if ADesc then
ADados.AddIndex(AIndexName, AFieldName, [ixCaseInsensitive, ixDescending], AFieldName, AFieldName)
else
ADados.AddIndex(AIndexName, AFieldName, [ixCaseInsensitive], EmptyStr, AFieldName);
end;
ADados.IndexName := AIndexName;
end;
E no evento onTitleClick do TDBGrid colocares-mos o chamado da função
OrdenarCDS(CDSGenerico, Column.FieldName);
0 comentários:
Postar um comentário