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]
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
Curtir tópico
+ 0
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:
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
Clique aqui para fazer login e interagir na Comunidade :)