montando projeto completo_vbnet

23
 VB.NET 2008 - Cadastro de Alunos - parte 1 Eu já publiquei diversos artigos/tutoriais mostrando como realizar as operações básicas de manutenção de dados: inclui, excluir, alterar , exibir, navega r e imprimir no Visual Basic .NET, mas parece que não fui suficientemente di dático e claro para que as dúvidas dos inic iantes fossem esclarecidas pois continuo a receber e-mails solicitando exemplos relacionados ao assunto.  O que fazer ?  Bem, vou tentar mais uma vez mostrar como você pode usar o Visual Basic 2008 Express Edition para acessar um banco de dados e realizar as principais operações de manutenção de dados.  O exemplo deste artigo não vai usar os assistentes do VB 2008 pois eu já mostrei como fazer isso no artigo : VB .NET 2008 - Aplicação completa com acesso a dados ; este artigo vai mostrar como você pode fazer isso via código sem a ajuda dos assistentes.  Para tornar a apresentação mais fácil vamos dividir em etapas as tarefas que iremos realizar neste tutorial:  1. Criar o banco de dados e a tab ela;  2. Definir a interface com o usuário;  3. Definir a conexão com o banco de dados;  4. Definir a carga dos dados; 5. Definir a navegação pelos registros;  6. Definir as operações de manutenção de dados;  Vou criar uma pequena aplicação para cadastrar alunos usando o banco de dados Microsoft Access. O banco de dados Alunos.mdb irá conter uma tabela chamada Alunos que tem a seguinte estrutura:  

Upload: negroncast

Post on 06-Jul-2015

918 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 1/23

 

VB.NET 2008 - Cadastro de Alunos - parte 1 

Eu já publiquei diversos artigos/tutoriais mostrando como realizar as operações básicas de manutenção de dados: inclui, excluir, alterar, exibir,navegar e imprimir no Visual Basic .NET, mas parece que não fui suficientemente didático e claro para que as dúvidas dos inic iantes fossemesclarecidas pois continuo a receber e-mails solicitando exemplos relacionados ao assunto.  

O que fazer ?  

Bem, vou tentar mais uma vez mostrar como você pode usar o Visual Basic 2008 Express Edition para acessar um banco de dados e realizar as

principais operações de manutenção de dados.  

O exemplo deste artigo não vai usar os assistentes do VB 2008 pois eu já mostrei como fazer isso no artigo : VB .NET 2008 - Aplicação completacom acesso a dados ; este artigo vai mostrar como você pode fazer isso via código sem a ajuda dos assistentes.  

Para tornar a apresentação mais fácil vamos dividir em etapas as tarefas que iremos realizar neste tutorial:  

1.  Criar o banco de dados e a tabela;  

2.  Definir a interface com o usuário;  3.  Definir a conexão com o banco de dados;  

4.  Definir a carga dos dados; 5.  Definir a navegação pelos registros;  

6.  Definir as operações de manutenção de dados;  

Vou criar uma pequena aplicação para cadastrar alunos usando o banco de dados Microsoft Access. O banco de dados Alunos.mdb irá conteruma tabela chamada Alunos que tem a seguinte estrutura: 

Page 2: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 2/23

 

 

Obs: Eu escolhi criar uma estrutura bem simples para não complicar o tutorial. Além disso , nesta primeira etapa eu não vou u tilizar camadas

 pois é tutorial para iniciantes.  

Criando o banco de dados e as tabelas 

A primeira coisa a fazer é criar o banco de dados e a tabela, e, você pode fazer isso de diversas maneiras, para saber mais veja os meus artigos : 

y  Criar banco de dados via Código - Access , SQL Server y  Criando banco de dados e tabelas com o Access  

y  Tabelas: Trabalhando com tabelas  

 

Nota:No VB5/VB6 também podíamos criar banco de dados Access usando o VISDATA como Add-In no IDE do VB. Lembra ? Para lembrar leia o artigo : 

y  SQL revisitado- Conceitos básicos sobre SQL com exemplos práticos no Visdata. 

 

y  Criando um Banco de dados com o VisData, 

