Fórum Ordenar por coluna #220463

16/03/2004

0

Galera,

Alguém saberia me dizer qual componente poderia utilizar para fazer a ordenação dos dados pela coluna que for clicada pelo usuário, assim como é feito no Outlook? O DBGrid tem essa opção? Como fazer?

No aguardo,

[b:08357c3e28][color=red:08357c3e28]Título editado pelo Moderador (AZ) - Removido: ´Urgente´[/color:08357c3e28][/b:08357c3e28]


Rvsantos

Rvsantos

Responder

Posts

16/03/2004

Lucas Silva

procedure Tform1.dbGridTitleClick(Column: TColumn);
begin
   query.sql.text := query.sql.text + ´ order by´ + Column.FieldName;
end;



Responder

Gostei + 0

16/03/2004

Tathianam

Ricardo,

Eu uso um dbgrid ligado a um datasource ligado a um clientdataset. Através do código abaixo, quando o usuário clica nas colunas, elas ficam indexadas em ordem crescente ou decrescente. Para isso tenho sempre um índice no ClientDataSet com ´ix´ mais o nome do campo. Lembre-se que é caso sensitivo para maiúsculas / minúsculas.

Lá vai:

procedure TfmMasterGrid.grCadastroTitleClick(Column: TbsColumn); var index: integer; xCampoPesq: string; begin if Column.FieldName = ´´ then Exit; try if not (dsCadastro.DataSet = nil) then begin xCampoPesq := lowercase(Column.FieldName); if (TClientDataSet(dsCadastro.DataSet).IndexName <> ´ix´+xCampoPesq) then TClientDataSet(dsCadastro.DataSet).IndexName := ´ix´+xCampoPesq else begin index := TClientDataSet(dsCadastro.DataSet).IndexDefs.IndexOf(´ix´+xCampoPesq); if xTitle then begin if (ixDescending in TClientDataSet(dsCadastro.DataSet).IndexDefs.Items[index].Options) then TClientDataSet(dsCadastro.DataSet).IndexDefs.Items[index].Options := TClientDataSet(dsCadastro.DataSet).IndexDefs.Items[index].Options - [ixDescending] else TClientDataSet(dsCadastro.DataSet).IndexDefs.Items[index].Options := TClientDataSet(dsCadastro.DataSet).IndexDefs.Items[index].Options + [ixDescending]; dsCadastro.DataSet.Close; dsCadastro.DataSet.Open; end; end; dsCadastro.DataSet.First; end; except // end; end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar