VB.NET 2005 - Criando uma
aplicação completa via código III
Neste artigo eu vou mostrar como criar a interface da aplicação que foi definida no artigo VB.NET 2005 - Criando uma aplicação completa via código I. Apenas para lembrar não estou usando os assistentes do VB 2005; estou fazendo tudo via código e usando os controles disponíveis na barra de ferramentas do VB 2005.
Este artigo irá mostrar como você pode usar as storeds procedures criadas no primeiro artigo e as classes de negócio e de dados criadas no segundo artigo. Se você esta chegando agora acompanhe estas tarefas nos artigos a seguir:
Para implementar as funcionalidades definidas eu resolvi usar apenas um formulário onde estarei usando um controle TabControl que irá conter os demais controles responsáveis pela implementação da interface com o usuário. Abaixo são exibidas duas imagens do formulário que mostram as duas visões que o usuário irá ter da aplicação.
![]() |
![]() |
Na primeira imagem temos a implementação da maioria das funcionalidades da aplicação e na segunda imagem temos a exibição dos dados de todos os alunos.
Abra o projeto e inclua um novo formulário, usando o menu Proejct->Add Windows Forms , chamado frmAlunos.vb e neste formulário inclua um controle TabControl a partir da ToolBox aba Container nomeando como tbcAlunos.
A seguir selecione o controle e na janela de Properties ,na propriedade TabPages, clique em Collection. A janela TabPage Collection Editor irá surgir. Nela vamos dar nome a cada uma das TabPages definindo a propriedade Text, Name conforme abaixo:
![]() |
Após isto selecione a tabPage tbpAluno e inclua os seguintes controles: GroupBox, Label, TextBox e Button definindo o leiaute conforme a figura abaixo:
![]() |
A seguir selecione a tabPage tbpTodos e inclua os seguintes controles : DataGridView (dbvTodos) , conforme a figura abaixo:
![]() |
Vamos agora ao código que irá usar os recursos já criados até o momento. Declare a variável alunoInfo como sendo do tipo AlunosDetalhes na primeira linha de código do formulário frmAlunos:
Private alunoInfo As AlunosDetalhes()Lembre-se que AlunosDetalhes é a classe que foi criada para tratar os alunos possuindo os seguintes membros: aluno, nome, endereco e email.
No evento Load do formulário frmAlunos.vb iremos incluir o seguinte código:
Private
Sub frmAlunos_Load(ByVal
sender As System.Object,
ByVal e As System.EventArgs)
Handles MyBase.Load
mostraAlunos() |
Neste código temos as seguintes rotinas:
Vejamos o código da rotina mostraAlunos():
Private Sub mostraAlunos()Dim accBD As New AcessoBD
If Not (alunoInfo Is Nothing) Then txtAlunoID.Text = alunoInfo(recPos).AlunoID.ToString txtNome.Text = alunoInfo(recPos).Nome txtEndereco.Text = alunoInfo(recPos).Endereco txtEmail.Text = alunoInfo(recPos).Email Else tstxt.Text = "Registro não localizado." End IfElse tstxt.Text = "Não há registros na base de dados." End IfEnd Sub |
A rotina mostraAlunos() cria uma instância da classe AcessoBD e invoca o método GetTodosAlunos desta classe. Isto irá obter todos os alunos via stored procedure procGetTodosAlunos. Os dados serão armazenados na variável objeto alunoinfo que é do tipo AlunosDetalhes. A seguir iremos exibir os dados nas caixas de texto do formulário.
A rotina vinculaControles() apenas faz a vinculação, via DataBinding, dos dados aos controles do formulário:
Private Sub vinculaControles()'vincula os controles TextBox com a fonte de dados txtAlunoID.DataBindings.Add("Text", alunoInfo, "alunoId") txtNome.DataBindings.Add("Text", alunoInfo, "Nome") txtEndereco.DataBindings.Add("Text", alunoInfo, "Endereco") txtEmail.DataBindings.Add("Text", alunoInfo, "Email")
|
A rotina desvinculaControles() desfaz a vinculação dos dados com os controles de TextBox do formulário:
Private Sub
desvinculaControles()
txtAlunoID.DataBindings.Clear() txtNome.DataBindings.Clear() txtEndereco.DataBindings.Clear() txtEmail.DataBindings.Clear() End Sub
|
A rotina mostraAluno() obtém os dados de um aluno específico usando como parâmetro o código do Aluno (alunoID). Após criar uma instância da classe AcessoBD, usamos o método GetAluno para obter os dados do aluno com o código(alunoID) informado.
Private Sub mostraAluno(ByVal alunoID As Integer)Dim accBD As New AcessoBD Dim alunoReg As AlunosDetalhes = accBD.GetAluno(alunoID)
txtAlunoID.Text = alunoReg.AlunoID.ToString txtNome.Text = alunoReg.Nome txtEndereco.Text = alunoReg.Endereco txtEmail.Text = alunoReg.Email Else tstxt.Text = "Registro não localizado." End If End Sub |
Para percorrer os registros o usuário clica nos botões de navegação. Abaixo temos o código relacionado ao evento Click de cada um dos botões:
Private Sub
btnInicio_Click(ByVal sender
As System.Object, ByVal
e As System.EventArgs)
Handles btnInicio.Click
BindingContext(alunoInfo).Position = 0 End Sub Private Sub btnFim_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFim.Click BindingContext(alunoInfo).Position = alunoInfo.Length End Sub
If BindingContext(alunoInfo).Position = 0 Then BindingContext(alunoInfo).Position = alunoInfo.Length Else BindingContext(alunoInfo).Position -= 1 End If End SubPrivate Sub btnProximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProximo.Click If BindingContext(alunoInfo).Position = (alunoInfo.Length - 1) Then BindingContext(alunoInfo).Position = 0 Else BindingContext(alunoInfo).Position += 1 End If End Sub |
A rotina para incluir um novo aluno é dada pelo código abaixo. Se a etiqueta do botão indicar a ação Incluir então os controles TextBox são limpos para que novos dados sejam informados:
Private Sub
btnIncluir_Click(ByVal sender
As System.Object, ByVal
e As System.EventArgs)
Handles btnIncluir.Click
btnIncluir.Text = "Cancela" txtAlunoID.Text = "" txtNome.Text = "" txtEndereco.Text = "" txtEmail.Text = "" desabilitaBotoes() tstxt.Text = "Incluir novo Registro" ElsebtnIncluir.Text = "Incluir" habilitaBotoes() tstxt.Text = "" desvinculaControles() mostraAlunos() vinculaControles() End If End Sub |
O código para salvar os dados é dado a seguir, nele estamos usando o método InsertAluno passando como parâmetro o nome o endereço e o email informados no formulário. O código do aluno é auto-incremental.
Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click
Dim alunoReg As AlunosDetalhes = New AlunosDetalhes(0, txtNome.Text, txtEndereco.Text, txtEmail.Text) habilitaBotoes()
If Not (iAlunoId = -1) Then tstxt.Text = "Registro salvo com sucesso." desvinculaControles() mostraAlunos() vinculaControles() Me.BindingContext(alunoInfo).Position = alunoInfo.Length - 1 Else tstxt.Text = "Erro ao salvar o registro." End If End Sub |
O botão Atualizar efetua a atualização dos dados usando o método UpdateAluno.
Private Sub btnAtualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAtualizar.Click
Dim alunoReg As AlunosDetalhes = New AlunosDetalhes(Convert.ToInt32(txtAlunoID.Text), txtNome.Text, txtEndereco.Text, txtEmail.Text)
If Not (iRegAfetados = 0) Then tstxt.Text = "Registro atualizado com sucesso." Elsetstxt.Text = "Erro ao atualizar o registro." End If End Sub
|
O botão Excluir exclui os dados de um aluno via método DeleteAluno passando como parâmetro o código do aluno.
Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluir.Click
Dim aluno As AcessoBD = New AcessoBD Dim iRegDeletados As Integer = Me.BindingContext(alunoInfo).Position Dim iRegAfetados As Integer = aluno.DeleteAluno(Convert.ToInt32(txtAlunoID.Text))
tstxt.Text = "Registro excluido com sucesso." If Not (alunoInfo Is Nothing) Then desvinculaControles() mostraAlunos()
vinculaControles() If iRegDeletados = alunoInfo.Length Then Me.BindingContext(alunoInfo).Position = iRegDeletados - 1Else Me.BindingContext(alunoInfo).Position = iRegDeletados + 1 End If 'registros deletados Elsetstxt.Text = "Registro não localizado." End If 'alunoInfo é diferente de null Else tstxt.Text = "Erro ao excluir o registro." End If 'registros afetados End If 'confirma exclusao End Sub |
As rotinas desabilitaBotoes/habilitaBotoes ativa e/ou desativa os botões de comando.
Private Sub desabilitaBotoes()btnSalvar.Enabled = True btnAtualizar.Enabled = False btnExcluir.Enabled = False btnInicio.Enabled = False btnProximo.Enabled = False btnFim.Enabled = False btnAnterior.Enabled = False End SubPrivate Sub habilitaBotoes() btnSalvar.Enabled = False btnAtualizar.Enabled = True btnExcluir.Enabled = True btnInicio.Enabled = True btnProximo.Enabled = True btnFim.Enabled = True btnAnterior.Enabled = True End Sub
|
No código abaixo estamos tratando o evento Click do controle TabControl. Quando o usuário clicar na Aba - Todos os Alunos - teremos o valor para tbcAlunos.SelectedIndex igual a 1 e iremos exibir os dos alunos no DataGridView; caso contrário
Private Sub tbcAlunos_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles tbcAlunos.Click
alunoInfo = aluno.GetTodosAlunos
dgvTodos.DataSource = alunoInfo tstxt.Text = "Registros (" + alunoInfo.Length.ToString + ")" Else tstxt.Text = " :: Registros não localizados." End If Else tstxt.Text = "" desvinculaControles() mostraAlunos() vinculaControles() End If End Sub |
Após executar o projeto o resultado obtido é mostrado abaixo:
![]() |
Com isto temos a conclusão da trilogia dos artigos onde apresentamos a criação de uma aplicação com acesso a dados sem usar os assistentes do Visual Basic 2005.
O código completo da aplicação você encontra no
Super CD .Net e no
Super
DVD .Net.
Até o próximo artigo .NET
José Carlos Macoratti