Para saber como criar banco de dados usando oMicrosoft Access ou o SQL Server 2000 leia os artigos: 

y  Criando banco de dados no SQL Server 2000 

 

y  Criando banco de dados e tabelas com o Access y  Criando Banco de Dados e Tabelas. 

Para criar via código leia o artigo: Criando seus arquivos - Veja como criar seu banco de dados e suas tabelas no Visual Basic usando o DAO.  

Definindo a interface com o usuário  

Page 3: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 3/23

 

Com o banco de dados e a tabela criada já podemos definir a interface com o usuário. Nossa aplicação terá apenas um único for muláriochamado Alunos.vbque usará o seguinte leiaute:  

Os controles usados neste formulário são:  

- Label - Usadas para identificação;  

- TextBox - Exibe os campos : nome, endereço e nascimento;  

- RadioButton - Usados como opções para Sexo e Ano;  

- Button - botões de comando;  

- PictureBox - Exibir a imagem do aluno;  

Veja a aplicação em execução exibindo os dados de um usuário com foto; 

 

Page 4: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 4/23

 

Agora uma visão mostrando a utilização do recurso de imprimir um relatório no modo de visualização:  

 

Page 5: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 5/23

 

Definindo a conexão com o banco de dados  

Vamos usar o recurso My Project para armazenar os valores referente a variável Escola que irá exibir o nome da escola e a variável Fotos queirá conter o caminho da localização das fotos dos alunos.

Na janela Solution Explorer clique duas vezes sobre My Project e a seguir clique na aba Settings. A seguir defina as variáveis conforme mostra afigura abaixo. 

 

Page 6: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 6/23

 

Os valores serão armazenados no arquivo App.Config conforme mostra a figura a seguir: 

 

Page 7: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 7/23

 

Para obter os valores armazenados basta usar o recurso My.Settings da seguinte forma: 

- DimlocalfotosAsString =My.Settings.Fotos 

- Dim escola as String = My.Settings.Escola.ToString  

E a string de conexão com o banco de dados como será definida. Tudo depende de onde o banco de dados estará localizado. Neste exemplo obanco de dados estará na pasta da aplicação em C:\vbn\Cadastro\ , então podemos definir a string de conexão da seguinte forma:  

Dim strConn as String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + Application.StartupPath + "\..\..\Alunos.mdb") 

O StartupPath retorna o caminho qualificado para o diretório onde o programa inicia a execução. Como estamos debugando o diretório departida é o diretório C:\vbn\Cadastro\bin\Debug , mas o banco de dados esta na pasta da aplicação em C:\vbn\Cadastro\ , por isso retornamosdois níveis: \..\..\Alunos.mdb 

Nota: Para saber mais leia meu artigo :VB 2005 - Objeto Application 

 

Page 8: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 8/23

Os namespaces usados no projeto serão :  

ImportsSystem.Data ImportsSystem.Data.OleDb  

Eles serão usados para acessar as classes e os provedores para acessar o banco de dados Microsoft Access Alunos.mdb. 

Quando a aplicação for executada o evento Load do formulário frmCadastroAlunos será usado para carregar os dados da tabela e preencher oscontroles do formulário com os dados.  

No próximo artigo irei mostrar o código necessário para efetuar a conexão com o banco de dados , selecionar os dados da tabel a e exibir noformulário. 

Veja a continuação do artigo em : VB .NET 2008 - Criando um Cadastro de Alunos - Parte 2 

VB.NET 2008 - Cadastro de Alunos - parte 2 

Como na primeira parte deste artigo já foram definidos os alicerces para a aplicação Cadastro de Alunos nesta segunda parte vou abordar ocódigo usado para fazer a aplicação funcionar.  

Como a aplicação possui somente um formulário chamado Alunos.vb a execução da aplicação irá iniciar o carregamento deste formulário peloevento Load. 

Definindo a carga dos dados 

Neste evento , eu coloquei o código que irá acessar o banco de dados Alunos.mdb estabelecendo uma conexão , defini um comando SQL paraselecionar os registros da tabela Alunos e através de um DataAdapter preencher um objeto DataTable com os dados retornados. Como estouefetuando uma conexão com um banco de dados Microsoft Access usei o provedor OleDb.

