Como trocar a coluna do DBGrid de lugar
Veja nesse artigo de Adriano Santos, como trocar de lugar uma coluna do DBGrid em run time.
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.
|
Propriedade |
Valor |
|
Name |
Table1 |
|
DataBaseName |
DBDEMOS |
|
TableName |
Cients.dbf |
Tabela 1. Propriedades do TTable
|
Propriedade |
Valor |
|
Name |
DataSource1 |
|
DataSet |
Table1 |
Tabela 2. Propriedades do TDataSource
|
Propriedade |
Valor |
|
Name |
DbGrid1 |
|
DataSource |
DataSource1 |
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.
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
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
nmColSel: string;
idColSel: Integer;
begin
nmColSel := Column.FieldName;
idColSel := Column.Index;
with DBGrid1 do
begin
Columns[idColSel].FieldName := Columns[0].FieldName;
Columns[0].FieldName := nmColSel;
end;
end;
Conclusões
Neste artigo aprendemos a trocar a coluna de um DBGrid em runtime e tornando sua visualização mais nítida.

Space do autor


3
0
