segunda-feira, 14 de agosto de 2017

Como trocar a coluna do DBGrid de lugar


Olá, neste artigo mostrarei um forma bastante interessante de trabalhar com as colunas do DBGrid. Faremos a troca de posição das colunas usando o evento onTitleClick do DBGrid. 

Quando o usuário clicar em uma coluna esta passará a ser a primeira coluna e a primeira trocará de lugar com a coluna clicada. A primeira coluna poderia ser usada para filtrar e/ou ordenar a tabela e sendo a coluna 0 (zero) fica mais fácil para identificar por qual coluna nossa table está ordenada/filtrada. 

Desenhando o projeto 

O design para este exemplo é bem compacto. Insira um TTable, um DataSource e um DBGrid. Altere suas propriedades conformes as tabelas abaixo. Sua tela deve se parecer com a Figura 1. 

Clique para ver a imagem em seu tamanho real 
Tabela 3. Propriedades do TDbGrid 

Coluna colorida 

Uma coisa que uso com bastante freqüência é colorir a primeira coluna, assim fica ainda mais fácil identificar por qual coluna o filtro/ordenação será feito. Para isso: 

Clique duas vezes no DBGrid, adicione os todos campos. Em seguida selecione o primeiro campo, referente a primeira coluna, e mude a propriedade Color para clInfoBk ou uma cor de sua preferência. 

Clique para ver a imagem em seu tamanho real 
Figura 1. Legenda explicativa da figura 

Programação 

Você verá que a programação não exige alto conhecimento. Apenas pegamos o nome da coluna selecionada e seu index. Em seguida “dizemos” que o FieldName da colunca selecionada é igual ao FieldName da coluna 0(zero), ou seja, o primeiro campo. Agora basta igualar o FieldName da coluna zero ao FieldName da coluna selecionada. Veja a Listagem 1. 

Listagem 1. Descrição da listagem 


  1. procedure TForm1.DBGrid1TitleClick(Column: TColumn);
  2. var
  3.   nmColSel: string;
  4.   idColSel: Integer;
  5. begin
  6.   nmColSel := Column.FieldName;
  7.   idColSel := Column.Index;
  8.   with DBGrid1 do
  9.   begin
  10.     Columns[idColSel].FieldName := Columns[0].FieldName;
  11.     Columns[0].FieldName := nmColSel;
  12.   end;
  13. end;



Conclusões 

Neste artigo aprendemos a trocar a coluna de um DBGrid em runtime e tornando sua visualização mais nítida. 

Por Adriano Santos 
Adriano Santos (artes@doiscliques.com) é desenvolvedor Delphi desde 1998. Professor e programador PHP. Bacharel em Comunicação Social pela Universidade Cruzeiro do Sul, SP. É colunista e membro da Comissão Editorial da revista ClubeDelphi. 

Nenhum comentário:

Postar um comentário