Mini curso de Visual Basic .NET Índice

Transcrição

Mini curso de Visual Basic .NET Índice
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Mini curso de Visual Basic .NET
Índice
Introdução...................................................................................................................................... 2
Exercício 1 ................................................................................................................................. 2
Exercício 2 ................................................................................................................................. 3
Exercício 3 ................................................................................................................................. 4
Exercício 4 ................................................................................................................................. 4
ToolTip........................................................................................................................................... 6
Menus ............................................................................................................................................ 7
Teclas de atalho ............................................................................................................................ 8
Try … Catch .................................................................................................................................. 9
Janelas Modal ............................................................................................................................. 11
Aplicações MDI............................................................................................................................ 12
Caixas de diálogo ........................................................................................................................ 13
Barra de estado ........................................................................................................................... 16
Timer ........................................................................................................................................... 17
Ícone na área de notificação ....................................................................................................... 18
Menus de contexto ...................................................................................................................... 19
Acesso a dados ........................................................................................................................... 20
ADO.NET ................................................................................................................................. 20
Consulta de um registo ............................................................................................................ 22
Commands............................................................................................................................... 23
Publicar uma aplicação ............................................................................................................... 25
Inserir pastas e ficheiros .......................................................................................................... 25
Debug ...................................................................................................................................... 26
Fazer o publish ........................................................................................................................ 27
Instalação................................................................................................................................. 30
1 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Introdução
Este pequeno manual resulta de uma acção de formação, onde os formandos já tinham noções
de programação, pelo que não demonstra os primeiros passos na programação e na linguagem
VB.NET.
Foram utilizados alguns exercícios como introdução à sintaxe e ao IDE (integrated
development environment – ambiente integrado de desenvolvimento) usado, o VB.NET 2008
Express fornecido gratuitamente pela Microsoft.
Com o lançamento de novas versões do IDE da Microsoft, poderá ser necessário alguma
adaptação destas matérias, sendo esta tipicamente simples.
Exercício 1
Criar uma aplicação de nome botoes.exe, com as seguintes características:
1. Tem quatro botões, um em cada canto do form;
2. O form tem um ícone diferente do default;
3. Ao clicar em cada botão, abre uma msgbox;
4. Cada msgbox tem um ícone e botões diferentes;
5. Ao redimensionar o form, os botões mantêm-se nos cantos.
Solução do exercício:
Public Class Form1
2 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
MsgBox("Mensagem 1", MsgBoxStyle.Critical +
MsgBoxStyle.OkOnly, "MSG 1")
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button3.Click
MsgBox("Mensagem 2", MsgBoxStyle.Information +
MsgBoxStyle.RetryCancel, "MSG 2")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button2.Click
MsgBox("Mensagem 3", MsgBoxStyle.Question +
MsgBoxStyle.YesNoCancel, "MSG 3")
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button4.Click
MsgBox("Mensagem 4", MsgBoxStyle.Exclamation +
MsgBoxStyle.AbortRetryIgnore, "MSG 4")
End Sub
End Class
Exercício 2
Criar uma aplicação de nome impossivel.exe, com as seguintes características:
1. Tem dois botões, um de cada lado do form;
2. Apenas um botão está visível;
3. Ao passar por cima do botão, o mesmo botão desaparece e aparece o outro botão.
Solução do exercício:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Button1.Show()
Button2.Hide()
End Sub
3 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Private Sub Button1_MouseHover(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.MouseHover
Button1.Hide()
Button2.Show()
End Sub
Private Sub Button2_MouseHover(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button2.MouseHover
Button1.Show()
Button2.Hide()
End Sub
End Class
Exercício 3
Criar uma aplicação de nome lista.exe, com as seguintes características:
1. Tem uma caixa de texto, dois botões e uma listbox;
2. O primeiro botão adiciona à lista, o texto da caixa de texto;
3. Ao adicionar um elemento, a caixa de texto fica vazia;
4. O segundo botão elimina da lista o elemento seleccionado.
Solução do exercício:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
ListBox1.Items.Insert(0, TextBox1.Text)
TextBox1.Text = String.Empty
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button2.Click
ListBox1.Items.Remove(ListBox1.SelectedItem)
End Sub
End Class
Exercício 4
Criar uma aplicação de nome tabuada.exe, com as seguintes características:
1. Tem uma caixa de texto e um botão;
4 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
2. Ao clicar no botão, abre um msgbox com a tabuada.
Solução do exercício:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Dim str As String = String.Empty
For i As Integer = 1 To 10
str = str & i & " x " & TextBox1.Text & " = " & (i *
TextBox1.Text) & Chr(13)
Next
MsgBox(str, MsgBoxStyle.Information, "Tabuada")
End Sub
End Class
5 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
ToolTip
O toolTip é a pequena caixa, normalmente de fundo amarela, que surge junto ao cursor do rato
quanto este se encontra sobre um objecto, e contém algum texto, tipicamente uma ajuda ou
informação adicional sobre esse mesmo objecto.
No VB, nenhum objecto tem, à partida, uma propriedade para definir o texto do toolTip, sendo
necessário adicionar o objecto ToolTip a cada formulário onde é pretendido definir toolTips.
Ao adicionar o objecto ToolTip, este não surge no form, mas sim numa região fora deste, em
baixo no IDE. Isto porque o objecto não está sempre presente no form – apenas surge se for
configurado nos objectos do form.
A nova propriedade que surge nos objectos do form tem o nome ToolTip on ToolTip1.
Significa que se houver mais objectos ToolTip no form, surgem novas propriedades nos
objectos, sendo possível p.ex. usar formatos diferentes de ToolTip em objectos diferentes.
A configuração do ToolTip, como as cores ou um ícone, é feita nas propriedades do próprio
objecto ToolTip.
6 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Menus
Os menus típicos de uma aplicação, que surgem no topo a seguir à barra de título,
disponibilização o acesso às diversas opções da aplicação.
No VB, o menu é gerado pelo objecto MenuStrip. Este objecto é adicionado à região em baixo
no IDE, e é criado uma barra no topo do form – é nessa barra que se define o menu.
A definição do menu é muito intuitiva, bastando clicar e escrever o nome de cada opção de
menu. Além do objecto, também cada opção de menu criada tem as suas próprias
propriedades.
Podem definir os menus (1º nível) e as várias opções nos níveis inferiores (2º nível, 3º nível,
etc).
Para programar cada opção do menu, basta fazer duplo clique sobre a opção – para o evento
Click, ou seleccionar a opção e escolher, nos eventos, o evento pretendido. Em tudo
semelhante p.ex. a um botão.
7 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Teclas de atalho
As teclas de atalho servem para aceder a um objecto de uma maneira rápida – uma
combinação de teclas em substituição do clique do rato. Essa combinação de teclas é a tecla
ALT e mais uma letra (número ou símbolo).
Para definir qual a tecla de atalho, na propriedade Text, coloca-se o símbolo & (“e” comercial)
à esquerda da letra / número que se pretende usar como atalho.
Ao clicar na tecla ALT, os caracteres definidos como atalhos surgem sublinhados – aplicável
p.ex. ao menu a um botão.
No caso de haver um atalho num label, e de haver uma textBox (ou outro elemento que pode
ter focus – ficar activo – como uma checkBox ou uma comboBox), o atalho coloca o focus no
elemento que tiver a propriedade TabIndex (índice do TAB) imediatamente seguinte à do label.
8 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Try … Catch
O Try Catch é usado para executar um bloco de código VB, e em caso de erro, previne a
aplicação de terminar abruptamente.
Erro quanto executado em debug:
Erro quando executado a partir do executável:
9 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
O bloco Try contém o código a executar. Caso ocorra um erro (designada por excepção) nesse
bloco a execução passa de imediato para o bloco Catch onde o erro é tratado.
Pode-se mostrar uma mensagem mais amigável ao utilizador (em vez de um erro) ou enviar
um email ao responsável da informática com o erro que ocorreu.
Por fim, e opcionalmente, pode existir um bloco Finally, cujo código executa quer tenha havido
ou não um erro no bloco Try – para libertar os recursos usados, como um ficheiro aberto ou
uma ligaçãoa uma base de dados.
Dim n As Integer
Try
n = 1 + TextBox1.Text
Catch ex As Exception
MsgBox("Erro: " & ex.Message)
Finally
'código que executa sempre
End Try
No bloco Catch, a variável do tipo Exception permite o acesso ao detalhe do erro.
Enquanto que ex.Message contém uma mensagem indicativa do erro, já ex.ToString()
contém toda a informação do erro (como o erro ou a linha em que ocorreu).
10 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Janelas Modal
Uma janela (form), quando é aberta a partir de outra, pode ser aberta de dois modos - Modal
ou não Modal.
Quando uma janela é Modal, não é permitido clicar noutra janelas da aplicação, enquanto a
própria janela (Modal) não for fechada. Ou seja, uma janela Modal fica sempre activa enquanto
não for fechada.
Já no caso de uma janela não Modal, é possível clicar noutra janela, passando esta a estar
activa, deixando de estar activa a janela anterior – ou seja há liberdade de ver livremente as
janelas (só uma de uma de cada vez é que pode estar activa).
' abrir um form modal
Form1.ShowDialog()
' abrir um form não modal
Form1.Show()
11 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Aplicações MDI
Uma aplicação pode usar um ou mais forms, sendo que quando estes são independentes,
chama-se SMI – Single Document Interface. É o modo predefinido no VB.
Quando uma aplicação usa vários forms, e onde existe a relação de “form pai – form filho”,
chama-se MDI – Multiple Document Interface.
Os forms “pai” podem albergar forms “filho”. Para tal, o form “pai” deve ter na propriedade
IsMdiContainer o valor true.
Form1 sem ser MDI container:
Form1 MDI container:
No form “pai”, deve-se definir que esse form é o “pai” dos outros forms.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Form2.MdiParent = Me
End Sub
Ao fazer show() do form2, este surge dentro do form ”pai”.
12 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Caixas de diálogo
As caixas de diálogo servem para pedir ao utilizador determinada informação. O VB
disponibiliza algumas caixas de diálogo, como p.ex. para selecção de uma cor, para selecção
de fonte e tamanho, para escolher um ficheiro a abrir, ou para escolher o nome do ficheiro a
guardar.
Todos os dialogs são janelas “modais”.
Para escolher uma cor, e após adicionar ao form o objecto ColorDialog (que surge em baixo
no IDE):
ColorDialog1.ShowDialog()
Surge então:
Para aplicar a cor escolhida no dialog à cor do texto de um label:
Label1.ForeColor = ColorDialog1.Color
13 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Para escolher uma fonte (e tamanho do texto), e após adicionar ao form o objecto FontDialog
(que surge em baixo no IDE):
FontDialog1.ShowDialog()
Surge então:
Para aplicar a fonte e tamanho escolhidos no dialog ao texto de um label:
Label1.Font = FontDialog1.Font
Para escolher o ficheiro a ler, e após adicionar ao form o objecto OpenFileDialog (que surge
em baixo no IDE):
OpenFileDialog1.ShowDialog()
Surge então:
Para mostrar o nome do ficheiro escolhido no dialog no texto de um label:
Label1.Text = OpenFileDialog1.SafeFileName
14 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Para escolher o nome do ficheiro a gravar, e após adicionar ao form o objecto SaveFileDialog
(que surge em baixo no IDE):
SaveFileDialog1.ShowDialog()
Surge então:
Para mostrar o nome e caminho do ficheiro guardado (escolhido no dialog) no texto de um
label:
Label1.Text = SaveFileDialog1.FileName
15 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Barra de estado
A maioria das aplicações Windows tem, no fundo da janela, uma barra – barra de estado.
Nessa barra de estado, surgem diversos tipos de informação.
Após adicionar a um form o objecto StatusStrip, surge no form uma barra:
Nesta barra de estado (status bar), é possível adicionar objectos de quatro tipos:
16 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Timer
O objecto Timer serve para executar um bloco de VB a cada X tempo. Este tempo é definido
em milissegundos.
Há duas propriedades importantes – Enabled, que activa ou não o Timer (por omissão está
False), e o Interval, onde se define o número de milissegundos.
O local onde se define o que é para fazer (X em X milissegundos) é no evento Tick, o único
evento do objecto Timer.
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
Label1.Text = Now
End Sub
No label surge então a data / hora (resultado do Now), que é actualizada a cada 1000
milissegundos (valor da propriedade Interval).
Não esquecer de colocar True na propriedade Enabled.
17 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Ícone na área de notificação
Algumas aplicações usam um ícone na área de notificação – onde se encontra o relógio, e que
pertence à barra de tarefas.
Para que uma aplicação VB tenha também ela um ícone junto ao relógio, basta usar o objecto
NotifyIcon.
Para que surja na área de notificação, é necessário definir o ícone (que por omissão não vem
definido) – propriedade Icon.
Ao executar a aplicação, o ícone surge na área de notificação.
18 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Menus de contexto
Os menus de contexto (context menus) são os menus que surgem quando se clica com o
botão direito sobre um objecto. Tipicamente este menu é adequado ao objecto, ou seja, tem
opções específicas de acordo com o objecto clicado.
O objecto é o ContextMenuStrip, e podem ser usados diversos ContextMenuStrip, para
definir menus diferentes que depois são associados aos respectivos objectos.
A definição do menu é em tudo igual ao objecto MenuStrip – define-se o texto, e clica-se para
definir o evento Click.
Private Sub FecharToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
FecharToolStripMenuItem.Click
Application.Exit()
End Sub
Para usar um menu de contexto, basta associá-lo na propriedade ContextMenuStrip p.ex. de
um botão ou de um NotifyIcon.
Ao clicar com o botão direito no ícone da aplicação, surge então o menu de contexto.
19 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Acesso a dados
O VB.NET (e as restantes linguagens de programação .NET) permite ligar a uma grande
variedade de bases de dados.
O .NET traz um novo modo como é feita a ligação e manipulação de dados, permitindo também
essa manipulação do modo mais clássico.
ADO.NET
O ADO.NET (versão .NET do antigo ActiveX Data Objects) permite lidar com os dados de uma
base de dados de diversas formas, desde a modo como se liga à base de dados até ao modo
como trata os dados.
Para ligar a uma base de dados é usado um .NET Data Provider. É ele que permite usar
determinado tipo de base de dados.
Exemplo:
• OLE DB .NET Data Provider
o Liga a qualquer fonte de dados (que suporte OLE)
o Necessita de identificar o provider (“tipo” de origem de dados)
o Definido no namespace de nome System.Data.OleDB
• SQL Server .NET Data Provider
o Liga somente ao SQL Server (optimizado para este)
o Definido no namespace de nome System.Data.SqlClient
Existem outros providers, que não fazem parte da .NET Framework (necessitam de ser
instalados à parte) destinados a uma melhor optimização (para Oracle ou MySQL p.ex.).
O ADO.NET tem a seguinte arquitectura.
Resumindo, e após a ligação (connection) à base de dados é possível:
1. Ler / escrever dados através de um comando (e usar um DataReader para ler dados
p.ex.),
2. Usar um DataAdapter na ligação, ficando os dados num DataSet.
Os dados, dentro do DataSet (e transparente para o utilizador) são manipulados via XML.
20 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Exemplos de algumas classes:
• Connection
o Estabelece a ligação a uma origem de dados.
• Command
o Executa comandos sobre a base de dados.
• DataReader
o Usado com o objecto Command disponibiliza acesso read-only, forward-only a
um conjunto de registos obtidos a partir de uma base de dados – executa sem
o uso de um DataSet, para disponibilização imediata de dados.
• DataAdapter
o Interface entre o DataSet e a base de dados
Exemplo de algumas classes:
• DataTable
o Referencia uma tabela no DataSet.
• DataRow
o Referencia registos (linhas) de um DataTable.
• DataColumn
o Referencia um campo (coluna) de um DataTable.
• ConstrainCollection
o Permite Impor restrições sobre os dados de um DataTable.
• DataRelation
o Relaciona dois objectos DataTable através do objecto DataColumn.
21 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Consulta de um registo
Exemplo com um command
' connection - ligação à base de dades
Dim conn As New OleDbConnection
' definir a ligação à DB
conn.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\amigos.mdb"
' abrir a ligação
conn.Open()
' comando SQL
Dim sql As String
' definir o SQL e configura o command
sql = "SELECT id,nome,telefone FROM amigos WHERE ID=" & id.Text
Dim cmd As New OleDbCommand(sql, conn)
' definir um datareader, que vai receber o resultado da query
Dim dr As OleDbDataReader
' executa o comando - o resultado fica no datareader
dr = cmd.ExecuteReader
' ler os dados do datareader
dr.Read()
' coloca nos textboxes cada campo do datareader (1º row)
TextBox1.Text = dr.Item("id")
TextBox2.Text = dr.Item("nome")
TextBox3.Text = dr.Item("telefone")
' fecha a ligação à DB
conn.Close()
Exemplo com um DataSet
' connection - ligação à base de dades
Dim conn As New OleDbConnection
' definir a ligação à DB
conn.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\amigos.mdb"
' abrir a ligação
conn.Open()
' comando SQL
Dim sql As String
' definir o SQL e executa-o atraves do dataadapter
sql = "SELECT id,nome,telefone FROM amigos WHERE ID=" & id.Text
Dim da = New OleDbDataAdapter(sql, conn)
' dataset - conjunto de tabelas (datatables) mas em memória
Dim ds As New DataSet
' cria uma datatable (friends) dentro do dataset e preenche-a com o
resultado do da
da.Fill(ds, "friends")
' coloca nos textboxes cada campo, do row (registo) 0 (é o 1º) da
datatable friends
TextBox1.Text = ds.Tables("friends").Rows(0).Item("id")
TextBox2.Text = ds.Tables("friends").Rows(0).Item("nome")
TextBox3.Text = ds.Tables("friends").Rows(0).Item("telefone")
' fecha a ligação à DB
conn.Close()
' limpar o dataset
ds.Clear()
22 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Commands
Dando seguimento ao descrito no livro da FCA fornecido, o uso de commands (em vez de
DataSet) mostra-se mais simples em virtude de o conceito do DataSet, DataTable e demais
classes representar um maior esforço de aprendizagem (mas também uma maior flexibilidade).
Para a execução de um comando que não tem retorno de registos (INSERT, UPDATE e
DELETE), o código a usar é:
Dim conn As New OleDbConnection
conn.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\amigos.mdb"
conn.Open()
Dim sql As String
sql = "INSERT ... ou UPDATE ... ou DELETE ..."
Dim cmd As New OleDbCommand(sql, conn)
cmd.ExecuteNonQuery()
conn.Close()
O método ExecuteNonQuery() executa a query, e tem como retorno não registos (dados)
mas o número de registos que foram “mexidos” pela queryl (número de apagados ou
actualizados p.ex.).
...
sql = "UPDATE amigos set nome='nome' WHERE telefone='123'"
Dim cmd As New OleDbCommand(sql, conn)
Dim n As Integer
n = cmd.ExecuteNonQuery()
MsgBox("Número de registos: " & n, MsgBoxStyle.Information)
conn.Close()
...
Assim, e supondo que o resultado da query seria 2 registos (havia dois registos com o telefone
123), o resultado seria:
23 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
No campo da leitura de dados de uma base de dados, há dois métodos.
O ExecuteScalar devolve o primeiro campo do primeiro registo – ou seja devolver apenas
um valor (o primeiro).
Útil quando apenas se procura uma coluna de um registo.
...
sql = "SELECT nome FROM amigos WHERE id=" & id.Text
Dim cmd As New OleDbCommand(sql, conn)
Dim str As String
str = cmd.ExecuteScalar
MsgBox("Primeiro campo: " & str, MsgBoxStyle.Information)
conn.Close()
...
Para a leitura de vários registos e colunas, o método a usar é o ExecuteReader. Neste caso,
é necessário percorrer todos os registos que fazem parte do retorno da query.
...
sql = "SELECT nome FROM amigos WHERE id >= " & id.Text
Dim cmd As New OleDbCommand(sql, conn)
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader
While dr.Read()
MsgBox("Nome: " & dr.Item("nome"), MsgBoxStyle.Information)
End While
conn.Close()
...
Para ler os registos e adicionar a uma listbox.
...
sql = "SELECT id, nome FROM amigos" & id.Text
Dim cmd As New OleDbCommand(sql, conn)
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader
While dr.Read()
ListBox1.Items.Add(dr.Item("nome"))
End While
conn.Close()
...
24 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Publicar uma aplicação
O VB.NET 2008 Express permite publicar uma aplicação, para que esta possa ser instalada. A
publicação pode ser para um servidor Web (para ser instalada online via browser) ou para o
disco para ser instalada offline, p.ex. a partir de um CD.
Inserir pastas e ficheiros
Antes de publicar, há que garantir que os ficheiros necessários à aplicação estejam dentro do
projecto.
Para criar pastas:
• Botão direito sobre o projecto, escolher Add – New Folder e depois definir o nome:
Para adicionar ficheiro:
• Arrastar e largar dentro do projecto:
25 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
•
Botão direito sobre o projecto, escolher Add – Existing Item… e depois seleccionar os
itens a adicionar:
Debug
Ao fazer debug da aplicação, ainda no VB.NET, é criado um ficheiro executável, dentro de
\Bin\Debug, dentro do projecto.
No entanto, nem todas as pastas e ficheiros são colocados na pasta Debug, pelo que alguma
funcionalidade que dependesse destes não correria normalmente.
Assim, é normal ter que recorre a directivas de compilação.
Estas directivas de compilação indicam que pode haver código que apenas compila p.ex. em
modo debug.
As directivas de compilação são identificados pelo # (cardinal) no If Then Else e pela
constante DEBUG (no exemplo – há mais)
Imports System.Data.OleDb
Public Class Form1
#If DEBUG Then
' é compilado se estiver em debug
Public dbConn As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\cinema_v2.mdb"
Public pathImagens As String = "D:\imagens\"
#Else
' é compilado caso não esteja em debug
Public dbConn As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data
Source=" & Application.StartupPath & "\dados\cinema_v2.mdb"
Public pathImagens As String = Application.StartupPath &
"\imagens\"
#End If
...
26 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
No exemplo, em debug são usados caminhos absolutos para as pastas do projecto – deste
modo, apenas funcionam num máquina que tenha as mesmas pastas / ficheiros e na mesma
localização.
Caso não seja debug (p.ex. numa publicação) os caminhos são dependentes do local onde se
instalou a aplicação, sendo acedido através de Application.StartupPath – devolve a
pasta a partir da qual a aplicação iniciou (e foi instalada).
É necessário garantir que todos os ficheiros fiquem então na pasta onde foi instalada a
aplicação.
Fazer o publish
Antes de fazer o publish, são necessárias algumas configurações.
Indo ao menu Project - <nome_do_projecto> Properties… surge a janela.
As opções de menu Application e Publish são tipicamente as que carecem de alguma
atenção e configuração.
27 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
Em Application pode-se configurar:
• Assembly name: é o nome da aplicação, que surge no menu do Windows;
• Icon: é o ícone, que surge no menu do Windows;
• Startup form: o primeiro form a executar, caso a aplicação tenha mais do que um form;
• Assembly Information…: informação que surge quando se verifica as propriedades do
ficheiro;
• Splash screen: caso se pretenda ter uma janela de apresentação enquanto a aplicação
inicia.
Em Publish pode-se configurar:
• Publish Folder Location: destino onde vão ser criados os ficheiros de instalação;
• Application Files…: onde se define que ficheiros são incluídos na instalação e como;
• Prerequisites…: onde se define os componentes adicionais necessário a incluir e como;
• Publish Version: a numeração da versão, que pode ou não ser automática;
• Publish Now: botão para publicar – criar ficheiros de instalação.
28 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
No Application Files, surgem os ficheiros da aplicação, incluindo as pastas e ficheiros incluídos
no projecto.
Por omissão, o VB.NET detecta (automaticamente) que há uma base de dados – coluna
Publish Status, com o valor Data File (Auto).
Para garantir que todos os ficheiros ficam na mesma pasta (para serem depois acedidos pelo
mesmo método Application.StartupPath, deve-se alterar para Include (Auto).
29 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
No Prerequisites, surge a possibilidade de incluir, no mesmo processo de instalação, alguns
componentes, que podem ser necessário à execução da aplicação – p.ex. a .NET Framework.
É possível identificar se os componentes são instalados a partir da Web (tornando a instalação
mais pequena, mas requerendo acesso à Web), ou a partir da mesma pasta onde está a
aplicação a instalar (tornando o pacote de instalação mais pesado, mas podendo ser instalado
offline).
Instalação
Os ficheiros de instalação gerados, são entre outros, constituído por um ficheiro setup.exe (o
que deve ser executado), e uma pasta com as várias versões que vão sendo publicadas.
A versão a instalar é mais recente.
Após a instalação, a aplicação fica disponível.
30 / 31
Mini curso
Benjamim Cardoso
Visual Basic . NET
[email protected]
No disco, a aplicação fica instalada numa localização algo difícil de encontrar.
No Windows XP:
C:\Documents and Settings\Benjamim\Definições locais\Apps\2.0\5ZJGWB74.81G\
AJ7CX2N5.J24\pos-..tion_8ddb3fdb2c83981c_0001.0000_75271df155732cf3
No Windows 7:
C:\Users\Benjamim\AppData\Local\Apps\2.0\R5KRJ54T.R7E\
TXM136CC.KC4\pos-..tion_8ddb3fdb2c83981c_0001.0000_648a89bcda2adeb5
Para que a mesma aplicação funcione no Windows 7, esta deve ser compilada no Windows 7 –
o VB.NET 2008 Express funciona sem qualquer problema.
31 / 31

Documentos relacionados