ordenar dbgrid vinculado a TTable
Pessoal,
estou com dificuldades para alterar a exibição de um dbgrid, ordenando o conteúdo através do clique nos cabeçalhos. Minha base é dbf e não sei trabalhar com índices.
Detalhe: algumas funções do sistema estão vinculadas a este grid e a este table, portanto, para eu mudar pra uma query e ordenar no select fica difícil, pois teria que atualizar todo o sistema.
Fico grato a quem puder ajudar.
:oops:
estou com dificuldades para alterar a exibição de um dbgrid, ordenando o conteúdo através do clique nos cabeçalhos. Minha base é dbf e não sei trabalhar com índices.
Detalhe: algumas funções do sistema estão vinculadas a este grid e a este table, portanto, para eu mudar pra uma query e ordenar no select fica difícil, pois teria que atualizar todo o sistema.
Fico grato a quem puder ajudar.
:oops:
Anonymous
Curtidas 0
Respostas
Anonymous
25/03/2003
tambem nao sei identificar em qual coluna do Dbgrid o usuário clicou. E se acaso o usuário alterar a ordem das colunas?
ih... me perdi todo...
já vi que nao vou conseguir... :(
ih... me perdi todo...
já vi que nao vou conseguir... :(
GOSTEI 0
Murphi
25/03/2003
Você pode usar o próprio título da coluna do dbgrid.
No evento TitleClick vc. pode colocar o seguinte código:
if not DBGrdConsulta.Columns[ Column.Index ].ReadOnly then
begin
iPosCbx := CbxCampo.Items.IndexOf(Column.Title.Caption);
CbxCampo.ItemIndex := iPosCbx;
ClientConsulta.IndexFieldNames := Column.FieldName;
if DBGrdConsulta.Columns[ Column.Index ].PickList.Text = ´´ then
sCampoPesquisa := Column.FieldName
else
sCampoPesquisa := DBGrdConsulta.Columns[ Column.Index ].PickList.Text;
if ((Column.Title.Caption)= ´Site´) or ((Column.Title.Caption)= ´E-mail´) then
EdtPesquisa.CharCase := ecLowerCase
else
EdtPesquisa.CharCase := ecUpperCase;
end;
No evento TitleClick vc. pode colocar o seguinte código:
if not DBGrdConsulta.Columns[ Column.Index ].ReadOnly then
begin
iPosCbx := CbxCampo.Items.IndexOf(Column.Title.Caption);
CbxCampo.ItemIndex := iPosCbx;
ClientConsulta.IndexFieldNames := Column.FieldName;
if DBGrdConsulta.Columns[ Column.Index ].PickList.Text = ´´ then
sCampoPesquisa := Column.FieldName
else
sCampoPesquisa := DBGrdConsulta.Columns[ Column.Index ].PickList.Text;
if ((Column.Title.Caption)= ´Site´) or ((Column.Title.Caption)= ´E-mail´) then
EdtPesquisa.CharCase := ecLowerCase
else
EdtPesquisa.CharCase := ecUpperCase;
end;
GOSTEI 0
Anonymous
25/03/2003
obrigado pela ajuda,
adaptei seu codigo para meu sistema, mas no entanto aparentemente não esta ocorrendo o evento do clique no titulo...
tem ideia do que pode ser???
adaptei seu codigo para meu sistema, mas no entanto aparentemente não esta ocorrendo o evento do clique no titulo...
tem ideia do que pode ser???
GOSTEI 0
Anonymous
25/03/2003
Que eu saiba o dbgrib só ordena se já existir um índice mesmo que secundário, porém quanto mais arquivos de índice você tiver mais problemas vai ter a base de dados
GOSTEI 0