Em seguida efetuei a vinculação dos dados com os controles definidos no formulário para exibição dos mesmos e para gerenciar a navegaçãodefini um objeto CurrencyManager. 

 

Page 9: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 9/23

O modelo de objetos Windows Forms suporta dois gerenciadores de vinculação de dados:  

y  PropertyManager - Usado para fazer a vinculação de controles simples não sendo possível usar com controles ListBox, ComboBox ouDataGridView; 

y  CurrencyManager - Usado para fazer a vinculação de controles simples e complexos que suportam a interface IList co mo : DataView, Array, Array List e objetos Collection. 

O código associado ao evento esta descrito e comentado abaixo:  

PrivateSubfrmCadastroAlunos_Load(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) HandlesMyBase.Load 

'conecta com o banco de dados e abre a conexão 

AlunosConnection = NewOleDb

Connection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + Application.StartupPath +"\..\..\Alunos.mdb") 

AlunosConnection.Open() 'define um objeto commandAlunosCommand = NewOleDbCommand("SELECT * FROM Alunos OR DER BY Nome", AlunosConnection) 'define um dataAdapter AlunosAdapter = NewOleDbDataAdapter()  AlunosAdapter.SelectCommand = AlunosCommand'define e preenche um DataTable com os dados AlunosTabela = NewDataTable() 

AlunosAdapter.Fill(AlunosTabela)  'vincula os dados aos controles do formulário txtNome.DataBindings.Add("Text", AlunosTabela, "Nome") txEndereco.DataBindings.Add("Text", AlunosTabela, "Endereco")'os controles lblSexo e lblGrau não são visiveis ao usuário e'sao usados para preencher os controles radioButton equivalenteslblSexo.DataBindings.Add("Text", AlunosTabela, "Sexo") lblGrau.DataBindings.Add("Text", AlunosTabela, "Grau") dtpNascimento.DataBindings.Add("Text", AlunosTabela, "Nascimento") lblFoto.DataBindings.Add("Text", AlunosTabela, "Foto") 

'estabelece o currencyManager AlunosCManager = DirectCast(Me.BindingContext(AlunosTabela),CurrencyManager) 'Defini a exibição dos dados nos controles lable para sexo e grau e exibe a foto do aluno CallExibirDados() 'define o estado de exibição dos dados: visualizar (Ver) e Editar CalldefinirEstado("Ver") EndSub 

Você pode conhecer mais sobre cada um dos itens citados lendo os meus artigos:  

  

Page 10: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 10/23

y  ADO.NET - Uma visão geral : Objetos Connection y  NET Provedores de Dados para conexão  

y  Usando CurrencyManager 

y  Desvendando os segredos do DataBinding no VB.NET y  VB.NET - Operações com dados que retornam registros 

y  VB.NET - Operações com dados que não retornam registros.  

y  Operações básicas com Banco de dados e VB.NET  

Agora passemos ao código da rotinaExibirDados() : 

PrivateSubExibirDados() 

'sexo IflblSexo.Text = "M"Then 

rdoMasculino.Checked = True Else 

rdoFeminino.Checked = True EndIf

'grau SelectCaselblGrau.Text

 Case"1" rdoPrimeiro.Checked = True 

Case"2" rdoSegundo.Checked = True 

Case"3" rdoTerceiro.Checked = True 

Case"4" rdoQuarto.Checked = True 

Case"5" 

rdoQuinto.Checked = True Case"6" 

rdoSexto.Checked = True EndSelect

CallExibirFoto() 

EndSub 

  

Page 11: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 11/23

Esta rotina atribui valores aos controles RadioButton usados para definir o Sexo e Ano/Grau que o aluno esta cursando. Note que o código usadois controles Label: lblSexo e lblGrau, que não são visíveis em tempo de execução, para verificar qual o valor obtido da tabela e exibir ainformação no RadioButton equivalente.  

Agora é a vez da rotina ExibirFoto(): 

PrivateSubExibirFoto()

IflblFoto.Text<>""Then Try picItem.Image = Image.FromFile(localfotos&lblFoto.Text) 

