Manipulando o DataGrid

 

Nessa série de artigos sobre o componente DataGrid do .NET Framework sendo usado em aplicações WinForms, veremos como manipular e empregar alguns recursos interessantes ao DataGrid, no primeiro artigo veremos como obter os valores da célula(linha) corrente do DataGrid.

Criando o Projeto

Utilizaremos Windows Forms Application – Delphi for .Net, crie um novo projeto no Delphi 2006, para a conexão com o banco de dados Access será utilizado ADO.NET com os componentes OleDb para conectar ao banco de dados dessa serie de artigos, por padrão no Delphi 2006 os componentes OleDb não vem instalados, para instalar clique no menu Component|Installed .NET Components, será exibida uma lista de componentes instalados e possíveis a instalação localize os seguintes componentes OleDbConnection, OleDbDataAdapter e OleDbCommand como mostra a Figura 1.

 

img 

Figura 1. Instalando os componentes OleDb

 

Nesse primeiro artigo da série demostrarei como fazer a conexão com o banco de dados Access que será usado nessa série de artigos, coloque um componente OleDbConnection, OleDbCommand, OleDbDataAdapter, DataSet, DataGrid, três Labels e três TextBoxs acompanhe a Tabela 1 que exibi as propriedades desses componentes que foram alteradas.

 

Componente

Propriedade

Valor

OleDbConnection1

ConnectionString

Provider="Microsoft.Jet.OLEDB.4.0";Data Source="D:\Meus Artigos\ClubeDelphi\WebSite\Serie DataGrid\dados\dados.mdb";Persist Security Info=False

OleDbCommand1

CommandText

SELECT * FROM PRODUTOS

OleDbCommand1

Connection

OleDbConnection1

DataSet1

Name

dsProdutos

OleDbDataAdapter

SelectCommand

OleDbCommand1

DataGrid1

Name

dgProdutos

TextBox1

Name

txtCodigo

TextBox2

Name

txtNome

TextBox3

Name

txtReferencia

Tabela 1. Propriedades alteradas dos componente utilizados.

Podemos ver como os componentes colocados no projeto ficaram dispostos na Figura 2.

 

img 

Figura 2. Componentes utilizados no artigo os textBox exibiram os dados da célula do DataGrid

Obtendo os valores das células

Com os componentes já dispostos em nosso projeto agora devemos popular o DataSet como os dados do banco de dados Access e depois linkar o DataGrid “dgProdutos“ ao DataSet, veja o código da Listagem 1 que faz a população do DataSet utilizaremos o evento Load do formulário principal.

 

Listagem 1. Conexão com o banco de dados

procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs);

begin

  //Abra a Conexao

  OleDbConnection1.Open();

  //Popula o DataSet

  OleDbDataAdapter1.Fill(dsProdutos, 'Produtos');

  //Linkando o DataGrid ao DataSet

  dgProdutos.DataSource := dsProdutos.Tables['Produtos'].DefaultView;

  //Fecha a Conexao

  OleDbConnection1.Close();

  //É invocado a primeira vez pelo evento Load porque o evento CurrentCellChanged

  //do DataGrid não é   disparado quando é carregado a aplicação

  RetornaValoresDataGrid;

end;

 

O procedimento RetornaValoresDataGrid criado na Listagem 2 irá associar as colunas do DataGrid aos componentes TextBox o procedimento RetornaValoresDataGrid será invocado dentro do evento CurrentCellChanged ou seja quando a célula corrente do datagrid mudar será disparado o procedimento RetornaValoresDataGrid para preencher os TextBoxs com os dados do DataGrid.

 

Listagem 2. Procedimento que preenche os TextBox e a invocação do procedimento no evento CurrentCellChanged do DataGrid

procedure TWinForm.RetornaValoresDataGrid;

begin

  with dgProdutos do

  begin

    txtCodigo.Text := Item[CurrentRowIndex, 0].ToString();

    txtNome.Text := Item[CurrentRowIndex, 1].ToString();

    txtReferencia.Text := Item[CurrentRowIndex, 2].ToString();

  end;

end;

 

procedure TWinForm.dgProdutos_CurrentCellChanged(

  sender: System.Object; e: System.EventArgs);

begin

  RetornaValoresDataGrid;

end;

 

Compile a aplicação e alterne entre as células do datagrid tanto clicando quanto com as setas do teclado você perceberá que será carregado os valores referente aquela célula nos textboxs como mostra a Figura 3.

 

img 

Figura 3. Aplicação em execução com os valores sendo carregados nos TextBoxs

Conclusões

Vimos como é simples obter os valores da célula corrente do DataGrid, não perca os próximos artigos sobre DataGrid.