Como utilizar um DBGrid?

"Agora neste tópico estarei mostrando varias formas de se usar o dbgrid, deixa-lo zebrado, ordenar os dados ao clica no titulo de cada campos etc, resumindo esta aula ajuda você a conhecer o útil componente DBGRID"






Utilize este procedimento para apresentar os dados de um banco de dados em formato de grade, em linhas e colunas.

Procedimentos a serem executados:
ü  File->Use Unit e escolha a tela onde se encontram as tabelas. Selecione o componente DBGrid,  e altere a propriedade DataSource (origem dos dados) de acordo com a tabela a ser apresentada na grade. Escolha para este exemplo  Ds_Tab_Clientes.
ü  Dê um duplo-clique sobre o DBGrid e clique no botão Add all Fields  
ü  Selecione os campos que não farão parte da grade e clique no botão Delete Selected  para removê-los. Caso a grade faça parte de uma tela padrão, só será possível remover o campo através da janela Object Treeview.

Para deixar o DBGrid Zebrado:
No evento OnDrawColumnCell do DBGrid digite os seguintes comandos:
  If Odd(dm.tab_Clientes.RecNo) and (dm.tab_Clientes.State <> dsInsert) then
  begin //Lembre-se de colocar a unit DB na cláusula uses na unit da tela.
      DBGrid1.Canvas.Brush.Color := clMoneyGreen; // muda a cor do pincel
      DBGrid1.Canvas.FillRect(Rect); // Preenche o fundo com a cor especificada
      DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State);// desenha as células da grade
  end;


Para ordenar os dados da grade ao clicar no título do campo: a ordenação será feita através da propriedade de tabela IndexFieldNames, que define o nome do índice para a classificação, conforme o campo clicado na grade (Column.FieldName)
ü  Crie na tela padrão uma variável global chamada Ascendente do tipo Boolean para que todas as telas de cadastro passem a utilizá-la.
ü  No evento OnShow, da tela padrão, digite: Ascendente := False;
ü  Em FrmCadCliente, no evento OnTitleClick do DBGrid digite:
   Ascendente:= not Ascendente ;
  If Ascendente then
Dm.tab_Clientes.IndexFieldNames := Column.FieldName + '   ASC'
  else
               Dm.tab_Clientes.IndexFieldNames := Column.FieldName + '    DESC';
                    OBS: Não digite os comandos na unit da tela padrão, somente na de cadastro.

0 comentários:

Postar um comentário