Catch ex As Exception picItem.Image = Nothing MessageBox.Show(ex.Message, "Erro ao carregar Foto.", MessageBoxButtons.OK,

MessageBoxIcon.Error) EndTry 

Else picItem.Image = Nothing 

EndIf EndSub 

O código verifica se a Label: lblFoto esta vazia ( Poderíamos ter usado também: If lblFoto.TextIsNotString.EmptyThen ) 

Se for verdadeiro carregamos a imagem no controle picItem, cujo caminho foi definido na variável localfotos, usando o nome da imagemcarregado em lblFoto.text, caso contrário atribuímos um Nothing ao controle. 

Lembre que ainda estamos executando o código no evento Load e a última rotina chamada é :definirEstado(): 

PrivateSubdefinirEstado(ByValAppEstadoAsString) 

mEstado = AppEstado 

SelectCaseAppEstado Case"Ver" btnPrimeiro.Enabled = True btnAnterior.Enabled = True 

btnProximo.Enabled = True btnUltimo.Enabled = True 

 

Page 12: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 12/23

btnEdita.Enabled = True btnSalva.Enabled = False btnCancela.Enabled = False btnInclui.Enabled = True btnDeletar.Enabled = True btnImprimir.Enabled = True btnSair.Enabled = True txtNome.ReadOnly = True txEndereco.ReadOnly = True dtpNascimento.Enabled = False btnCarregaFoto.Enabled = False grpSexo.Enabled = False grpGrau.Enabled = False Case"Editar", "Incluir" btnPrimeiro.Enabled = False

 btnAnterior.Enabled = False btnProximo.Enabled = False btnUltimo.Enabled = False btnEdita.Enabled = False btnSalva.Enabled = True btnCancela.Enabled = True btnInclui.Enabled = False btnDeletar.Enabled = False btnImprimir.Enabled = False 

btnSair.Enabled = False txtNome.ReadOnly = False txEndereco.ReadOnly = False dtpNascimento.Enabled = True btnCarregaFoto.Enabled = True grpSexo.Enabled = True grpGrau.Enabled = True EndSelect

txtNome.Focus() 

EndSub 

Neste código verificamos se o estado é igual a Ver , para visualizar os dados apenas, ou Editar/Incluir usados para edição e inclusão de dados.Conforme o caso as propriedades Enabled e ReadOnly dos controles são alteradas e o foco é colocado no controle txtNome. 

Ao terminar a execução do código será apresentado o seguinte formulário:  

 

Page 13: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 13/23

 

Definindo a navegação pelos registros 

Vejamos a seguir o código associado ao evento Click dos botões de comando que permitem a navegação pelos registros:  

PrivateSubbtnPrimeiro_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs)HandlesbtnPrimeiro.Click 

AlunosCManager.Position = 0 

CallExibirDados() 

EndSub

PrivateSubbtnAnterior_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) HandlesbtnAnterior.Click AlunosCManager.Position -= 1 

CallExibirDados() EndSub

PrivateSubbtnProximo_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) HandlesbtnProximo.Click AlunosCManager.Position += 1 

CallExibirDados() 

EndSub

  

Page 14: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 14/23

PrivateSubbtnUltimo_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) HandlesbtnUltimo.Click AlunosCManager.Position = AlunosCManager.Count - 1 

CallExibirDados() EndSub 

Em cada um dos botões , quando o usuário clicar, o objeto CurrencyManager - AlunosCManager - irá permitir a navegação pelos registroschamado a rotina ExibirDados para que os controles sejam preenchidos com os dados atualizados.  

Diferente do objetoRecordset da ADO , a interface IList não mantém o controle sobre o registro atual , não possuindo assim os métodosMoveFirst, MoveNext , MovePrevious e MoveLast da ADO. Ao invés disso o CurrencyManager usa a propriedade Position para manter o controlesobre os registros; incrementando e decrementando esta propriedade permite a navegação pelos registros da tabela.  

Definindo as operações básicas de manutenção de dados  

Agora vamos as operações para manutenção dos dados , começando pela edição realizada quando o usuário clica no botão Editar. Quando issoocorre a seguinte tela é exibida:  

