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.
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.
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.
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.