SumárioSumário..............................................................................................................................1 APOSTILA BÁSICA E COMPLETA DE VISUAL BASIC...........................................2 Variáveis............................................................................................................................2 Abrangência e Tempo de Vida..........................................................................................2 Tipos de Dados Suportados pelo VB 2005/2008...........................................................3 Operadores.........................................................................................................................4 Estruturas de Decisão........................................................................................................5 O comando if/then.........................................................................................................5 A Função IIF()...............................................................................................................6 O Comando SELECT CASE.........................................................................................7 Estruturas de Repetição.....................................................................................................7 1)WHILE...END WHILE..............................................................................................7 2)DO...LOOP.................................................................................................................8 3)FOR...NEXT...STEP..................................................................................................9 EXIT DO.....................................................................................................................10 EXIT FOR...................................................................................................................10 Evento Keypress..............................................................................................................10 Propriedade TabIndex......................................................................................................10 Msgbox().........................................................................................................................11 Validação de Dados.........................................................................................................11 Criação de SubRotinas (procedures ou funções).............................................................12 Objeto DateTimePicker...................................................................................................12 Objeto MaskedTextBox...................................................................................................13 Objeto TabControl...........................................................................................................13 Para inserir mais “tabpage” na “tabcontrol”:...............................................................13 Para trocar a tabpage de posição:................................................................................13 Categoria MENUS & TOOLBAR...................................................................................14 Componentes: MenuStrip, ToolStrip, StatusStrip, Timer...........................................14 Navegação entre formulários.......................................................................................16 Link BD.......................................................................................................................18 Navegação de registros................................................................................................21 Mensagem de Início (BOF) e Fim (EOF) de Arquivo Encontrado.............................22 Barra de Manutenção com Comandos SQL...............................................................23 Consultando registros..................................................................................................25 Rotina de Movimentação.............................................................................................28 Rotina de Impressão....................................................................................................29 Relatório geral – via programação................................................................................31 PROPRIEDADES DO OBJETO DATAGRIDVIEW:...................................................34 PROPRIEDADES DO OBJETO DATAGRIDVIEW VIA CÓDIFICAÇÃO:...........37 Introdução ao VB NET 2008 8/fev/2010 APOSTILA BÁSICA E COMPLETA DE VISUAL BASIC Variáveis O Conceito de variáveis em programação não difere muito do empregado na matemática. Nesta última, utilizamos variáveis como forma de indicar um valor que pode variar ou que ainda deve ser calculado. Isso também ocorre em programação, ou seja, elas são usadas para representar valores que são armazenados em posições específicas da memória do computador. Para definir um nome de variável, algumas regras devem ser seguidas: 1. O nome precisa iniciar com uma letra. 2. Somente são permitidos números, letras, sublinhado e o cifrão. Símbolos gráficos,caracteres acentuados ou sinais de pontuação são inválidos. 3. O nome da variável não pode coincidir com uma palavra reservada, ou seja, com um nome de função ou comando do próprio VB. Antes de podermos utilizar uma variável, é imprescindível que ela seja declarada. Nesta declaração, informamos o nome da variável e seu tipo de dado. È através da declaração que também definimos o seu escopo, isto é, a abrangência ( visibilidade ) e o tempo de vida ( Existência ). Abrangência e Tempo de Vida “Dois conceitos muito empregados na programação são “Abrangência” e”Tempo de Vida “ de uma variável. O primeiro conceito refere – se ao limite de visibilidade de uma variável, ou seja, até que ponto ela é reconhecida dentro do programa. Já o segundo termo diz respeito a quanto tempo uma variável pode reter seu valor. A esses dois conceitos damos o nome de “escopo “. De forma mais detalhada, podemos dizer que a abrangência está relacionada com as partes (Funções, sub-rotinas, módulos) do programa que podem acessar o valor da variável. Isso significa que podemos ter variáveis cujos valores somente são acessados pela função para sub-rotina em que foram declaradas e em nenhuma outra parte do programa. Neste caso as variáveis são “locais” e para declará-las utilizamos o comando “Dim“. Exemplo: Dim txtnome as string. Para tornar uma variável disponível a todos os módulos e a todas as rotinas da aplicação, devemos declará – la com o comando “Public”, este tipo de escopo recebe o nome de Global. Exemplo: Public valor as double. Pág: 2 Introdução ao VB NET 2008 8/fev/2010 Tipos de Dados Suportados pelo VB 2005/2008 Tipo de Dado Booleam Byte SByte Char Date Short Integer Long Single Double Decimal String Object UShort UInteger ULong Descrição Valor Lógico Valor Numérico Inteiro com tamanho de 1 byte não sinalizado Valor Numérico Inteiro com tamanho de 1 byte sinalizado Valor do tipo caractere compatível com o sistema unicode Data do calendário Valor numérico inteiro curto Valor numérico inteiro Valor numérico inteiro longo Valor numérico de ponto flutuante (Simples precisão) Valor numérico de ponto flutuante (Dupla precisão) Valor numérico de alta precisão Tipo de dado Caractere de comprimento variável Uma referência a objetos / classes Valor numérico curto sem sinal Valor numérico inteiro sem sinal Inteiro long sem sinal Pág: 3 Tamanho na memória 1 byte 1 byte 1 byte 2 bytes 8 bytes 2 bytes 4 bytes 8 bytes 4 bytes 8 bytes 16 bytes Número de bytes variável 4 bytes 2 bytes 4 bytes 8 bytes Introdução ao VB NET 2008 8/fev/2010 Operadores Para podermos manipular os dados armazenados na variáveis dos nossos programas dispomos dos operadores. Temos basicamente 5 tipos de operadores: 1. Aritméticos ou matemáticos: Permitem a execução de cálculos; 2. Operadores relacionais: Efetua comparações entre variáveis e valores; 3. Lógicos: Permitem a construção de expressões lógicas dentro de comandos de decisões; 4. Operadores de atribuição de valores: Permite atribuir valores as variáveis; 5. Operadores de manipulação de bytes: Trabalham diretamente com os bites individuais de um byte. Os operadores matemáticos são: Operador Descrição + * / ^ Mod Operador de adição Operador de subtração Multiplicação Divisão Exponênciação Resto de uma divisão de números inteiros Divisão inteira \ Alem desses foram acrescentados também, nessa versão, operadores duplos, muito comum em programas escritos em C ou C++. São eles: 1 += 2 -= 3 *= 4 /= 5 ^= Como podemos perceber, temos um operador aritmético combinado com o operador de atribuição =. Com eles podemos efetuar uma operação de forma mais compactada. Por exemplo, o seguinte código: Saldo=Saldo-Débito Pode perfeitamente ser substituído por: Saldo-=Débito Pág: 4 Introdução ao VB NET 2008 8/fev/2010 Os operadores relacionais são: Operador > < >= <= = <> Descrição Maior que Menor que Maior que ou igual a Menor que ou igual a Igual Diferente de Estas comparações sempre resultarão em um valor lógico: Verdadeiro ou Falso Os operadores lógicos são: Operador And Or Not Descrição And lógico Or lógico Not lógico Estruturas de Decisão Qualquer linguagem de programação dispõe de meios para tornar possível a tomada de decisões. Devemos entender por tomada de decisões a capacidade que o programa tem de fazer um teste e executar outra tarefa de acordo com o resultado obtido. O comando if/then Esta ação pode ser constituída por uma ou mais linhas de instrução. Exemplo: 1-IF simples IF dblsaldo = 0 then MsgBox(“Não há saldo disponível na conta”) End if 2-IF alinhado Podemos ter uma estrutura IF/then dentro de outra. Exemplo: IF operador = ” / “then IF valor = 0 then MsgBox(“Impossível divisão por zero”) End if End if Pág: 5 Introdução ao VB NET 2008 8/fev/2010 3-IF COM ELSE Existe uma variação deste comando que possibilita a execução de um código caso o resultado seja falso.Para isso devemos utilizar a cláusula else.Exemplo: IF dblsaldo = 0 then MsgBox(“Não há saldo disponível na conta”) Else DblSaldo -= valor End if 4-IF COM ELSEIF Uma última variação deste comando é a estrutura “ IF / THEN / ELSEIF”. Exemplo: IF valor=150,00 then MsgBox(“O valor é 150,00”) Elseif valor=200,00 then MsgBox(“O valor é 200,00”) Elseif valor = 400,00 then MsgBox(“O valor é 400,00”) End If A Função IIF() Existe ainda a instrução IIF que pode ser aplicada em situações em que existam apenas duas ações, uma verdadeira e outra falsa. Sua sintaxe é: if ( <condição #1> , < código executado se a instrução for verdadeira> , <código se a instrução for falsa>) Esta função é bastante simples e interessante, pois simplifica a avaliação de pequenas expressões. O funcionamento desta função é idêntico a função “= Se” do Excel, onde, se a resposta da condição for verdadeira será efetuada a instrução após a primeira virgula, e, se for falsa será executada a função após a segunda vírgula. Exemplo: Function Verifica (ByVal Teste As Integer) As String Verifica = IIf(Teste > 1000, "Grande", "Pequeno") End Function Pág: 6 Introdução ao VB NET 2008 8/fev/2010 O Comando SELECT CASE Este comando serve para quando queremos efetuar testes sequenciais. Ele compara o conteúdo de uma variável com uma lista de valores constantes, executando as linhas de código quando encontrar o valor correspondente. É importante observar que somente é possível fazer uma comparação de igualdade. Exemplo: Obs.:Variável numérica. Obs.:Suponha que a variável ”dia” possui o número do dia da semana: Select case dia Case 0 MsgBox(“Hoje é domingo”) Case 1 MsgBox(“Hoje é segunda”) Case 2 MsgBox(“Hoje é terça”) Case 3 to 5 MsgBox(“Hoje é quarta, ou quinta ou sexta”) Case 6,7 MsgBox(“Oba fim de semana”) End Select Estruturas de Repetição As estruturas de repetição – também conhecidas como estruturas de looping – permitem que você execute uma linha ou bloco de código repetidamente até que uma condição seja verdadeira. O uso de loopings nos programas é uma prática comum, pois em muitos casos é preciso percorrer uma determinada coleção de dados, um conjunto de registros, valores de matrizes, etc. 1) WHILE...END WHILE O looping While é executado sempre associado a uma condição, ou seja, a cada passagem pelo looping a condição é avaliada. Veja a sintaxe a seguir: While condição código End While Exemplo: Dim inicio, fim, passo As Integer inicio = Cint(txtinicio.Text) fim = Cint(txtfim.Text) passo = Cint(txtpasso.Text) lstWW.Items.Clear() While inicio <= fim lstWW.Items.Add(inicio) Pág: 7 Introdução ao VB NET 2008 8/fev/2010 inicio += passo End While PS: Executa enquanto a resposta para a condição for verdadeira (true). 2) DO...LOOP O Do...Loop é semelhante ao while, ou seja, é executado sempre associado a uma condição, novamente a cada passagem pelo looping a condição é avaliada. Só que o Do...Loop permite que dependendo da situação, a condição possa ser colocada no início ou no final do looping. Se for ao início, é avaliada logo na primeira vez; se for no final, o looping é executado pelo menos a primeira vez, pois a condição será avaliada no final da primeira passagem pelo looping. Caso precise abandonar o looping, use o Exit Do, que é opcional. Veja a sintaxe tanto com a condição no começo como no final: Do { While | Until } condição código Exit Do Loop ou Do código Exit Do Loop { While | Until } condição Depois do Do, você pode usar o While ou o Until, a diferença é que o While faz com que o loop seja executado até que a condição seja (falsa), e o Until até que a condição seja True (Verdadeira). Exemplos: O Until faz com que o loop seja executado até que a condição seja verdadeira, ou seja, executa enquanto a condição for falsa: Dim inicio, fim, passo As Integer inicio = Val(txtinicio.Text) fim = Val(txtfim.Text) passo = Val(txtpasso.Text) lstDul.Items.Clear() Do Until inicio > fim lstDul.Items.Add(inicio) inicio += passo Loop Dim inicio, fim, passo As Integer inicio = Val(txtinicio.Text) fim = Val(txtfim.Text) passo = Val(txtpasso.Text) Pág: 8 Introdução ao VB NET 2008 8/fev/2010 lstDL.Items.Clear() Do lstDL.Items.Add(inicio) inicio += passo Loop Until inicio > fim O While faz com que o loop seja executado até que a condição seja falsa, ou seja, executa enquanto a condição for verdadeira: Dim inicio, fim, passo As Integer inicio = Val(txtinicio.Text) fim = Val(txtfim.Text) passo = Val(txtpasso.Text) lstDW.Items.Clear() Do While inicio <= fim lstDW.Items.Add(inicio) inicio += passo Loop Dim inicio, fim, passo As Integer inicio = Val(txtinicio.Text) fim = Val(txtfim.Text) passo = Val(txtpasso.Text) lstDlw.Items.Clear() Do lstDlw.Items.Add(inicio) inicio += passo Loop While inicio <= fim 3) FOR...NEXT...STEP O comando FOR faz uma contagem de um determinado intervalo de números. Sempre que essa contagem encontra com o comando NEXT (próximo) a execução do programa retorna ao comando FOR até que o número final seja alcançado. Usamos o STEP em conjunto com o FOR para fazer com que a contagem seja incrementada. Exemplo: Se queremos que o comando conte de 2 em 2 colocamos “FOR Variável = 1 TO 10 STEP 2”. Exemplo: ' o for next inicializa e atualiza a variável utilizada na expressão lógica que controla a repetição Dim contador As Integer ' limpar o listview lstFN.Items.Clear() ' adiciona mais um item na lista enquanto contador não for igual a fim For contador = Val(txtinicio.Text) To Val(txtfim.Text) Step Val(txtpasso.Text) lstFN.Items.Add(contador) Next Pág: 9 Introdução ao VB NET 2008 8/fev/2010 EXIT DO Força a saída de um LOOP, seja WHILE ou UNTIL, mesmo que a condição estabelecida não seja verdadeira: Contador = 0 Do While Contador < 10 Contador = Contador + 1 Print Contador If Contador = 5 Then Exit Do End If Loop Print “Fim da execução” EXIT FOR Força a saída de um FOR...NEXT, mesmo que o número final não tenha sido alcançado: Contador = 0 For Contador = 1 To 10 Print “A variável Contador agora vale “ & Contador If Contador = 6 Then Exit For end if Next Print “Fim da execução” Evento Keypress Para trocar de objeto (textbox) com o pressionamento do Enter: Configurar o Evento keypress do textbox: If Asc(e.KeyChar) = 13 Then Txt_numB.Focus() End If Propriedade TabIndex Para trocar de objeto (textbox, label, etc) com o pressionamento da tecla TAB: Alterar a propriedade “TABINDEX” de cada objeto com a sequência desejada. Pág: 10 Introdução ao VB NET 2008 8/fev/2010 Msgbox() Para enviar uma mensagem na caixa de diálogo: Utilizaremos o comando “MSGBOX” que é composto por três parâmetros: mensagem, ícone e título da janela. Sintaxe:: MsgBox("Mensagem", estilo do ícone, “título da janela”) Exemplos: MsgBox("Registro incluido com sucesso !", MsgBoxStyle.Information, "Incluindo registros") If MsgBox("Deseja realmente sair?? ", MsgBoxStyle.YesNo, "Encerrando...") = MsgBoxResult.Yes Then Comandos… Comandos … Me.Close() End If MsgBox("Registro incluido com sucesso !") Validação de Dados Para consistir a entrada dos dados: '' Rotina para validar dados digitados em caixa de texto (textbox) If txt_numA.Text = "" Or not IsNumeric(txt_numA.Text) Then MsgBox("digite um numero válido para A") txt_numA.Focus() ElseIf txt_numB.Text = "" Or not IsNumeric(txt_numB.Text) Then MsgBox("digite um numero válido para B") txt_numB.Focus() Else ' caso não encontre erros de validação coamandos End If '' Rotina para validar campos mascarados (maskedTextBox) ElseIf Not CPF_PacienteMaskedTextBox.MaskFull Then MsgBox("digite um CPF válido") CPF_PacienteMaskedTextBox.Focus() Pág: 11 Introdução ao VB NET 2008 8/fev/2010 Criação de SubRotinas (procedures ou funções) Para criar subrotinas que serão chamadas dentro de outras rotinas : Logo abaixo do “PUBLIC CLASS NOMEDOFORM” , serão digitados os comandos pertencentes a subrotina, envolvidos por: “PRIVATE SUB NOME SUBROTINA() ...... END SUB”. Exemplo: Private Sub limpar() '' limpar textbox Nome_PacienteTextBox.Clear() ''limpar combobox Sexo_PacienteComboBox.Text = "" RG_PacienteTextBox.Clear() '' limpar maskedTextBox CPF_PacienteMaskedTextBox.Clear() Telefone_PacienteMaskedTextBox.Clear() '' limpar datetimepicker Nasc_PacienteDateTimePicker.Value = Today '' limpar label Cod_PacienteLabel1.Text = "" End Sub Para chamá-la dentro de outra rotina basta digitar seu nome, levando em consideração a sequência lógica da rotina em execução. Objeto DateTimePicker Para trabalhar com data e hora : Na ToolBox temos a ferramenta “DATETIMEPICKER” que é um objeto específico para trabalhar com data e hora sem a necessidade de criarmos campos mascarados. Ao inseri-lo no formulário, ele está com a data completa e por extenso. Através da propriedade “FORMAT” podemos alterar esta exibição para “SHORT” que mostra a data abreviada (dd/mm/aaaa) ou “TIME” que mostra a hora abreviada (hh:mm:ss) , através da propriedade “ShowUpDown” (true), mudamos o ponteiro para hora, minuto. Na execução, é apresentado um calendário ao clicarmos sobre este campo, para escolha do dia, mês e ano, podendo também ser diretamente digitado. Deste objeto podemos extrair alguns valores como o dia, o mês, o dia da semana, etc. da seguinte maneira: Dim dia, mes, diasemana As Integer Pág: 12 Introdução ao VB NET 2008 8/fev/2010 dia = dtp_data.Value.Day mes = dtp_data.Value.Month diasemana = dtp_data.Value.DayOfWeek Objeto MaskedTextBox Para mascarar campos : Na ToolBox temos a ferramenta “MASKEDTEXTBOX” que é um objeto específico para trabalhar com campos mascarados, através da propriedade “MASK” podemos definir a máscara para o campo, nos baseando nos caracteres utilizados no Acess na propriedade Máscara de entrada (0 = posição numérica obrigatória, 9 = posição numérica opcional). Para melhor definir este campo, usamos a seta que se encontra no canto superior direito deste campo, opção “SET MASK”. Objeto TabControl Para mudar de guia automaticamente : No evento Load do formulário (para ocorrer assim que o programa começar a ser executado), ou em um botão, coloque a seguinte programação: tabcontrol1.selectedtab=tabpage2 Para inserir mais “tabpage” na “tabcontrol”: Utilize o botão direito do mouse em uma das guias, opção “add tab”. Para trocar a tabpage de posição: Selecionar a tabControl, propriedade TabPages, e através do seletor “reposicionar” a tabpage respectiva. Pág: 13 Introdução ao VB NET 2008 8/fev/2010 Categoria MENUS & TOOLBAR Componentes: MenuStrip, ToolStrip, StatusStrip, Timer 1) Criar um novo projeto chamado “PrjDisciplinas” 2) Neste projeto criar um formulário chamado “frmMenu” com algumas das seguintes propriedades: Text Name ** MaximizeBox ** MinimizeBox ControlBox Disciplinas do 3º Informática frmMenu False False False (botão fechar, ícone, botão maximizar e minimizar) WindowState Maximizado Start Position Center Screen Icon Procurar um arquivo com extensão “ico” (*.ico) BackGroundImage Escolher uma figura para colocar como fundo (Project Resources) BackGroundImageLayout Definir a posição da figura: Center, streeth, zoom 3) Testar com a tecla “F5” ou botão (start debugging) para compilar e executar. 4) Salvar o projeto: - clicar no botão “Save All” (vários disquetes), - escolher a pasta - ativar chek box “create directory” se quiser criar uma pasta dentro da pasta do projeto, botão “Save All” --- Cuidado! Caso ainda não tenha dado nome para o formulário, neste momento ele solicitará nome para todos aqueles que ainda não foram salvos. 5) Objeto Menu de opções (MenuStrip): Criar no formulário um menu de opções com as seguintes características: &Arquivo &Disciplinas Sair DS II PC II GSO III PI &Utilitários Programas Externos A&juda Help Desenvolvedores 6) Atalhos: Inserir atalhos para as sub-opções: - Selecione a sub-opção e escolha a propriedade “SHORTCUTKEYS”, em seguida escolha o conjunto de teclas que servirão como atalho (CTRL + S) a esta opção, automaticamente as letras aparecerão ao lado da opção no menu. Pág: 14 Introdução ao VB NET 2008 8/fev/2010 7) Programação opção SAIR: Duplo clique sobre a opção “SAIR”, para programá-la digite o comando “END” que encerra a aplicação: 8) Salvar e testar. 9) Objeto Barra de Ferramentas (ToolStrip): a) Inserir uma barra de ferramentas e nela 1 botão, 1 separador e mais 2 botões. P.S.: Com o botão direito do mouse sobre ela, opção insert button, separator. Propriedades dos botões: Image Inserir imagem dentro do botão ToolTipText Inserir texto auto explicativo ao posicionar sobre o botão Name Btnxxxxxx, para cada botão respectivamente b) Duplo clique sobre o botão para programá-lo: frmxxx.showdialog 'para chamar um formulário 10) Objeto Barra de Status (Status Strip): Inserir uma barra de status e nela duas “statuslabel”, uma chamada “lbldata” e a outra “lblhora”, conforme as seguintes propriedades: Text Name Data: lblData Hora: lblHora 11) Inserir programação para apresentar a data: No evento Load do formulário digitar o seguinte código fonte para mostrar a data na label lbldata: lblData.Text = "Data: " + Today() 12) Inserir programação para apresentar a hora: -- Mas para que a data e a hora sejam atualizadas segundo a segundo, será necessário colocar este comando dentro do objeto “Timer” Inserir o objeto Relógio (grupo componentes – Timer) e configurar as propriedades: Name Interval Enabled Tmrtemporizador 1000 (para bater a cada segundo) True Pág: 15 Introdução ao VB NET 2008 8/fev/2010 13) Programar o timer: Duplo clique neste objeto para programá-lo: Private Sub tmrTemporizador_Tick(ByVal sender As System.Object, …. lblhora.Text = "Horas :" timeofday() End Sub 14) Objeto PictureBox: Insira este objeto no meio do form configurando as seguintes propriedades: BackGroundImage BackGroundImageLayout Name *.bmp Center ou stretch Pic_imagem Navegação entre formulários 1) Opção Disciplinas: - Inserir um formulário para cada disciplina constante neste menu, e dentro de cada um deles explanar sobre a respectiva disicplina. 2) Para fechar formulários: a) Através do botão “Fechar”: ----- Botão Fechar -------sair = False If MsgBox("Deseja realmente sair?? ", MsgBoxStyle.YesNo, "Encerrando...") = MsgBoxResult.Yes Then bs_disciplinas.CancelEdit() conn.Close() Me.Close() sair = true End If b) Através do evento “FormClosed” do formulário (evento disparado ao clicar sobre o “X” da barra de títulos do formulário: ----- Evento FormClosed -------- If sair <> False Then Pág: 16 Introdução ao VB NET 2008 8/fev/2010 If MsgBox("Deseja realmente sair?? ", MsgBoxStyle.YesNo, "Encerrando.......") = MsgBoxResult.No Then e.Cancel = True Else 'conn.Close() End If End If 3) Opção “Desenvolvedores”: - Inserir um novo formulário (Menu Project, Add Windows Form) e nomeá-lo de frmDesenvolvedores: FormBorderStyle FixedDialog (só sairá deste formulário quando for fechado no botão) Size Width 550 Size Height 450 StartPosition CenterScreen (no centro do formulário que o chamou) Text Desenvolvedores WindowState Normal ControlBox False (botão fechar, maximizar, minimizar e ícone da barra de título não aparecerão) - Neste formulário inserir os dados dos alunos desenvolvedores. 4) Opção Help: - Desenvolver um “mini manual”, sobre esta aplicação, em HTML, Word ou PDF e carregá-lo através desta opção. 5) Opção “Programas Externos”: - Inserir um novo formulário (Menu Project, Add Windows Form) e nomeá-lo de frmUtilitários, com o layout a seguir: - Botão “Calculadora”: Pág: 17 Introdução ao VB NET 2008 8/fev/2010 Shell("calc.exe", AppWinStyle.MaximizedFocus) - Botão “Carregar um arquivo Pdf”: Process.Start("manual.pdf") 'este arquivo tem que estar dentro da pasta do projeto, no bin\debug - Botão “Carregar um site”: System.Diagnostics.Process.Start("www.google.com.br") 'Endereço do site que será Aberto - Botão “Carregar um arquivo via formulário VB”: Para isto é necessário chamar outro formulário que irá conter um objeto “WEBBROWSER” , com a propriedade “Dock” = fill. No evento Load deste formulário, programar: Dim caminho As String = Application.StartupPath + "\Manual.pdf" WebBrowser1.Navigate(caminho) Link BD 15) Criar um novo projeto chamado “PrjEscola”, com um formulário parecido com o “Menu Principal” da figura acima. Pág: 18 Introdução ao VB NET 2008 8/fev/2010 16) Criar dentro deste projeto um outro formulário “Vazio” e nomeá-lo para “Frm_Cad_Disciplinas”. chamá-lo através da sub-opção “Disciplinas” da opção “Cadastro” do menu principal. 17) Salvar o projeto. 18) Inserir o Bd dentro da pasta bin\debug 19) ****** Módulo ******* No projeto inserir um módulo : Menu Project, Add Module. O módulo é um espaço onde são declaradas variáveis e sub-rotinas que serão vistas em qualquer formulário dentro do projeto. No módulo iremos importar as duas classes responsáveis pela conexão com o BD: Imports System.Data.OleDb Imports System.IO A seguir iremos declarar e atribuir valores as variáveis de conexão: Module Module1 ' variável para conectar bco Public conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= BdEscola.accdb") ' variável do tipo comando para o comando SQL Public cmd As OleDbCommand = conn.CreateCommand ' variável do tipo binding source (tabela virtual) Public bs_disciplina As BindingSource = New BindingSource() ' variável do tipo string para o comando SQL Public strsql As String ' variável do tipo datareader (tabela somente leitura) Public dr_d As OleDbDataReader ' variável para validação dos dados Public valida As Integer = 0 End Module 20) ***** Formulário Cadastro de Disciplinas *************** Inserir um novo formulário para montar o formulário de cadastro de disciplinas: ********* Menu Data opção ADD New Data Source: - Na janela escolha Database – Next, - botão New Connection e na tela que surgir escolha entre SQL ou ACCESS (datasource) e o caminho do banco e o banco (Database file name) – OK – Next e na mensagem clique em Não (para não trabalhar com a cópia do banco na pasta do projeto). Pág: 19 Introdução ao VB NET 2008 8/fev/2010 - Dê um nome para esta conexão – Next - Na janela de escolha de objetos do BD selecione Tables e clique sobre as tabelas que farão parte desta conexão (todas que o projeto irá usar) e então Finish. ********** Menu Data opção Show Data Source: Expanda a tabela Disciplinas (+), clique na seta e escolha Details (para visualizar campos e não dataGrid) , no campo CÓDIGO escolha Label . Clique com o botão direito do mouse sobre o nome Disciplinas (da tabela), opção Details, agora arraste-a para dentro do formulário. Posicione os objetos e ajuste seus tamanhos. Delete a barra Binding Navigator (a barra de navegação e manutenção de registros), bem como os outros objetos que aparecerem na área de notificação (TableAdapter, DataSet, BindingSource, ...). Também delete as referências a este objetos no código fonte: - Private sub BindNavigator ......... ................... End Sub - xxxxxTableAdapter.Fill(........................) 21) Desenhe no formulário um grid (Toolbox, categoria Data, ferramenta DataGridView). 22) No código fonte antes do “Public class nomedoFrm”, importar as classes responsáveis pelo acesso e manutenção do bd: Imports System.Data.OleDb Imports System.IO Isto se faz necessário para o reconhecimento dos objetos de conexão no formulário atual. 23) O próximo passo é abrir a conexão e a tabela específica para este formulário. Estes comandos serão colocados no evento Load do formulário: limpar() ' sub-rotina que irá limpar os textbox conn.Open() ' abre o bd que está referenciado no modulo na variável conn carregar_datagrid() ' coloca os registros da tabela no grid 24) Sub-rotina “Carregar_DataGrid” : Private Sub carregar_datagrid() ' atribuir um comando sql para a variável de comando strsql strsql = "SELECT * FROM disciplinas ORDER BY descrição" ' criar uma variável do tipo comando para posteriormente executar a variável strsql na conexão Pág: 20 Introdução ao VB NET 2008 8/fev/2010 Dim objCommand As New OleDbCommand(strsql, conn) ' atribuindo a variável dr o resultado da execução da variável comando dr_d = objCommand.ExecuteReader() ' ** alimentando o binding source com a tabela virtual bs_disciplinas.DataSource = dr_d ' ** alimentando o datagridview com o bs DataGridView1.DataSource = bs_disciplinas ' mostrar os dados da tabela física nos textbox igualar_text() End Sub 25) Esta sub-rotina é responsável por carregar nas caixas de textos, labels, etc o conteúdo dos campos (registros) que estão na memória: Private Sub igualar_text() lbl_Cod_disciplina.Text = bs_disciplinas.Current("cod_disciplina") DescriçãoTextBox.Text = bs_disciplinas.Current("descrição") SiglaTextBox.Text = bs_disciplinas.Current("sigla") End Sub 26) Perceba que, na execução, ao posicionar o mouse sobre um registro na grid ele não atualiza os textbox. Para resolver este problema vamos criar mais uma subrotina e iremos chamá-la no evento “Click” da grid: Private Sub sincronizar_text_grid() Lbl_Cod_disciplina.Text = DataGridView1.CurrentRow.Cells(0).Value DescriçãoTextBox.Text = DataGridView1.CurrentRow.Cells(1).Value SiglaTextBox.Text = DataGridView1.CurrentRow.Cells(2).Value End Sub 27) Pesquisa Rápida: duplo clique na caixa de texto “txt_pesquisa” e irá ativar o evento “TextChanged”: strsql = "SELECT * FROM disciplinas where sigla like '" + txt_pesquisa.Text + "%'" Dim objCommand As New OleDbCommand(strsql, conn) dr_disciplina = objCommand.ExecuteReader() bs_disciplinas.DataSource = dr_disciplina If bs_disciplinas.Count = 0 Then MsgBox("Registro não encontrado") txt_pesquisa.clear() txt_pesquisa.Focus() Else igualar_text() End If Navegação de registros Botões para NAVEGAÇÃO de registros: 1) Inserir um groupbox: - ToolBox, grupo Containers, objeto GroupBox, text = Navegação. Pág: 21 Introdução ao VB NET 2008 8/fev/2010 2) Inserir quatro botões dentro deste groupbox: - Toolbox, grupo CommonControls, objeto Button. - Propriedades dos botões: Image Text ToolTipText Name *.bmp Primeiro Primeiro Registro btnPrim *.bmp Anterior Registro Anterior btnAnt *.bmp Próximo Próximo Registro btnProx *.bmp Último Último Registro btnUlt 3) Programação dos botões: ----- Botão Primeiro -------' move o ponteiro de registros para a primeira posição da tabela virtual - memória bs_disciplinas.MoveFirst() ' - atualiza os campos do formulário com a posição da memória igualar_text() ----- Botão Último -------' move o ponteiro de registros para a última posição da tabela virtual - memória bs_disciplinas.MoveLast() ' - atualiza os campos do formulário com a posição da memória igualar_text() Mensagem de Início (BOF) e Fim (EOF) de Arquivo Encontrado ----- Botão Anterior -------If bs_disciplinas.Position = 0 Then MsgBox("Ínicio de arquivo encontrado") Else bs_disciplinas.MovePrevious() igualar_text() End If ----- Botão Próximo -------If bs_disciplinas.Count = bs_disciplinas.Position + 1 Then MsgBox("Fim de arquivo encontrado") Else bs_disciplinas.MoveNext() igualar_text() End If BOF = Begin Of File EOF = End Of File Pág: 22 Introdução ao VB NET 2008 8/fev/2010 Barra de Manutenção com Comandos SQL Botões para MANUTENÇÃO de registros: 1) Inserir um groupbox: - ToolBox, grupo Containers, objeto GroupBox, text = Manutenção. 2) Inserir sete botões dentro deste groupbox: - Toolbox, grupo CommonControls, objeto Button. - Propriedades dos botões: Image Text Name *.bmp Novo btnNovo *.bmp Cancelar btnCancelar Image *.bmp *.bmp *.bmp Text Incluir Alterar Excluir Name btnIncluir btnAlterar btnExcluir 3) Programação dos botões: ----- Botão Novo -------limpar() DescriçãoTextBox.Focus() ----- Botão Cancelar -------bs_disciplinas.CancelEdit() ----- Botão Excluir -------cmd.CommandText = "delete from Disciplinas where Cod_Disciplina = " + lbl_Cod_disciplina.Text + "" Try cmd.ExecuteNonQuery() carregar_datagrid() MsgBox("Registro excluido com sucesso !", MsgBoxStyle.Information, "excluindo registros") Catch erro As Exception MsgBox("Erro " & vbCrLf & erro.ToString, MsgBoxStyle.Critical, "Erro") End Try Pág: 23 Introdução ao VB NET 2008 8/fev/2010 ----- Botão Alterar -------Neste momento será necessário criar uma sub-rotina para validar os dados que foram digitados. A seguir a rotina para alterar dados: Valida() If erro = 1 Then cmd.CommandText = "UPDATE Disciplinas SET " cmd.CommandText = cmd.CommandText & "descrição ='" + Me.DescriçãoTextBox.Text + "'," cmd.CommandText = cmd.CommandText & "sigla ='" + Me.SiglaTextBox.Text + "' " cmd.CommandText = cmd.CommandText & " where Cod_disciplina = " + Me.lbl_Cod_disciplina.Text + "" Try cmd.ExecuteNonQuery() carregar_datagrid() MsgBox("Registro alterado com sucesso !", MsgBoxStyle.Information, "Alterando registros") Catch erro As Exception MsgBox("Erro " & vbCrLf & erro.ToString, MsgBoxStyle.Critical, "Erro") End Try End If Observação: 1) Para alterar dados de um campo tipo data utilize “cerquilha” no lugar do apóstrofo no nome do objeto do formulário.:Ex.: cmd.CommandText & "nasc_pac = #" + Me.Nasc_PacDateTimePicker.Value.Date + "# " 2) Para alterar dados de um campo número (tabela) não utilize “apóstrofo”, somente “aspas” no nome do objeto do formulário.:Ex.: cmd.CommandText & "cod_cliente = " + Me.txt_cod_cliente.txt + "" ----- Botão Incluir -------Também se faz necessário validar os dados digitados antes de incluir na tabela. Valida() If erro = 1 Then cmd.CommandText = "Insert into Disciplinas (descrição,sigla)" cmd.CommandText = cmd.CommandText & "Values ('" + Me.DescriçãoTextBox.Text + "'," cmd.CommandText = cmd.CommandText & "'" + Me.SiglaTextBox.Text + "')" Try cmd.ExecuteNonQuery() carregar_datagrid() ' atualizando a grid MsgBox("Registro incluido com sucesso !", MsgBoxStyle.Information, "Incluindo registros") Pág: 24 Introdução ao VB NET 2008 8/fev/2010 Catch erro As Exception MsgBox("Erro " & vbCrLf & erro.ToString, MsgBoxStyle.Critical, "Erro") End Try End If Observação: 1) Para incluir dados em um campo data utilize “cerquilha” no lugar do apóstrofo no nome do objeto do formulário. Ex.: cmd.CommandText & "#" + Me.Nasc_PacDateTimePicker.Value.Date + "#," 2) Para incluir dados em um campo número não utilize “apóstrofo”, somente “aspas” no nome do objeto do formulário. Ex.: cmd.CommandText & "" + Me.txt_cod_cliente.text + "," Consultando registros 4) Inserir um novo formulário chamado frm_Consultar_Disciplina e dentro dele um objeto “dataGridView” : 5) No código fonte antes do “Public class nomedoFrm”, importar as classes responsáveis pelo acesso e manutenção do bd: Imports System.Data.OleDb Imports System.IO Isto se faz necessário para o reconhecimento dos objetos de conexão no formulário atual. 6) Criar uma sub rotina para alimentar a “grid”. 7) No “FormLoad” , abrir a conexão e alimentar a grid com os registros da tabela: ' abrir a conexão definida no módulo conn.Open() ' ***** alimentar a datagrid com os registros da tabela Carregar_grid() Pág: 25 Introdução ao VB NET 2008 8/fev/2010 8) Programar o evento “FormClosing” do formulário para finalizar este formulário ao clicar no “X” da barra de títulos: If MsgBox("Deseja realmente sair?? ", MsgBoxStyle.YesNo, "Encerrando.......") = MsgBoxResult.No Then e.Cancel = True Else bs_disciplinas.CancelEdit() conn.Close() End If 9) Criar um “Group Box” com as opções possíveis de consulta, conforme modelo: No evento “TextChanged” da caixa de texto inserir a seguinte programação: 10) Apresentando o resultado da pesquisa em outro formulário: a) Criar um botão com as seguintes propriedades: name: “BTN_OutroForm” text:”Apresentar resultado em outro formulário”, O objetivo deste botão é apresentar o registro encontrado em caixas de texto de outro formulário. Programe-o para que abra o formulário a seguir (frm_mostrar_resultado). b) Crie também um novo formulário no projeto chamado: “frm_mostrar_resultado”. Insira nele a tabela “disciplinas” da janela “DataSource” no modo “Detail´s”. Pág: 26 Introdução ao VB NET 2008 8/fev/2010 Para que ele apresente os dados escolhidos no formulário anterior, basta no evento “formLoad” igualar as caixas de texto com os campos do “BindingSource”: Cod_disciplinaLabel1.Text = bs_disciplinas.Current("cod_disciplina") DescriçãoTextBox.Text = bs_disciplinas.Current("descrição") SiglaTextBox.Text = bs_disciplinas.Current("sigla") 11) Efetuando a contagem de registros: a) Criar um botão com as seguintes propriedades: name: “BTN_Contar” text:”Contar Registros”, Crie também uma label, chamada “Lbl_result” para nela mostrar o resultado da contagem. O objetivo deste botão é apresentar a quantidade (contagem) de registros que atendam a condição da pesquisa. Programe-o com a seguinte instrução SQL: lbl_Result.Text = bs_disciplinas.Count 12) Efetuando a soma de registros: b) Criar um botão com as seguintes propriedades: name: “BTN_Somar” text:”Somar Registros”, Aproveite a label “Lbl_result” para nela mostrar o resultado da soma dos códigos. O objetivo deste botão é apresentar a somatória de registros que atendam a condição da pesquisa. Programe-o com a seguinte instrução SQL: Pág: 27 Introdução ao VB NET 2008 8/fev/2010 Rotina de Movimentação 1) Como alimentar combobox com campo da tabela: Pág: 28 Introdução ao VB NET 2008 8/fev/2010 2) Como alimentar listbox com campo da tabela: Idem ao combobox, com as mesmas propriedades, exceto linha: lbl_disciplina.Text = cmb_disciplina.SelectedValue 3) Como alimentar um grid com tabelas relacionadas (Inner Join): Basta atribuir a variável “strsql” uma instrução com “Inner Join”, os demais comandos são os mesmos utilizados para alimentar a datagrid com uma tabela. Dica: Pode usar a “string SQL” da consulta do Access. 4) Botão Registrar: Utilizar a rotina para inserção de dados (na tabela Registro_Menção). Rotina de Impressão 1) Inserir os seguintes componentes do “Grupo Printing” :: - Print Dialog (abre cx de seleção da impressora) - Print Document (envia efetivamente as informações a serem impressas) - PrintPreviewDialog (abre tela para visualizar o documento a ser impresso) Pág: 29 Introdução ao VB NET 2008 8/fev/2010 2) “Setar” a propriedade “Document” dos “Print Dialog” e “PrintPreviewDialog” para “Printdocument” (pois é ele que possui o código para imprimir). 3) - Duplo clique no obj Print Document: Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim objimpressao As Graphics = e.Graphics ' imagem e.Graphics.DrawImage(Image.FromFile("logo_ete.JPG"), 50, 25) ' texto = objimpressao.DrawString(string,fonte,cor,coluna,linha) objimpressao.DrawString("FICHA INDIVIDUAL DE DISCIPLINA", New System.Drawing.Font("Times new roman", 14, FontStyle.Bold), Brushes.Black, 200, 50) ' linha – cor, espessura, posição x – ponto inicial(coluna e linha), posição y – ponto final (coluna e linha) e.Graphics.DrawLine(New Pen(Color.DarkBlue, 2.0), 50, 75, 800, 75) ' código da disciplina objimpressao.DrawString("Código: " + bs_disciplinas.Current("Cod_disciplina").ToString, New System.Drawing.Font("Arial", 10, FontStyle.Bold), Brushes.Black, 50, 120) ' sigla da disciplina objimpressao.DrawString("Sigla: " + bs_disciplinas.Current("Sigla"), New System.Drawing.Font("Arial", 10, FontStyle.Bold), Brushes.Black, 50, 140) ' descrição da disciplina objimpressao.DrawString("Descrição : " + bs_disciplinas.Current("descrição"), New System.Drawing.Font("Arial", 10, FontStyle.Bold), Brushes.Black, 50, 160) e.Graphics.DrawLine(New Pen(Color.DarkBlue, 2.0), 50, 1100, 800, 1100) End Sub Private Sub btn_visualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_visualizar.Click With PrintPreviewDialog1 .Text = " Visualizando a impressão" ' título da janela .WindowState = FormWindowState.Maximized ' status da janela do preview .PrintPreviewControl.Columns = 2 'quantas páginas serão mostradas na tela .PrintPreviewControl.Zoom = 0.6 ' zoom inicial do preview .ShowDialog() ' mostrar janela preview End With End Sub Pág: 30 Introdução ao VB NET 2008 8/fev/2010 Private Sub btn_imprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_imprimir.Click If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then PrintDocument1.Print() End If End Sub Relatório geral – via programação Inserir componentes:: - Grupo Printing - Print Dialog (abre cx de seleção da impressora - propriedade document = o name do PrintDocument) - Print Document (envia efetivamente as informações a serem impressas) - PrintPreviewDialog (abre cx de visualização da impressão - propriedade document = o name do PrintDocument) Pág: 31 Introdução ao VB NET 2008 8/fev/2010 Public Class frm_Relat_Um Private pag As Integer = 1 ' variável para controlar o salto de página Private registro As Integer = 0 ' variável contadora de registros impressos Dim fim, linha As Integer ' variáveis para controlar linhas por página e fim do rel Private Sub PrintDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDoc.PrintPage Dim objimpressao As Graphics = e.Graphics ' ativa a classe gráfica '******************************** 'imprime o cabeçalho do relatório '******************************** e.Graphics.DrawImage(Image.FromFile("logo_ete.JPG"), 50, 25) objimpressao.DrawString("CLÍNICA DR. ALBERTO SÉRGIO FREDERICO", New System.Drawing.Font("Times new roman", 14, FontStyle.Bold), Brushes.Black, 250, 50) ' coluna inicial, linha inicial, coluna final, linha final e.Graphics.DrawLine(New Pen(Color.DarkBlue, 2.0), 50, 75, 800, 75) ' cabeçalho de colunas objimpressao.DrawString("Cód.", New System.Drawing.Font("Arial", 10, FontStyle.Underline), Brushes.Blue, 50, 100) objimpressao.DrawString("Nome do Paciente", New System.Drawing.Font("Arial", 10, FontStyle.Underline), Brushes.Blue, 100, 100) objimpressao.DrawString("Numero do RG", New System.Drawing.Font("Arial", 10, FontStyle.Underline), Brushes.Blue, 300, 100) linha = 130 ' alimentando variável que controlará a linha ser impressa '******************************** 'impressãodos registros '******************************** ' criando as linhas de impressão de acordo com a quantidade de registros While linha < 1075 And registro <> fim ' imprimindo o registro, campo a campo objimpressao.DrawString(Me.CadastroPacientesBindingSource.Current("CodigoPacient e"), New System.Drawing.Font("Arial", 10, FontStyle.Bold), Brushes.Black, 50, linha) objimpressao.DrawString(Me.CadastroPacientesBindingSource.Current("NomePaciente "), New System.Drawing.Font("Arial", 10, FontStyle.Bold), Brushes.Black, 100, linha) objimpressao.DrawString(Me.CadastroPacientesBindingSource.Current("Numero_RG" ), New System.Drawing.Font("Arial", 10, FontStyle.Bold), Brushes.Black, 300, linha) ' movendo para o próximo registro Me.CadastroPacientesBindingSource.MoveNext() ' incrementando a variável contadora de registros registro += 1 ' incrementando a variável para pular linha linha += 20 End While Pág: 32 Introdução ao VB NET 2008 8/fev/2010 '***************************** 'imprime o rodapé do relatório '***************************** objimpressao.DrawString("Total de Registros: " + registro.ToString, New System.Drawing.Font("Arial", 9, FontStyle.Bold), Brushes.Blue, 550, 1100) e.Graphics.DrawLine(New Pen(Color.DarkBlue, 1.5), 50, 1115, 800, 1115) objimpressao.DrawString("Data: " + System.DateTime.Now.ToString(), New System.Drawing.Font("Arial", 9, FontStyle.Bold), Brushes.Blue, 50, 1120) objimpressao.DrawString("Pág: " + pag.ToString, New System.Drawing.Font("Arial", 9, FontStyle.Bold), Brushes.Blue, 550, 1120) ' reajustando contadores de pag pag += 1 ' trocando de página If (pag > 1) And registro < fim Then e.HasMorePages = True Else e.HasMorePages = False End If ' Qdo este evento acaba, ele começa novamente, até quando as condições foram satisfatórias para ele continuar a impressão End Sub Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprimir.Click If PrintDlg.ShowDialog = Windows.Forms.DialogResult.OK Then PrintDoc.DocumentName = "Ficha de Cadastro de Paciente" PrintDoc.Print() End If End Sub Private Sub btnVisualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVisualizar.Click fim = (Me.CadastroPacientesBindingSource.Count) With PrintPreviewDlg .Document = Me.PrintDoc ' nome do objeto print document .Text = " Visualizando a impressão" ' título da janela .WindowState = FormWindowState.Maximized ' status da janela do preview .PrintPreviewControl.Columns = 2 'quantas pág serão mostradas na tela .PrintPreviewControl.Zoom = 0.6 ' zoom inicial do preview .ShowDialog() ' mostrar janela preview End With End Sub **************************************************** Desafio: 1) Na segunda execução, não aparecem registros. 2) Na segunda execução , reiniciar número de página. Pág: 33 Introdução ao VB NET 2008 8/fev/2010 Opção Relatórios (no menu principal): 1) Sub opção: Relatório Cadastral: a) Disciplinas ( modo retrato) b) Alunos ( modo paisagem ) PROPRIEDADES DO OBJETO DATAGRIDVIEW: PROPRIEDADE DESCRIÇÃO Definir um nome para a Grid ser tratada no fonte e reconhecida no projeto Retira a última linha de edição (em branco – vazia) da grid Não permite deletar a linha selecionada Deixa zebrada a grid (1 linha com uma cor e outra linha com outra cor) NAME AlowUserToAddRows (False) AlowUserToDeleteRows (False) AlternatingRowsDefaultCellStyle (....) - Appearence - BackColor BackGroundColor CollumnHeaderBorderStyle CollumnHeaderDefaultCellStyle (....) Ver Figura 01 DefaultCellStyle (....) Ver Figura 02 EnableHeadersVisualStyle (false) GridColor ReadOnly (true) RowDefaulCellStyle RowHeaderDefaultCellStyle (....) Ver Figura 03 RowTemplante (+) - DefaultCellStyle (....) Ver Figura 04 Altera a cor de fundo = single, deixa as linhas internas de acordo com a borda, desativando o efeito 3d Altera a fonte, alinhamento, cor da fonte, do fundo do cabeçalho de colunas Altera a fonte, alinhamento, cor da fonte, do fundo do corpo da grid Habilita alterações no cabeçalho de coluna Cor da grade Não permite alteração na grid, mas permite exclusão Altera a cor da outra linha que não ficou zebrada Altera a borda lateral de acordo com o estilo selecionado Altera a cor interna (linhas) da grid, sobrepondo o zebrado. Para alterar a cor, somente apagar o nome dela. Pág: 34 Introdução ao VB NET 2008 8/fev/2010 Figura 01 Figura 02 Pág: 35 Introdução ao VB NET 2008 8/fev/2010 Figura 03 Figura 04 Pág: 36 Introdução ao VB NET 2008 8/fev/2010 PROPRIEDADES DO OBJETO DATAGRIDVIEW VIA CÓDIFICAÇÃO: 'cor no fundo DataGridView1.BackgroundColor = Color.Fuchsia ' *** tamanho da coluna de acordo com o tamanho do maior conteúdo desta coluna (leva o cabec em consideração) DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells ' *** tamanho da coluna de acordo com o tamanho do maior conteúdo desta coluna (não leva o cabec em consideraçao) DataGridView1.AutoSizeColumnsMode =DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader '**** incluir tooltiptext no cabeçalho da coluna DataGridView1.Columns(0).HeaderCell.ToolTipText = "O Código da disciplina respectiva" DataGridView1.Columns(1).HeaderCell.ToolTipText = "O nome da disciplina respectiva" DataGridView1.Columns(2).HeaderCell.ToolTipText = "A sigla da respectiva disciplina" '*** alterar texto do cabeçalho DataGridView1.Columns(0).HeaderCell.Value = "Cód" DataGridView1.Columns(1).HeaderCell.Value = "Disciplina" DataGridView1.Columns(2).HeaderCell.Value = "Sigla" Pág: 37