Note que os botões de comando para navegação ,edição , inclusão(Novo) , impressão, deleção e Sairforam desabilitados. 

Os botões Salvar, Cancelar e Carregar Fotoforamhabilitados;  

O acesso para alterar o Sexo e o Ano foram também

habilitados;  

Isso permite a alteração dos dados do formulário comopção para Salvar o Cancelar a operação.  

O código associado ao evento Click do botão Editar é o seguinte:  

 

Page 15: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 15/23

PrivateSubbtnEdita_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) HandlesbtnEdita.Click 

CalldefinirEstado("Editar") 

EndSub 

O código apenas chama a rotina definirEstado() passando o parâmetro "Editar" para indicar que estamos no estado de edição dos dados.  

Abaixo temos um exemplo de tela mostrando a edição sendo realizada com alteração da data de nascimento através do controleDateTimePicker - dtpNascimento, e da caixa de diálogo OpenFileDialog - dlgAbrir - exibindo uma relação de imagens:  

O código para Salvar os dados associado ao evento Click do botão - Salvar - é dado a seguir:  

PrivateSubbtnSalva_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) HandlesbtnSalva.Click 

'verifica o item Endereço IftxEndereco.Text.Trim = "" Then 

MessageBox.Show("Informe o endereço.", "Erro Entrada", MessageBoxButtons.OK,MessageBoxIcon.Information) 

txEndereco.Focus() 

ExitSub 

  

Page 16: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 16/23

EndIf 

DimitemSalvoAsString = txEndereco.Text DimlinhaSalvaAsInteger 

'encerra edição do CurrencyManager AlunosCManager.EndCurrentEdit() 

'define o modo de exibição ordenado por Nome 

AlunosTabela.DefaultView.Sort = "Nome" 

'obtem o id da linha Salva 

linhaSalva = AlunosTabela.DefaultView.Find(itemSalvo) 

'atribui a posição da linha em edição aoC

urrencyManager AlunosCManager.Position = linhaSalva 

CallExibirDados() CalldefinirEstado("Ver") EndSub 

O código verifica se foi informado um valor para o endereço do aluno para prosseguir; em seguida armazena o valor na variável itemSalvo eencerra a edição do CurrencyManager salvando os dados.  

Após definir a ordenação pelo nome procura -se o item salvo atribuindo o seu valor a propriedade Position do CurrencyManager para em seguidaexibir os dados e definir o estado como visualização.  

O botão Cancelar possui o código abaixo:  

PrivateSubbtnCancela_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs)HandlesbtnCancela.Click 

AlunosCManager.CancelCurrentEdit() 

IfmEstado = "Incluir"Then AlunosCManager.Position = mMarcador 

EndIf

CallExibirDados() CalldefinirEstado("Ver") 

EndSub 

 

Page 17: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 17/23

O código usa o método CancelCurrentEdit() para cancelar a edição desfazendo qualquer alteração e verifica se o estado é igual a " Incluir " paraatribuir o valor da variável mMarcador a propriedade Position. Esta variável a iniciada quando o processo de inclusão começa , desta formapodemos voltar a exibir os registros na posição anterior ao início da operação de inclusão.  

O botão Novo é usado para incluir um registro da tabela e tem o seguinte código:  

PrivateSubbtnInclui_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs)HandlesbtnInclui.Click

'define a posicao atual do currencyManager mMarcador = AlunosCManager.Position 

'define o estado no modo inclusão CalldefinirEstado("Incluir") 

'inclui um novo registro no currenymanager AlunosCManager.AddNew() 

'define as propriedades rdoMasculino.Checked = True : lblSexo.Text = "M" rdoPrimeiro.Checked = True : lblGrau.Text = "1" picItem.Image = Nothing lblFoto.Text = "" 

EndSub 

Ao iniciar a inclusão obtemos a posição atual do CurrencyManager e atribuímos a variável mMarcador. Fazemos isso para poder retornar aposição atual dos registros se a inclusão for cancelada.  

Em seguida definimos o modo como 'Incluir' e incluímos um novo registro no CurrencyManager definindo em seguidas as propriedades padrãopara Sexo e Ano e Foto. 

Na última parte deste artigo vou mostrar o código dos botões : Imprimir, Deletar, Sair e Carr egar Foto.

VB.NET 2008 - Cadastro de Alunos - parte 3 

Na segunda parte deste artigo definimos a carga de dados, a navegação pelos registros e as operações básicas de manutenção de dados. Neste

último artigo veremos o código dos botões :Imprimir, Deletar, Sair e Carr egar Foto. 

  

Page 18: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 18/23

Lembrando que a aplicação possui somente um formulário chamado Alunos.vb e que estamos usando o Visual Basic 2008 Express Edition. 

Definindo a impressão 

A seguir eu vou mostrar o código usado para imprimir os dados , inclusive a foto do cadastro de alunos. Em meu artigo Impressão e Visualização. O

que há de novo ?  eu apresento o namespaceSystem.Drawing.Printing e a classe PrintDocument e o componente PrintPreviewDialog. Eles são ospilares da impressão no VB .NET.  

No artigo Cr iando um editor de textos no VB .NET eu mostro como você pode criar um editor de textos com recursos de impressão usando asclasses e em meu artigo Impr imindo no VB 2005 a eu volto ao assunto descrevendo o processo usado para imprimir no VB. Então repetindo o queeu já disse:  

Para imprimir no VB.NET temos a seqüência que deve ser seguida:

1- Primeiro, você deve instanciar um objetoPrintDocument 

2- A seguir você tem que criar uma instância de um objeto PrintDialog e definir a referência para o objeto PrintDocument: 

Dimdoc As PrintDocument = New PrintDocumentDimprinter As PrintDialog = New PrintDialog

printer.Document = doc

3- Em seguida você deve mostrar a caixa de diálogo onde o usuário pode selecionar a impressora e suas propriedades: printer.ShowDialog() 

4- Agora você precisa subscrever o evento PrintDocument.PringPage o qual será disparado para cada nova página:  

AddHandlerdoc.PrintPage, AddressOfPrintPageHandler  

5- Chamar o método Print; 

6- Implementar o tratamento de evento para o evento PrintDocument.PrintPage onde nos desejamos imprimir o texto.  

Então inclua no formulário o componente PrintPreviewDialog alterando o seu nome para dlgVisualiza. Agora no evento Click do botão Imprimirinclua o código: 

PrivateSubbtnImprimir_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs)

 

Page 19: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 19/23

HandlesbtnImprimir.Click 

'Declara o printdocument DimAlunosDocumentAsDrawing.Printing.PrintDocument 

'Cria o documento e da nome ao mesmo AlunosDocument = NewDrawing.Printing.PrintDocument() AlunosDocument.DocumentName = "Alunos" 

'incluir o manipulador de eventos AddHandlerAlunosDocument.PrintPage, AddressOf Me.ImprimirAlunos 

'Imprime no modo de visualização DimSavedPositionAsInteger = AlunosCManager.Position dlgVisualiza.Document = AlunosDocument dlgVisualiza.ShowDialog() 

'libera o documento apos imprimir AlunosDocument.Dispose() 

AlunosCManager.Position = SavedPosition 

EndSub 

Agora temos que codificar a rotina ImprimirAlunos que irá realizar o trabalho de impressão. O código é o seguinte:  

PrivateSubImprimirAlunos(ByValsenderAsObject, ByVal e AsDrawing.Printing.PrintPageEventArgs)

'desenha a bordar DimMyPenAs Pen = New Pen(Color.Black, 3) e.Graphics.DrawRectangle(MyPen, e.MarginBounds.X, e.MarginBounds.Y, 450, 480) DimMyFontAs Font = New Font("Arial", 12, FontStyle.Bold) Dim S AsString = My.Settings.Escola.ToString DimSSizeAsSizeF = e.Graphics.MeasureString(S, MyFont)

e.Graphics.DrawString(S, MyFont, Brushes.Black, e.MarginBounds.X + CInt(0.5 * (250 - SSize.Width)), e.MarginBounds.Y+ 15) 

'posiciona a imagem e.Graphics.DrawImage(picItem.Image, e.MarginBounds.X + 25, e.MarginBounds.Y + 50, 400, 300)e.HasMorePages = False 

'define os campos a serem impressos MyFont = New Font("Arial", 14)

 

 

Page 20: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 20/23

Dim Y AsInteger = e.MarginBounds.Y + 400 

S = txtNome.Text + " " + txEndereco.Text SSize = e.Graphics.MeasureString(S, MyFont) e.Graphics.DrawString(S, MyFont, Brushes.Black, e.MarginBounds.X + CInt(0.5 * (300 - SSize.Width)), Y) 

Y += CInt(MyFont.GetHeight(e.Graphics)) 

'S = txtLastName.Text 'SSize = e.Graphics.MeasureString(S, MyFont) ' e.Graphics.DrawString(S, MyFont, Brushes.Black, e.MarginBounds.X + CInt(0.5 * (300 - SSize.Width)), Y) 'Y += CInt(MyFont.GetHeight(e.Graphics)) 

S = lblGrau.Text + "o Grau " SSize = e.Graphics.MeasureString(S, MyFont) 

e.Graphics.DrawString(S, MyFont, Brushes.Black, e.MarginBounds.X + CInt(0.5 * (300 - SSize.Width)), Y) 

EndSub 

Ao clicar no botão Imprimir o resultado obtido será o seguinte:  

 

Page 21: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 21/23

Usando o recurso do Zoom para aumentar a imagem você pode obter:  

Excluindo dados 

O código do botão Deletar é exibido a seguir. Após confirmação usamos o método RemoveAt do CurrencyManager e em seguida chamamos arotina ExibirDados(). 

PrivateSubbtnDeletar_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) HandlesbtnDeletar.Click

IfMessageBox.Show("Confirma e exclusão deste registro ? ", "Deletar", MessageBoxButtons.YesNo,MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) =

Windows.Forms.DialogResult.YesThen 

  

Page 22: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 22/23

AlunosCManager.RemoveAt(AlunosCManager.Position) CallExibirDados() 

EndIf CalldefinirEstado("Ver") EndSub 

Carregando a foto 

Quando clica no botão Carregar Foto é aberto uma janela de diálogo Abrir para que um arquivo de foto seja selecionado. Após selecionar umaimagem clique no botão Salvar. O código que faz tudo isso é dado abaixo:  

PrivateSubbtnCarregaFoto_Click(ByValsenderAsSystem.Object, ByVal e AsSystem.EventArgs)HandlesbtnCarregaFoto.Click 

DimnomeImagemAsString 

dlgAbrir.InitialDirectory = localfotos 

Try IfdlgAbrir.ShowDialog = Windows.Forms.DialogResult.OKThen 

'obtem o caminho e nome da imagem nomeImagem = dlgAbrir.FileName 

'obtem a posição da / na string DimposicaoBarraAsInteger = nomeImagem.LastIndexOf("\") 'extrai somente o nome do arquivo da string e atribui a lblFoto lblFoto.Text = nomeImagem.Substring(posicaoBarra + 1) 'chama a rotina para exibir a foto CallExibirFoto() 

EndIf Catch ex As Exception 

MessageBox.Show(ex.Message, "Erro ao abrir Foto.", MessageBoxButtons.OK, MessageBoxIcon.Error) EndTry EndSub 

Para encerrar o programa temos o código abaixo associado ao evento Click do botão Sair: 

PrivateSubbtnSair_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs)HandlesbtnSair.Click 

If (MessageBox.Show("Desejasair ?", "Sair", MessageBoxButtons.YesNo) =Windows.Forms.DialogResult.Yes) Then 

 

Page 23: Montando Projeto Completo_vbnet

5/7/2018 Montando Projeto Completo_vbnet - slidepdf.com

http://slidepdf.com/reader/full/montando-projeto-completovbnet 23/23

  Me.Close() 

EndIfEndSub 

Com isso terminei a apresentação da aplicação Cadastro de Alunos usando todos os recursos de manutenção de dados e navegação pelosregistros. Tudo isso com exibição de imagens e impressão também.  

Para encerrar com chave de ouro o último capítulo da série irá mostrar como gerar o pacote para instalação.