121
 Visual Basic - Programação 1.0 Utilização de Controles Avançados Objetivo do módulo Apresentar controles de nível avançado, suas principais propriedades e eventos. Estes controles foram considerados avançados por serem controles de manipulação mais complexa que os apresentados no curso básico. Não é objetivo deste módulo abordar todos os controles do Visual Basic, suas propriedades e eventos. Ao longo do módulo, uma série de pequenos exercícios e apresentações serão feitas de modo que você se familiarize com o uso de cada controle, e perceba como as  propriedades os a fetam. Os controles apresentados serão :  Group Push Button  Command Dialog  File Browsers  Graph EDS RJ - Regional Support Center - pág: 1

Curso de Visual Basic

  • Upload
    daylans

  • View
    83

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 1/121

 

Visual Basic - Programação

1.0 Utilização de Controles Avançados

Objetivo do módulo

Apresentar controles de nível avançado, suas principais propriedades e eventos.

Estes controles foram considerados avançados por serem controles de manipulação mais

complexa que os apresentados no curso básico. Não é objetivo deste módulo abordar 

todos os controles do Visual Basic, suas propriedades e eventos.

Ao longo do módulo, uma série de pequenos exercícios e apresentações serão feitas de

modo que você se familiarize com o uso de cada controle, e perceba como as

 propriedades os afetam.

Os controles apresentados serão :

Group Push Button

Command Dialog

File Browsers

Graph

 

EDS RJ - Regional Support Center - pág: 1

Page 2: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 2/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 2

Page 3: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 3/121

 

Visual Basic - Programação

1.1 Group Push Button

Group Push Buttons trabalham como se fossem uma combinação de command buttons e

de option buttons. Trabalham como Command Buttons porque, quando

 pressionados, ações são executadas. Também trabalham como Option Buttons

 porque se você ajustar suas propriedades corretamente, eles funcionam como gruposde opções.

Propriedade Descrição

GroupAllowAllU

 p

Determina se todos os botões de um grupo lógico podem

estar não pressionados ao mesmo tempo.

GroupNumber Determina grupos lógicos dentro de um toolbar.

Outline Cria uma borda ao redor do botão.

PictureDisabled Determina a figura que o botão deverá conter quandoestiver desabilitado.

PictureDn Determina a figura que o botão deverá conter quando

estiver pressionado.

PictureDnChange Determina de que modo a figura que o botão contém

quando não está pressionado deverá ser alterada

quando ele for pressionado.

PictureUp Determina a figura que o botão deverá conter quando não

estiver pressionado.

OBS.1: Para a criação de botões exclusivos entre si, deve-se obedecer a ordem de

criação dos botões, ou seja, um grupo de botões somente será exclusivo em relação

aos outros do grupo se eles tiverem sido criados um após o outro.

OBS.2: Para a criação de um toolbar os botões devem ser criados dentro de um

3DPanel , que para se alinhar ao formulário deve ter a propriedade Align ajustada.

EDS RJ - Regional Support Center - pág: 3

Page 4: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 4/121

 

Visual Basic - Programação

1.2 Common Dialog

Esta ferramenta do Visual Basic permite que você utilize as caixas de diálogo padrão do

Windows. O tipo da caixa utilizada será definida pelo valor da propriedade action 

do controle.

Exemplo :Sub Command1_Click

CMDialog1.action = 2End Sub

Valor da Propriedade Action Tipo da caixa de diálogo

0 Não executa nenhuma ação.

1 Abrir Arquivo

2 Salvar Arquivo3 Escolher Cores

4 Escolher Fonte

5 Configurar Impressora

6 Invocar o Ajuda do Windows

EDS RJ - Regional Support Center - pág: 4

Page 5: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 5/121

 

Visual Basic - Programação

1.3 Drive List Box, Directory List Box e File List Box

Estes três controles são uma forma especial de List Boxes. Com eles, você pode criar 

telas de seleção de arquivos personalizadas. É importante visualisar a importância

destes controles juntos, pois uma mudança de conteúdo de um controle refletirá no

conteúdo dos outros.

O File List Box é uma lista que contém o nome de todos os arquivos pertencentes aodiretório atual. Além das propriedades normais de uma lista, ele apresenta uma

série de propriedades inerentes à sua função.

Propriedade Descrição

Archive Mostra todos os arquivos do tipo ARCHIVE.

FileName Retorna o nome do arquivo selecionado.

Hidden Mostra todos os arquivos do tipo HIDDEN.

 Normal Mostra todos os arquivos do tipo NORMAL.

Path Indica o caminho de procura dos arquivos. Acessível apenas em

runtime.

Pattern Indica o tipo de arquivos procurados. Acessível apenas em runtime.

ReadOnly Mostra todos os arquivos do tipo READONLY.

System Mostra todos os arquivos do tipo SYSTEM

EDS RJ - Regional Support Center - pág: 5

Page 6: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 6/121

 

Visual Basic - Programação

O Directory List Box é um tipo combo box que mostra os diretórios na unidade de

disco selecionada.

Propriedade Descrição

 Name Nome interno do controle.Path Indica o diretório selecionado. ( Acessível apenas em runtime 

).

EVENTO CHANGE

Sempre que o valor do Directory List Box é alterado, um evento change acontece. Neste

evento, você deve codificar a sincronização deste controle com o File List Box.

Exemplo :

Sub Dir1_Change ()File1.Path = Dir1.path

End Sub

O Drive List Box é um tipo combo box que mostra os drives disponíveis no sistema.

Propriedade Descrição Name Nome interno do controle.

Drive Retorna o valor do Drive selecionado. ( Acessível apenas

em runtime ).

EVENTO CHANGE

Sempre que o valor do Drive List Box é alterado, um evento change acontece. Neste

evento, você deve codificar a sincronização deste controle com o Directory ListBox.

Exemplo :

Sub Drive1_Change ()Dir1.Path = Drive1.drive

End Sub

EDS RJ - Regional Support Center - pág: 6

Page 7: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 7/121

 

Visual Basic - Programação

Exemplo - Drive List Box, Directory List Box e File List Box

Para exemplificar estes três controles, criaremos uma tela de abertura de arquivos.

1. Inicialize o Visual Basic.

Criando o Drive List Box

2. Clique duas vezes sobre a ferramenta Drive List Box da Caixa de Ferramentas.

3. Com o Drive List Box selecionado pressione F4 para ter acesso à lista de

 propriedades.

4. Nomeie este Drive List Box "DVBdrive".

Criando o Directory List Box

5. Clique duas vezes sobre a ferramenta Directory List Box da Caixa de Ferramentas.

6. Com o Directory List Box selecionado pressione F4 para ter acesso à lista de

 propriedades.

7. Nomeie este Directory List Box "DLBDirectory".

Criando o File List Box

8. Clique duas vezes sobre a ferramenta File List Box da Caixa de Ferramentas.

9. Com o File List Box selecionado pressione F4 para ter acesso à lista de

 propriedades.

10. Nomeie este File List Box "FLBFile".

EDS RJ - Regional Support Center - pág: 7

Page 8: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 8/121

 

Visual Basic - Programação

Codificando os eventos Change

11. Clique duas vezes no Drive List Box para abrir a janela de código.

12. Certifique-se que o evento selecionado é Change.

13. Escrever a seguinte linha de código :

DLBDirectory.Path = DVBDrive.Drive

14. Clique duas vezes no Directory List Box para abrir a janela de código.

15. Certifique-se que o evento selecionado é Change.

16. Escrever a seguinte linha de código :

FLBFile.Path = DLBDirectory.path

Executando a Aplicação 

17. Pressione F5 ou selecione Start do menu Run.

EDS RJ - Regional Support Center - pág: 8

Page 9: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 9/121

 

Visual Basic - Programação

1.4 Graph

O controle graph permite que você desenhe gráficos em sua aplicação, defina suas

características e dados em design time ou em run time. Comandos para a impressãode gráficos ou criação de copias para a área de transferência do Windows podem ser 

executados em run time.

O controle Graph gera randomicamente dados para que você visualize, em design time,

o gráfico que está sendo criado.

O controle Graph permite que sejam feitos gráficos dos seguintes tipos:

Pie

Bar 

Gantt

Line, Log/Lin e Polar 

Area

Scatter 

HLC (High-Low-Close)

EDS RJ - Regional Support Center - pág: 9

Page 10: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 10/121

 

Visual Basic - Programação

Propriedades:

Propriedade Descrição

GraphType Defino o tipo do gráfico.

GraphStyle Define as características do gráfico. Conforme o tipo do

gráfico os valores a serem atribuidos têm significados

diferentes.

GraphTitle Define o título do gráfico.

BottonTitle Define o texto que aparecerá abaixo do eixo X do gráfico.

DrawStyle Define se o gráfico é colorido (default) ou

monocromático.

ColorData Define a cor de cada conjunto de dados apresentado no

gráfico.

GraphData Define os dados com que o gráfico será feito.

RandomData Define se o gráfico será gerado randomicamente em

design time.

DataReset Reinicializa as propriedades já definidas para o gráfico

(as propriedades que possuem valor default são

inicializadas com este valor).

DrawMode Comanda a geração de um novo desenho do gráfico em

run time, sua impressão ou cópia.

ExtraData Define se algum segmento do gráfico tipo  Pie deve ser 

separado ou define a cor dos lados das barras do

gráfico de barras tri-dimensional.

 NumSets Define o número de conjuntos de dados que aparecerão

no gráfico.

ThisSet Permite identificar um conjunto de dados para que suas

características possam ser alteradas.

ThisPoint Permite identificar um ponto do gráfico para que suas

características sejam alteradas.

Labels Define se haverá texto para os valores dos eixos.

LabelText Define o texto referente aos valores dos eixos.

LabelEvery Define a frequência com que valores devem aparecer no

eixo X.

LegendText Define a legenda.

YAxisMax/Min Determina os valores máximo e mínimo para o eixo Y.

EDS RJ - Regional Support Center - pág: 10

Page 11: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 11/121

 

Visual Basic - Programação

Exemplo - Utilizando gráficos

 Neste exemplo você irá determinar o tipo do gráfico a partir de option buttons e seus

valores conforme uma seleção feita pelo usuário em um grid .

O gráfico será desenhado a partir de uma linha do grid e a atualização de seus valores

será comandada pelo click do botão ATUALIZA.

1. Inicialize o Visual Basic

Criando os controles 2. Crie um frame com três Option Buttons com os seguintes textos na propriedade

Caption: "Pie", "Bar", "Area" e na propriedade Name: OPTPie, OPTBar, OPTArea.

3. Crie um painel3D e neste painel crie um Grid com 2 linhas e 3 colunas, nenhuma

delas deve ser fixa (propriedades FixedCols = 0 e FixedRows = 0). Ainda no painel

3D, crie um botão com o texto "Atualiza" na propriedade Caption e na propriedade

 Name CMBAtualiza.

4. Crie um gráfico.

Codificando o formulário

5. Preencher o grid com valores aleatórios no evento formLoad :

Escreva as seguintes linhas de código:

grid1.Row = 0

grid1.Col = 0

grid1.Text = "valor1" 'valores definidos pelo participante 

grid1.Col = 1

grid1.Text = "valor2"

grid1.Col = 2

grid1.Text = "valor3"

grid1.Row = 1

grid1.Col = 0

EDS RJ - Regional Support Center - pág: 11

Page 12: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 12/121

 

Visual Basic - Programação

grid1.Text = "valor4"

grid1.Col = 1

grid1.Text = "valor5"

grid1.Col = 2

grid1.Text = "valor6"

graph1.NumSets = grid1.Cols 'determina que o número de

conjunto de dados que aparece no gráfico é igual ao número de

colunas do grid.

6. Alterar a propriedade type do gráfico conforme a opção selecionada.

Escreva as seguintes linhas de código:

Sub OPTPie_Click ()

graph1.GraphType = 2

graph1.DrawMode = 2

End Sub

Sub OPTBar_Click ()

graph1.GraphType = 4

graph1.DrawMode = 2

End Sub

Sub OPTArea_Click ()

graph1.GraphType = 8

graph1.DrawMode = 2

End Sub

7. Atualizar os dados do gráfico conforme a linha selecionada no grid.

Escreva as seguintes linhas de código no evento click do CMDAtualiza:

Dim Col_I As Integer

Dim Col_F As Integer

Dim i As Integer

Col_I% = grid1.SelStartCol

Col_F% = grid1.SelEndCol

EDS RJ - Regional Support Center - pág: 12

Page 13: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 13/121

 

Visual Basic - Programação

graph1.ThisSet = 1

graph1.ThisPoint = 1

graph1.AutoInc = 1

For i = Col_I% To Col_F%

grid1.Col = i%

graph1.GraphData = Val(grid1.Text)

Next

graph1.DrawMode = 2

EDS RJ - Regional Support Center - pág: 13

Page 14: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 14/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 14

Page 15: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 15/121

 

Visual Basic - Programação

2.0 Entrada de Dados

Objetivo

Introduzir conceitos de validação de dados, logo na entrada destes no sistema, através

de eventos que restringem valores e teclas. Além disso, apresentar funções de

tratamento de strings, que facilitam a manipulação destes dados.

EDS RJ - Regional Support Center - pág: 15

Page 16: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 16/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 16

Page 17: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 17/121

 

Visual Basic - Programação

2.1 Key Press para restringir valores

O evento KeyPress ocorre sempre que o o usuário pressionar uma tecla que faça partedo padrão ASCII. Portanto podemos utilizar este evento para restringir e

transformar as teclas digitadas pelo usuário.

Por exemplo, podemos impedir que o usuário digite qualquer coisa que não seja

números em uma caixa de texto. Verifique o código a seguir :

Sub Text1_KeyPress (KeyAscII As Integer)If KeyAscii <48 or KeyAscII > 57 then

KeyAscii = 0End If

End Sub

2.2 KeyUp e Key Down para restringir teclas

Ao contrário do KeyPress, os eventos KeyUp e KeyDown mapeiam qualquer tecla

 pressionada pelo usuário. Cada tecla é unicamente identificada por um código que

 pode ser encontrado no arquivo CONSTANT.TXT. Desta forma, pode-se mapear teclas de função (F1, F2, ...), o Delete, etc..

Os três eventos de tratamento de teclas, ocorrem na seguinte ordem :

1. KeyDown

2. KeyUp

3. KeyPress

Se o valor 0 (Null) for atribuído a KeyCode durante as event-procedures KeyDown e

KeyUp, o evento KeyPress não acontece.

EDS RJ - Regional Support Center - pág: 17

Page 18: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 18/121

 

Visual Basic - Programação

2.3 KeyPreview

KeyPreview é uma propriedade do formulário que, se tiver valor True ( o default éFalse), dará ao formulário a primazia no tratamento de teclas em relação aos

controles. Ou seja, ao pressionar qualquer tecla em um TextBox, ocorrerá no

formulário os eventos KeyPress, KeyUp e KeyDown primeiro.

2.4 Outras Funções de Tratamento de String

Além das funções de tratamneo de string já apresentadas ao longo do curso, o Visual

Basic possui outras bastante úteis. Eis mais algumas :

Função DescriçãoInStr Retorna a posição onde um conjunto de caracteres começa dentro de

uma string. Ex.: Pos = InStr ( "flor", "reflorestamento"). O

exemplo retorna valor 3.

String Repete um caracter especificado por n vezes.

Ex.: texto = string(5,"*"). O exemplo retorna "*****".

EDS RJ - Regional Support Center - pág: 18

Page 19: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 19/121

 

Visual Basic - Programação

3.0 Controles e Menus Dinâmicos

Objetivo

Apresentar controles e menus dinâmicos, que são controles/menus que são criados em

tempo de execução. Eles são, basicamente, utilizados quando necessita-se ter vários

controles de um mesmo tipo ou menus que compartilhem os mesmos

 procedimentos.

EDS RJ - Regional Support Center - pág: 19

Page 20: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 20/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 20

Page 21: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 21/121

 

Visual Basic - Programação

3.1 Criando um Control Array Dinamicamente

Control Array é um grupo de controles que compartilham o mesmo nome, tipo e procedimentos de eventos. Entretanto cada controle é fisicamente separado do outro,

e possui propriedades com valores próprios.

Cada controle possui um índice (propriedade  Index de cada controle), e é referenciado

no código da aplicação como nome_controle(índice). O índice do controle á uma de

suas propriedades, que é especificada quando você o cria.

Control arrays podem ser criados estaticamente ou dinamicamente. Quando um control

array é criado dinamicamente apenas uma instância é criada em tempo de projeto, eas outras apenas em tempo de execução, através de comandos do próprio Visual

Basic.

A criação de control arrays estaticamente foi abordada no curso básico.

Criação do control array: 

Uma vez criado o Control Array, você pode dinamicamente adicionar controles ao seu

formulário através do comando Load . O comando Load cria uma nova instância do

controle, copiando todas as propriedades do último controle criado, exceto  Index,

Visible e TabIndex.

EDS RJ - Regional Support Center - pág: 21

Page 22: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 22/121

 

Visual Basic - Programação

O controle criado, tem inicialmente a propriedade Visible com valor  False. Para torná-

lo visível, atribuir o valor True à sua propriedade Visible.

3.2 Menus Dinâmicos

Menus dinâmicos seguem a mesma filosofia de controles dinâmicos. Você cria o Menu

Array e, em tempo de execução, os ítens do menu são criados, à medida que vão se

tornando necessários.

Assim como em controles dinâmicos, devemos atribuir valores a algumas propriedades,

como enabled, visible e caption, no momento de sua criação.

Para carregar um menu, utiliza-se o comando  Load , e para descarregar o comando

Unload .

EDS RJ - Regional Support Center - pág: 22

Page 23: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 23/121

 

Visual Basic - Programação

Exemplo - Utilizando Controles e Menus Dinâmicos

Para exemplificar a utilização de menus e controles dinâmicos, criaremos uma aplicação

que crie Text Boxes, e você consiga cortar e colar textos entre eles.

1. Inicializar o Visual Basic.

2. Criar duas TextBoxes, uma ao lado da outra, na parte superior do formulário ( mas

não colado à borda superior). Atribua as seguintes propriedades, respectivamente :

Name TXBOrigem TXBBuffer 

Text "" ""

Visible True False

Index "" 0

Multiline True True

EDS RJ - Regional Support Center - pág: 23

Page 24: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 24/121

 

Visual Basic - Programação

3. Criar um menu, como aprendido anteriormente, com a seguinte estrutura :

Caption Name Index Visible Enabled

Arquivo MNUArquivo True True

-> Criar Buffer MNUCriarBuffer True True->Apagar Buffer MNUApagarBuffer True True

-> Sair MNUSair True True

Editar MNUEditar True False

-> Copiar MNUCopiar 0 True True

-> Cortar MNUCortar 0 True True

-> Colar MNUColar 0 True True

4. Criar uma variável  Integer de nível de formulário, como aprendido anteriormente,

com o nome de Índice.

5. Adicionar as seguintes linhas de código ao click de MNUCriarBuffer :

Sub MNUCriar_buffer_Click ()

If indice < 3 Then

If indice > = 1 ThenLoad TXBBuffer(indice)TXBBuffer(indice).Top = TXBBuffer(indice - 1).Top + 1500Load MNUCopiar(indice)Load MNUCortar(indice)Load MNUColar(indice)

End If

TXBBuffer(indice).Visible = True

MNUCopiar(indice).Caption = "Copiar #" + Str(indice + 1)MNUCortar(indice).Caption = "Cortar #" + Str(indice + 1)MNUColar(indice).Caption = "Colar #" + Str(indice + 1)

MNUCopiar(indice).Visible = TrueMNUCortar(indice).Visible = TrueMNUColar(indice).Visible = True

MNUEditar.Enabled = True

indice = indice + 1

End If

End Sub

EDS RJ - Regional Support Center - pág: 24

Page 25: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 25/121

 

Visual Basic - Programação

6. Adicionar as seguintes linhas de código ao click de MNUApagarBuffer :

Sub MNUApagarBuffer_Click ()

If indice > 1 ThenUnload TXBBuffer(indice - 1)

Unload MNUCopiar(indice - 1)Unload MNUCortar(indice - 1)Unload MNUColar(indice - 1)

indice = indice - 1ElseIf indice = 1 thenTXBBuffer(indice - 1).text = ""TXBBuffer(indice - 1).visible = Falseindice = indice - 1

Endif

End If

End Sub

7. Adicionar as seguintes linhas de código ao click de MNUCopiar :

Sub MNUCopiar_Click (index As Integer)

TXBBuffer(index).SelText = TXBOrigem.SelTextTXBOrigem.SelLength = 0

End Sub

8. Adicionar as seguintes linhas de código ao click de MNUCortar :

Sub MNUCortar_Click (index As Integer)

TXBBuffer(index).SelText = TXBOrigem.SelTextTXBOrigem.SelText = ""

End Sub

9. Adicionar as seguintes linhas de código ao click de MNUColar :

Sub MnuColar_Click (index As Integer)

TXBOrigem.SelText = TXBBuffer(index).TextTXBBuffer(index).Text = ""

End Sub

EDS RJ - Regional Support Center - pág: 25

Page 26: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 26/121

 

Visual Basic - Programação

Executando a Aplicação

10. Digite texto na primeira Text Box. Crie Text Boxes dinamicamente e corte e cole

textos entre elas. Quando estiver familiarizado com a aplicação, tente fazer com que

a caixa de origem seja também um Control Array.

EDS RJ - Regional Support Center - pág: 26

Page 27: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 27/121

 

Visual Basic - Programação

4.0 Multiple Document Interface (MDI)

Objetivo

Apresentar esta interface, tão comum em ambiente Windows. MDI permite que um

formulário contenha vários outros formulários dentro dele.

 

EDS RJ - Regional Support Center - pág: 27

Page 28: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 28/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 28

Page 29: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 29/121

 

Visual Basic - Programação

4.1 Aplicações MDI

O MDI ( Multiple Document Interface) permite que uma aplicação possua várias janelas

dentro de um único formulário.

Em uma aplicação MDI, existe um formulário, que pode ser denominado de  pai ou

container , que possui vários "filhos". Os controles e respectivos procedimentos, são

compartilhados entre os filhos.

Uma aplicação pode conter, no máximo, um formulário-pai, porém vários tipos de filhos

( Formulários MDI-filho diferentes ). Formulários MDI e outros formulários podemcoexistir dentro de uma mesma aplicação.

A maioria dos aplicativos do Windows têm interface MDI. Ex.: Microsoft Word,

Microsoft Excel, etc. O Visual Basic é um exemplo de aplicação não MDI.

EDS RJ - Regional Support Center - pág: 29

Page 30: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 30/121

 

Visual Basic - Programação

4.2 Criando e Fechando Formulários

Coerentemente à estrutura da linguagem Visual Basic, um formulário MDI é um objeto.

Quando um novo formulário é criado, o que acontece, na realidade, é a criação de

uma instância do objeto  formulário-filho. Assim sendo, existe apenas umformulário-filho.

Para criar uma nova instância de um formulário-filho, usa-se palavra reservada New,

no momento de da declaração da variável. Depois, basta mostrar o formulário.

Sub MNUNovoFilho_Click ( )Dim novo_filho as New nome_do_formulário

novo_filho.showEnd Sub

4.3 Palavra-Chave ME

Para ter acesso a uma instância de um formulário, usa-se a palavra reservada Me.

Veja o exemplo abaixo, que utiliza a palavra reservada Me para alterar o caption de

cada formulário-filho (considera-se que existe uma variável global que é

incrementada sempre que um novo formulário é carregado ) :

Sub Formulário_filho_Load ()contador = contador + 1Me.Caption = "Formulário Filho"+ str( contador )

End Sub

4.4 Menus em Aplicações MDI

Em aplicações MDI, se houver algum formulário MDI-filho aberto, a barra de menu

conterá o menu especificado no  formulário-filho. Caso contrário, a barra de menuconterá o menu especificado no formulário-pai.

Obs.: Verifique no Microsoft Word como o menu se altera quando todos os documentos

são fechados.

EDS RJ - Regional Support Center - pág: 30

Page 31: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 31/121

 

Visual Basic - Programação

4.5 Menu Janela

 Na maioria das aplicações MDI existe um item de menu chamado Janela. Este item demenu, além de oferecer opções de arrumação de tela, exibe uma lista de todos os

formulários abertos.

Para criar um item de menu de tipo Janela, é necessário:

1. Chamar a Menu Design Window a partir do formulário onde o menu deverá

aparecer.2. Adicionar um item de menu chamado "Janela".

3. Marcar a check-box Window List.

EDS RJ - Regional Support Center - pág: 31

Page 32: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 32/121

 

Visual Basic - Programação

O Método Arrange

O método Arrange, quando aplicado a um formulário MDI_filho, arruma as instâncias

deste relatório na tela.

Dependendo dos valores assumidos, as instâncias de formulário serão arrumados da

seguinte maneira :

Arrumação Parâmetro

Em cascata 0Em blocos horizontais 1Em blocos verticais 2

EDS RJ - Regional Support Center - pág: 32

Page 33: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 33/121

 

Visual Basic - Programação

4.6 Barras de Ferramentas em Aplicações MDI

Como vimos antes, para se criar uma barra de ferramentas, utiliza-se o  Panel3D eGroup Push Buttons.

Em aplicações MDI, a barra de ferramentas é sempre criada no formulário-pai, para que

seja comum a todas instâncias de formulário-filho. Isto apresenta dois problemas :

1. Os clicks de botões da barra de ferramentas, estando no formulário-pai, não podem

chamar procedimentos dos formulários-filhos.

2. As variáveis necessárias nos procedimentos de cada formulário-filho, também não

 podem ser enxergados pelo formulário-pai.

A solução é :

• Fazer com que todos os procedimentos que necessitem ser chamados, tanto do

formulário-pai como dos filhos, estejam codificados em um módulo (.BAS).

• Criar um vetor , em que cada item contenha o conjunto de váriaveis necessárias por instância de formulário ( Fazer um vetor de tipos, onde o tipo será o conjunto de

todas as variáveis de uma instância de formulário-filho ). A associação de cada item

deste vetor com cada instância de formulário filho deverá ser feita através da

 propriedade tag  de cada formulário-filho, que deverá ter sido "setada" quando a

instância do formulário foi criada.

EDS RJ - Regional Support Center - pág: 33

Page 34: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 34/121

 

Visual Basic - Programação

Exemplo - Criando uma Aplicação MDI simples

1. Inicialize o Visual Basic.

2. Atribua o valor True à propriedade MDIChild do Form1.

3. Crie um Command Button e uma Picture Box no formulário.

4. Adicione as seguintes linhas de código ao click do botão :

Sub Command1_ClickPicture1.picture = LoadPicture( c:\windows\leaves.bmp")

End Sub

5. Do menu File, selecione a opção New MDI Form.

6. Crie um menu no formulário-pai com a seguinte estrutura :

Caption Name Window List

&Arquivo MNUArquivo

&Novo Filho MNUNovoFilho

&Janela MNUJanela √ 

&Bloco MNUBloco

7. Adicionar as seguintes linhas de código ao click de MNUNovoFilho :

Sub MNUNovoFilho_Click()Dim filho as New Form1

Filho.showEnd Sub

8. Adicionar as seguintes linhas de código ao click de MNUBloco :

Sub MNUBlocoMDIForm1.Arrange 2

EndSub

9.  Executar a aplicação.

5.0 Impressão

Objetivo

 

EDS RJ - Regional Support Center - pág: 34

Page 35: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 35/121

 

Visual Basic - Programação

Apresentar o meio que o Visual Basic utiliza para fazer impressão em telas ou em

impressoras. A impressão no Visual Basic não será muito detalhada, pois dentre os

seu utilitários, o Visual Basic possui um gerador de relatórios, o Crystal Report.

EDS RJ - Regional Support Center - pág: 35

Page 36: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 36/121

 

Visual Basic - Programação

Esta página foi deixada intencionalmente em branco.

EDS RJ - Regional Support Center - pág: 36

Page 37: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 37/121

 

Visual Basic - Programação

5.1 O Objeto Printer 

Coerentemente ao resto de sua estrutura, para realizar impressões o Visual Basic

também utiliza o conceito de objetos. Assim sendo, da mesma forma que existe o

objeto Form, Picture, existe também um objeto Printer ao qual aplicamos métodosde impressão.

5.2 Métodos de Impressão

Print

É utilizado para imprimir conjuntos de caracteres na impressora, em um formulário ouem um Picture.

Sintaxe : objeto.Print expressão {,|;} 

, Posiciona o cursor para próxima impressão após 14 espaços.

; Posiciona o cursor para próxima impressão imediatamente após o último caracter 

impresso.

default Posiciona o cursor para próxima impressão na próxima linha.

PrintForm

Joga para impressora um bitmap do formulário corrente, ou daquele especificado pelo

objeto. A saída na impressora, designada no Control Panel do Windows, é de

formato gráfico.

Sintaxe : nome-formulário.PrintForm 

Cls

Limpa o conteúdo de um formulário ou Picture, especificado pelo objeto.

Sintaxe : Objeto.Cls

EDS RJ - Regional Support Center - pág: 37

Page 38: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 38/121

 

Visual Basic - Programação

5.3 Funções de Impressão

Spc

Pula o número de espaços especificados em uma impressão.

Sintaxe : Printer.Print "Isto é um teste da "; Spc(10); "função

Spc." 

Tab

Posiciona o cursor para próxima impressão no número da coluna especificada.

Atenção!!! O Tab não pula um número x de colunas, mas se posiciona na coluna x.

Sintaxe : Printer.Print tab(10); "10"

EDS RJ - Regional Support Center - pág: 38

Page 39: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 39/121

 

Visual Basic - Programação

6.0 Crystal Report

Objetivo

 Neste módulo será mostrada a ferramenta Crystal Report, que é o gerador de relatóriosdo Visual Basic. O produto que acompanha o Visual Basic é uma versão  standard  

do Crystal Report, há uma versão  professional  disponível no mercado, que é

comercializada pelos desenvolvedores do produto.

O Crystal Report lê qualquer base de dados que seja compatível com o padrão ODBC

Exercício Utilizando Crystal Report

O objetivo do exercício é criar um relatório de todos os funcionários por cargo que

ocupam, totalizando por cargo e empresa.

Conhecendo o Crystal Report

1. No Menu File, selecione New Report

Uma caixa de diálogo aparecerá para seleção da base de dados que contém astabelas com dados a serem utilizados nesse relatório.

2. Selecione a base de dados criada anteriormente no VisData EMPRESA.MDB

Observe a Barra de Ferramentas

 

EDS RJ - Regional Support Center - pág: 39

Novo

Abrir 

Salvar 

Cortar 

Copiar 

Colar 

Campoda Tabela

Texto

Fórmula

Somatório

Figura

Linha

Caixa

Janela

Arquivo

Impressora

Relatório Inserir Imprimir  Edição

 

Page 40: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 40/121

 

Visual Basic - Programação

O relatório apresenta cabeçalho, detalhes e rodapé. A linha de detalhes será repetida

de acordo com o número de registros enquanto o cabeçalho e o rodapé são únicos

 por relatório.

EDS RJ - Regional Support Center - pág: 40

Page 41: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 41/121

 

Visual Basic - Programação

Inserindo Campos

3. Selecione na barra de ferramentas a opção de Inserir Texto, posicione no cabeçalho

do relatório e digite: "Funcionários por Cargo".

A Janela de Campos abaixo possui as tabelas da base de dados escolhida para o

relatório.

4. Caso essa janela não esteja visível, no menu Inserir selecionar Data Base Field.

5. Selecione (duplo-clique) da Janela de Campos o campo nm_func de Funcionários e

 posicione na linha de detalhes do relatório.

6. Selecione da Barra de Ferramentas a opção Imprimir para Janela e veja como está o

relatório.

Dessa forma são listados todos os funcionários.

Criando Links

7. Para criar os links entre as tabelas Cargos e Funcionários selecione FileLinks no

menu DataBase.

8. Selecionar New...

9. Defina o link da tabela Funcionários, para Cargos como na figura abaixo.

EDS RJ - Regional Support Center - pág: 41

Page 42: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 42/121

 

Visual Basic - Programação

Existem duas colunas: a da tabela a ser ligada e a da outra tabela base para o link. A

tabela independente deve ficar à direita enquanto a depentente à esquerda. A

 primeira combo das duas colunas indicam a tabela a ser linkada. A segunda combo à

esquerda possui todos os campos da tabela da combo de cima, e a segunda combo àdireita possui os índices da tabela da combo de cima. Os campos de link já são

automaticamente selecionados entre as chaves das tabelas. Os campos a serem

ligados devem possuir o mesmo nome, tipo e tamanho.

 Nesse caso desejamos ligar as tabelas de Cargo e Funcionários. Cargo é a tabela

independente e Funcionários a dependente. Ligamos a chave de Cargo a sua

correspondente em Funcionário.

Inserindo Grupos para Quebra

10. No menu Insert selecione Group Section

EDS RJ - Regional Support Center - pág: 42

Page 43: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 43/121

 

Visual Basic - Programação

Selecione na primeira combo o campo desejado para fazer a quebra e na segunda o

tipo de ordenação. Nesse caso o relatório será quebrado por cargo ascendentemente.

Depois de confirmar a operação, verifique como o layout do relatório está alterado.

Agora o relatório possui além do cabeçalho e rodapé do relatório, cabeçalho e

rodapé do grupo.

11. Selecione (duplo-clique) da janela de campos, nm_cargo da tabela Cargos e

 posicione no cabeçalho do grupo.

12. Selecione da barra de ferramentas a opção Imprimir para Janela e veja com está o

relatório.

EDS RJ - Regional Support Center - pág: 43

Page 44: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 44/121

 

Visual Basic - Programação

Inserindo Totais de Grupo e Relatório

13. Selecione o campo nm_funcionário da linha de detalhe. No menu Inserir, Sumary...

A primeira combo indica o tipo de sumarização a ser feita e a segunda o grupo a ser 

sumarizado. Nesse caso, selecione count para saber quantos funcionários existem

 por cargo. Depois de confirmar, automaticamente é posicionado o campo de

totalização no rodapé da quebra de grupo.

14. Selecione da Barra de Ferramentas Inserir Texto e digite: "Total:". Posicione à

esquerda do campo de sumarização.

15. Selecione da Barra de Ferramentas Imprimir para Janela e veja como ficou.

16. Selecione nm_funcionário da linha de detalhe e depois menu Inserir Grand Total...

EDS RJ - Regional Support Center - pág: 44

Page 45: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 45/121

 

Visual Basic - Programação

17. Selecione da combo count para contabilizar todos os funcionários da empresa.

18. Após confirmar, observe que uma nova divisão de Grand Total foi inserida e ocampo de totalização posicionado nela.

19. Selecione da barra de ferrramentas Inserir Texto e digite: "Total Geral:". Posicione a

divisão de Grand Total à esquerda do novo campo de totalização.

20. Veja como está o relatório.

Alterando o layout do relatório

21. Selecione da Barra de Ferramentas Inserir Linha. Insira linhas onde achar necessário para dividir visualmente o relatório. Ex.:Dividir entre cabeçalho de cargo e detalhes

com nome dos funcionários.

22. Veja como ficou o relatório. Agora você pode criar em cima dele alterando cores e

formatos de letras (opção de menu Format Fonts).

EDS RJ - Regional Support Center - pág: 45

Page 46: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 46/121

 

Visual Basic - Programação

Inserindo Campos Informativos

23. No menu Insert selecione Print Date Field e posicione à esquerda do cabeçalho do

relatório. À esquerda da data escreva: "Data:"

24. No menu Insert selecione Page Number Field e posicione abaixo da data. À

esquerda da página escreva:"Página:"

25. Veja como ficou seu relatório

Salvando o arquivo

26. Salve com o nome de FUNCARG.RPT

Crystal Report e Visual Basic

27. Para chamar um relatório do Visual Basic o primeiro passo é acrescentar ao

formulário o controle do Crystal Report abaixo.

28. Dar nome ao objeto com prefixo CRR - na propriedade Name - e na propriedade

ReportFileName selecionar o relatório - nesse caso FUNCARGO.RPT.

29. Para chamar o relatório, o código de um evento como Click de um botão deve conter 

o seguinte comando para exibir o relatório na tela:

CRR.Action = 1 

EDS RJ - Regional Support Center - pág: 46

Page 47: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 47/121

 

Visual Basic - Programação

7.0 Utilização do Debug do Visual Basic

Objetivo

 Neste módulo serão mostradas as ferramentas que o Visual Basic oferece para auxílio

na identificação de erros de execução.

 

EDS RJ - Regional Support Center - pág: 47

Page 48: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 48/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 48

Page 49: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 49/121

 

Visual Basic - Programação

7.1 Add Watch e Edit Watch

Permite a criação e a alteração de variáveis de watch. Estas variáveis exibem seu valor sempre que o programa entrar em break mode.

Uma variável de watch pode parar a execução de um programa, se assim for 

especificado na criação da variável. Existem duas opções :  Break when True, que

 pára a execução do programa quando seu valor atingir verdadeiro, ou, Break when

Changed, que para a execução do programa sempre que seu valor for alterado.

Sempre que um programa estiver em Break Mode, para voltar a execução do programa,

 basta escolher a opção Start do menu Run ou então apertar F5. 

EDS RJ - Regional Support Center - pág: 49

Page 50: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 50/121

 

Visual Basic - Programação

7.2 Calls - Árvore de Chamada

Disponível apenas em tempo de execução, estando o programa em Break Mode. Mostraa árvore de chamada naquele ponto, especificando quais as subrotinas que

antecederam a atual em formato de pilha.

7.3 Single Step e Procedure Step

Permite a execução do programa comando a comando sem entrar em subrotinas ( Single

Step ), ou comando a comando entrando em rotinas ( Procedure Step). Para

 prosseguir com execução normal da aplicação, selecionar a opção Start  do menu

 Run ou então pressionar F5.

As opções Single Step /Procedure Step estão no menu Debug, mas também podem ser 

encontradas no barra de ferramentas.

EDS RJ - Regional Support Center - pág: 50

Page 51: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 51/121

 

Visual Basic - Programação

7.4 Show Next Statement

Frequentemente quando se trabalha com o Debug, você se perde no meio de tantas

 janelas de código. Para isso existe no Visual Basic um comando que posiciona o

cursor na próxima linha a ser executada. O comando Show Next Statement  fica no

menu Debug .

Set Next Statement

O Set Next Statement  funciona como um GoTo dinâmico. Ele desvia o fluxo do

 programa para a linha selecionada, e continua a partir dali. O comando Set Next 

Statement também fica no menu Debug .

EDS RJ - Regional Support Center - pág: 51

Page 52: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 52/121

 

Visual Basic - Programação

Esta página foi deixada intencionalmente em branco.

8.0 Tratamento de Erros

Objetivo

Apresentar uma maneira de tratar os erros de run-time ocorridos em qualquer aplicação

Visual Basic. Se não houver rotinas de tratamento de erro, a aplicação aborta.

EDS RJ - Regional Support Center - pág: 52

Page 53: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 53/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 53

Page 54: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 54/121

 

Visual Basic - Programação

8.1 Tratamento de Erros no Visual Basic

Para criar um sistema de tratamento de erros para uma aplicação Visual Basic, ooperador deve seguir basicamente três passos :

• Ativar o Tratamento de Erros do Visual Basic;

• Escrever a rotina de tratamento de erros. Esta rotina deverá incluir o "display" de

mensagens para o usuário assim como, ações corretivas para o problema;

• Indicar ao sistema para onde a aplicação deverá retornar após o tratamento de erro.

8.2 Ativando o Tratamento de Erro

A ativação do tratamento de erros no Visual Basic se faz através da cláusula On Error .

 Nesta cláusula o programador indica para onde a aplicação deve pular em caso de

erro, que pode ser um label ou um número de linha.

A cláusula On Error deve ser especificada no início de uma rotina qualquer e o label

que indica o início da rotina de tratamento de erro deverá estar dentro da mesma

rotina.

Sintaxe :

On Error Goto < Label >

EDS RJ - Regional Support Center - pág: 54

Page 55: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 55/121

 

Visual Basic - Programação

8.3 Enviando Mensagens de Erro e Tratando o Erro

Quando ocorre um erro, o Visual Basic gera um número referente ao erro ocorrido. Estenúmero pode ser obtido através da função  ERR. A mensagem de texto relativa ao

erro ocorrido pode ser fornecido através da função ERROR. 

Exemplo :

MsgBox "O erro seguinte erro aconteceu : " + Str(Err) + Chr(10) +

" + Error(Err) + Chr(10) + "Chame o Suporte Técnico!"

Quando um erro ocorre, o programador pode, além de apenas mostrar o erro ocorrido e

finalizar a aplicação, pode também mostrar uma mensagem para usuário pedindo

que este tome uma ação corretiva, dependendo do erro. Isso pode ser implementado

se dentro da rotina de tratamento de erros, o programador testar o tipo do erro

ocorrido ( através da função  ERR ), e para cada tipo de erro tomar uma atitude

diferente.

EDS RJ - Regional Support Center - pág: 55

Page 56: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 56/121

 

Visual Basic - Programação

Veja o exemplo abaixo, onde a aplicação está tentando copiar um arquivo de um

disquete que não está no drive. Neste caso existe uma ação corretiva e a aplicação

não necessita ser abortada.

Exemplo :

Sub Command3D1_Click ()On Error GoTo T_Erro

FileCopy "a:arq1.txt", "b:arq2.txt"Exit Sub

T_Erro:

Select Case ErrCase 71

MsgBox "Não existe disquete no drive. Coloque um e tentenovamente!"

Case 55MsgBox "Não se pode copiar um arquivo aberto. Feche-o e

tente novamente"Case Else

MsgBox "Um erro aconteceu. Chame o suporte Técnico!"End SelectResume Next

End Sub

EDS RJ - Regional Support Center - pág: 56

Page 57: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 57/121

 

Visual Basic - Programação

8.4 Retorno de Rotinas de Tratamento de Erro

Quando ocorre um erro em uma aplicação, se o programador tiver usado a cláusula On

 Error , o fluxo do programa é desviado para uma rotina de tratamento de erros.

Depois deste desvio, se corrigido o erro, de onde o programa deverá prosseguir ?Isto quem define é o programador, através um entre três comandos :  Resume,

 Resume  Next ,  Resume < label  >. Existe ainda um quarto comando que pode ser 

utilizado para sair de uma rotina de erro, o  End , que serve para finalizar uma

aplicação. Sem um destes quatro comandos dentro de uma rotina de tratamento de

erro, uma erro de compilação ocorre.

Resume O comando resume faz com que a aplicação tente continuar seu

fluxo a partir de comando onde ocorreu o erro. Se o erro não tiver sido corrigido,

novo erro ocorre. Se ele continuar não sendo corrigido, a aplicação entra em "loop".

Resume Next O comando Resume Next faz com que a aplicação tente continuar 

seu fluxo a partir do comando seguinte ao comando onde ocorreu o erro. Se a partir deste ponto existam comandos cujo funcionamento dependiam do sucesso da

operação onde o erro havia acontecido, novos erros acontecerão.

Resume < Label > Este comando faz com que a aplicação tente continuar seu fluxo

de execução a partir de um label definido pelo operador dentro da mesma rotina.

Funciona como um "goto".

End Finaliza a aplicação. Cuidado para não esquecer de fechar bancos

de dados abertos.

EDS RJ - Regional Support Center - pág: 57

Page 58: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 58/121

 

Visual Basic - Programação

8.5 Onde deve ser especificada a cláusula On Error 

O usuário pode especificar uma cláusula On Error em cada módulo da aplicação (sub-

rotina, função ou evento do sistema) e codificar rotinas de tratamento de erro para

cada uma delas. No entanto, isto não é necessário.

Sempre que ocorre um erro dentro de uma rotina, o sistema verifica se foi especificado

tratamento de erro para aquela rotina. Em caso positivo, o erro é tratado dentro

daquela rotina e a execução do sistema prossegue dali, dependendo do que foi

especificado pelo usuário. Em caso negativo, o sistema verifica se foi especificado

tratamento de erro na rotina chamadora daquela função ou rotina. Caso exista, o

tratamento é efetuado, caso contrário a procura por tratamento de erro prossegue na

árvore de rotinas chamadoras, até que esta acabe. Se nenhum tratamento de erro

tiver sido especificado para aquela árvore de chamadas, um erro de execução ocorre.

Quando um erro é passado para rotinas chamadoras para que seja tratado, a execução da

aplicação prossegue a partir da rotina onde o erro foi tratado, não necessariamente a

rotina onde o erro ocorreu.

EDS RJ - Regional Support Center - pág: 58

Page 59: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 59/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 59

Page 60: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 60/121

 

Visual Basic - Programação

9.0 DDE - Dynamic Data Exchange

Objetivo

 Neste módulo será mostrado a forma que o Visual Basic implementa o DDE (Dynamic

Data Exchange), que é a maneira pela qual o Windows permite que aplicações

diferentes comuniquem entre si.

 

EDS RJ - Regional Support Center - pág: 60

Page 61: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 61/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 61

Page 62: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 62/121

 

Visual Basic - Programação

9.1 Conceituação de DDE

DDE é um mecanismo do Windows que permite que duas aplicações comuniquem entre

si, continuamente e automaticamente trocando dados.

Uma comunicação DDE é direta, ao contrário da comunicação entre aplicações quando

se usa o Clipboard, que é na realidade em ponto intermediário entre duas aplicações

Windows.

9.2 Aplicação Origem e Aplicação Destino

Uma Ligação DDE envolve duas partes : uma que envia dados, denominada aplicação

fonte, e outra que recebe os dados, chamada de aplicação destino.

Em Visual Basic, apenas alguns controles podem servir de destino de ligações DDE.

São eles : TextBoxes, PictureBoxes, e Labels.

EDS RJ - Regional Support Center - pág: 62

Page 63: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 63/121

 

Visual Basic - Programação

9.3 Tipos de Ligação DDE

Existem três tipos de ligação DDE no Visual Basic : Automática, Manual e Notificada.

 Na ligação automática, qualquer mudança ocorrida na aplicação fonte, é refletida

imediatamente na aplicação destino.

 Na Ligação manual, a a aplicação destino apenas é atualizada a pedido dela mesma, ou

seja, a aplicação fonte pode sofrer inúmeras alterações sem que elas reflitam na

aplicação destino.

 Na ligação Notificada, cada vez que a aplicação fonte sofre uma alteração, um evento

ocorre na aplicação destino, notificando-a que houveram mudanças na aplicação

fonte.

9.4 Criação de Ligação DDE em Design Time

Uma ligação pode ser criada tanto em Design-time quanto em Run-time. Em Design-Time, você utiliza as facilidades de Corte e Colagem (Cut e Paste) do Windows. Ao

fazer a colagem, O VB automaticamente determina todas as propriedades

necessárias para fazer uma ligação. Ao mesmo tempo que a criação de uma DDE em

design-time é bastante fácil, este tipo de criação lhe tira a flexibilidade de trabalho.

Por exemplo, uma ligação deste tipo será sempre do tipo automática. e isto somente

 poderá ser alterado, se você escrever código para isto.

Para fazer uma ligação em Run-Time, você próprio determina as mesmas propriedades,que o VB determina quando a ligação é feita em design-time, só que via

 programação.

EDS RJ - Regional Support Center - pág: 63

Page 64: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 64/121

 

Visual Basic - Programação

Exemplo - Criação de uma Ligação em Design Time

Para exemplificar a criação de uma ligação DDE em design-time usaremos o Word for 

Windows como aplicação fonte e o VB com aplicação destino.

Preparando o ambiente no Word for Windows

1. Inicialize o Word for Windows.

2. Digite dois parágrafos quaisquer da sua apostila e salve o documento com o nome

de Source.doc.

3. Selecione o texto digitado e copie-o para o Clipboard do Windows.

Criando a Ligação DDE no Visual Basic

4. Inicialize o Visual Basic.

5. Crie um formulário contendo apenas um TextBox com a propriedade multiline =

True.

6. Com o TextBox selecionado, pressione o mouse sobre o comando  Paste Link  do

menu Editar.

Executando a Aplicação

7. Pressione F5 ou selecione Start do Menu Run.8. Pare a aplicação e verifique quais as propriedades da textbox são novas para você.

Verifique e procure compreender o conteúdo destas variáveis.

EDS RJ - Regional Support Center - pág: 64

Page 65: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 65/121

 

Visual Basic - Programação

9.5 Propriedades Utilizadas no estabelecimento de Ligações DDE

Já foi visto acima como criar ligações DDE em design-time. Vimos também que um

TextBox possui uma série de propriedades que quando "setadas", permitem a uma

aplicação VB fazer uma ligação dinâmica a um outro aplicativo qualquer do

Windows. Neste tópico veremos cada uma destas propriedades e qual é o seu papel

dentro deste importante mecanismo.

Aplicação Destino

Quando uma aplicação VB atua como destino de uma ligação DDE, as seguintes

 propriedades do controle que será destino da ligação DDE devem ter seus valores

determinados : LinkMode, LinkTopic e LinkItem. A propriedade LinkTimeout

também pode ter seu valor determinado, não sendo porém imprescindível para o

estabelecimento da DDE.

Link Mode Determina o tipo da ligação estabelecida. Pode assumir os

seguintes valores :

Valor Tipo da Ligação

0 Nenhuma Ligação1 Automática

2 Manual

3 Notificada

EDS RJ - Regional Support Center - pág: 65

Page 66: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 66/121

 

Visual Basic - Programação

LinkTopic Determina a aplicação fonte e o tópico da conversação. O

conteúdo da propriedade LinkTopic, associado ao conteúdo da propriedade

LinkItem especificam inteiramente a ligação com o outro aplicativo. Normalmente oconteúdo desta propriedade é conposto por :

• Nome do Aplicativo (Excel, WinWord, PBrush, etc.)

• Pipe ( | )

• Nome do arquivo sobre o qual a ligação deve ser feita ( *.xls, *.doc, *.bmp, etc.)

Exemplos:

1. Para fazer a ligação do Excel com o VB, sendo a aplicação VB o destino, a

 propriedade LinkTopic deverá ter o seguinte conteúdo: "Excel|arquivo.xls"

(supondo que o arquivo Excel sobre o qual a ligação deve ser feita se chame

'arquivo.xls' )

2. Para fazer a ligação do Word com o VB, sendo a aplicação VB o destino, a

 propriedade LinkTopic deverá ter o seguinte conteúdo: "WinWord|arquivo.doc"

(supondo que o arquivo Word sobre o qual a ligação deve ser feita se chame

'arquivo.doc' )

LinkItem Determina especificamente o dado passado na conversação. Em

uma ligação DDE com o Excel pode ser a faixa de células, na ligação com o Word

 pode ser um indicador ( bookmark ) no texto, na ligação com outra aplicação Visual

Basic pode ser o nome do controle que é fonte da ligação DDE.

LinkTimeout Determina o intervalo de tempo, em décimos de segundos, que a

aplicação deverá gastar tentando estabelecer a ligação DDE com o outro aplicativo.

 

EDS RJ - Regional Support Center - pág: 66

Page 67: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 67/121

 

Visual Basic - Programação

Antes de tentar qualquer ligação DDE, a propriedade LinkMode deverá receber o

conteúdo 0. Desta forma, para utilizar o mecanismo DDE corretamente, as seguintes

 propriedades devem ser "setadas" na seguinte ordem :

1. LinkMode = 02. "Setar" o conteúdo de LinkTopic

3. "Setar" o conteúdo de LinkItem

4. "Setar" o conteúdo de LinkTimeout

5. "Setar" o conteúdo de LinkMode

Aplicação Fonte

Quando uma aplicação VB atua como fonte de uma ligação DDE, as seguintes

 propriedades do formulário que contém o controle que será fonte da ligação DDE

devem ter seus valores determinados : LinkMode, LinkTopic.

LinkMode Determina se um formulário VB pode atuar como Fonte em uma

ligação DDE. A propriedade LinkMode do formulário pode assumir os seguintes

valores :

Valor Definição

0 Não é fonte de ligação DDE.

1 Pode ser fonte de ligação DDE.

LinkItem Determina o nome que o formulário, juntamente com o nome do

executável desta aplicação, deverá ser especificado na propriedade LinkTopic da

aplicação Fonte.

EDS RJ - Regional Support Center - pág: 67

Page 68: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 68/121

 

Visual Basic - Programação

9.6 O Método LinkRequest

O método LinkRequest é utilizado em aplicações destino quando o tipo da ligação DDE

é do tipo Manual ou do tipo Notificada. Ele requisita à aplicação fonte a atualização

dos dados contidos na aplicação destino. Este método deverá ser aplicado sobre o

controle destino da ligação DDE.

Sintaxe :

<nome-do-controle>.LinkRequest

EDS RJ - Regional Support Center - pág: 68

Page 69: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 69/121

 

Visual Basic - Programação

9.7 Método LinkPoKe

O método LinkPoke, aplicado sobre um controle de uma aplicação destino em uma

ligação DDE, faz com que os dados fluam no sentido inverso da ligação, ou seja, os

dados da aplicação fonte serão atualizados de acordo com o conteúdo da aplicação

destino.

Sintaxe:

<Nome_controle>.LinkPoke 

EDS RJ - Regional Support Center - pág: 69

Page 70: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 70/121

 

Visual Basic - Programação

9.8 Método LinkExecute

O método LinkExecute, aplicado sobre o controle destino de uma aplicação, executa umcomando qualquer na aplicação fonte. Importante observar que o comando enviado

deverá ser reconhecido pela aplicação fonte.

Sintaxe:

<nome-controle>.LinkExecute

EDS RJ - Regional Support Center - pág: 70

Page 71: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 71/121

 

Visual Basic - Programação

9.9 Método LinkSend

Quando o uma aplicação VB está no papel de fonte em uma ligação DDE, se a ligação é

do tipo automática, o VB atualiza a aplicação destino quando há qualquer alteração

no controle que é fonte da ligação. Isto ocorre quando a fonte da ligação é diferentede desenho.

Quando a fonte da ligação é um desenho, a aplicação deve explicitamente enviar as

alterações para as aplicações-destino. Para isso, utiliza-se o comando LinkSend

sobre o controle fonte da ligação.

Isto ocorre para gráficos porque o envio de um desenho de uma aplicação para outra

 pode ser dispendioso demais em relação a recursos de máquina e tempo. Este é o

 porquê da opção da Microsoft por "não manter ligação automática para figuras".

9.10 Eventos associados ao DDE

Durante a criação e existência de uma ligação DDE, alguns eventos eventualmente

ocorrem. São eles : LinkOpen, LinkClose, LinkError e o LinkNotify.

LinkOpen  → A aplicação VB destino recebe este evento sempre que umaligação DDE é iniciada com sucesso. A aplicação VB fonte também recebe este

evento, porém este evento tem um parâmetro do sistema (Cancel), que se "setado"

 para True pode cancelar a ligação.

LinkClose  →  Ocorre tanto na aplicação fonte como na destino, quando uma das

duas finaliza a ligação.

LinkError  →  Ocorre na aplicação destino quando um erro acontece enquanto

nenhum código está sendo executado (Por exemplo, pode faltar memória aosistema). Erros ocorridos durante a execução de código, podem ser tratados pelo

método normal de tratamento de erros ( já aprendido).

LinkNotify  →  Ocorre na aplicação destino, quando o conteúdo da ligação tiver 

sido alterado na aplicação fonte. Atenção , este evento somente ocorre se a

 propriedade LinkMode tiver valor 3 (Notify).

EDS RJ - Regional Support Center - pág: 71

Page 72: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 72/121

 

Visual Basic - Programação

Exemplo - Criação de uma ligação em Run-Time onde Excel é fonte e VB é

destino

Para exemplificar este tipo de ligação DDE, criaremos uma aplicação que mostrará o

conteúdo de uma coluna de uma planilha Excel, e além disso, um gráfico dosnúmeros apresentados. Esta ligação DDE poderá se dar de modo automático ou

manual.

Criando a planilha no Excel

1. Abra o aplicativo Excel.

2. Digite seis números, um em cada linha da primeira coluna (até atingir a sexta linha).

3. Selecione os seis números e pressione o botão de criação de gráficos. Selecione

então uma área na planilha onde você quiser que o gráfico apareça. Pressione"Próximo" ( várias vezes ) até que o gráfico esteja pronto, e então pressione OK.

4. Salve esta planilha com o nome de "source.xls".

Criando a Aplicação no Visual Basic

5. Crie uma PictureBox e nomeie-a Pic.

6. Crie uma TextBox e nomeie-a TXT .

7. Crie um Botão, desabilitado, com Caption = "Request" e Nome = "CMDRequest".

8. Crie outro botão, com caption = "Conecta" e Nome = CMDConecta.

9. Crie um Frame, desabilitado, com o nome "Frame".

10. Crie um Option Button, dentro do frame recém criado, com o nome "OPTManual",com Caption "Manual" e value True.

11. Crie outro Option Button dentro do Frame, desta vez com o nome "OPTAutomat" ecaption "Automática".

EDS RJ - Regional Support Center - pág: 72

Page 73: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 73/121

 

Visual Basic - Programação

Codificando o Botão "Conecta"

12. Associar ao evento Click deste botão as seguintes linhas de código :

Pic.LinkMode = 0

Para Excel em PortuguêsPic.LinkTopic = "Excel|source.xls Gráfico 1"

Para Excel em InglêsPic.LinkTopic = "Excel|source.xls Chart 1"

Pic.LinkItem = ""Pic.LinkTimeOut = 50

Txt.LinkMode = 0Txt.LinkTopic = "Excel|source.xls"

Para Excel em PortuguêsTxt.LinkItem = "L1C1:L6C1"

Para Excel em InglêsTxt.LinkItem = "R1C1:R6C1"

Txt.LinkTimeout = 50

If OPTAutomat.value = true thenPic.LinkMode = 1Txt.LinkMode = 1

ElsePic.LinkMode = 2

Txt.LinkMode = 2CMDRequest.enabled = true

Endif

Frame.enabled = trueCMDConecta.enabled = false

Codificando o Option Button "Automático"

13. Associar ao evento Click deste botão as seguintes linhas de código :

CMDRequest.enabled = falsePic.LinkMode = 0Pic.LinkMode = 1Txt.LinkMode = 0Txt.LinkMode = 1

Codificando o Option Button "Manual"

14. Associar ao evento Click deste botão as seguintes linhas de código :

CMDRequest.enabled = truePic.LinkMode = 0

EDS RJ - Regional Support Center - pág: 73

Pic.LinkMode = 2

Page 74: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 74/121

 

Visual Basic - Programação

Txt.LinkMode = 0Txt.LinkMode = 2

Codificando o botão "Request"

15. Associar ao evento Click deste botão as seguintes linhas de código :

Txt.LinkRequestPic.LinkRequest

Executando a Aplicação

16. Pressione F5 para executar a aplicação. Lembre-se que o programa somente

funcionará corretamente se o Excel estiver rodando, com a planilha "source.xls"

aberta.

17. Experimente fazer alterações na planilha, e veja os resultados tanto quando a ligação

DDE for de tipo automático, quanto quando a ligação for manual.

EDS RJ - Regional Support Center - pág: 74

Page 75: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 75/121

 

Visual Basic - Programação

Exemplo - Criação de uma ligação em Run-Time onde Word é fonte e VB é

destino

Para exemplificar este tipo de ligação DDE, criaremos uma aplicação que mostrará o

conteúdo de um documento Word. Esta ligação DDE poderá se dar de modoautomático ou manual. Você vai observar também, o que acontece quando tentamos

criar uma ligação do tipo "Notificada", quando a aplicação fonte é o Word.

Criando o documento Word

1. Abra o aplicativo Word.

2. Digite dois parágrafos de um texto qualquer.3. Selecione o texto inteiro e insira um indicador de nome "DDE_LINK1" ( Menu

 Inserir , opção Indicador do Word ).

4. Salve este documento com o nome de "source.doc".

Criando a Aplicação no Visual Basic

5. Crie uma TextBox e nomeie-a TXT .

6. Crie um botão com Caption = "Request" e Nome = "CMDRequest".7. Crie outro botão, com caption = "Poke" e Nome = CMDPoke.

8. Crie um frame com o nome "Frame".

9. Crie um Option Button, dentro do frame recém criado, com o nome "OPTManual",e com Caption "Manual".

10. Crie outro Option Button dentro do Frame, desta vez com o nome "OPTAutomat" ecaption "Automática".

11. Crie outro Option Button dentro do Frame, desta vez com o nome "OPTNotify" e

caption "Notificação".

EDS RJ - Regional Support Center - pág: 75

Page 76: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 76/121

 

Visual Basic - Programação

Codificando o Load do Formulário

12. Digite as seguintes linha de código :

Txt.LinkMode = 0

Txt.LinkTopic = "WinWord|source.doc"Txt.LinkItem = "DDE_LINK1"Txt.LinkMode = 2OPTManual.value = true

Codificando o Option Button "Automático"

13. Associar ao evento Click deste botão as seguintes linhas de código :

CMDRequest.enabled = falseTxt.LinkMode = 0

Txt.LinkMode = 1

Codificando o Option Button "Manual"

14. Associar ao evento Click deste botão as seguintes linhas de código :

CMDRequest.enabled = trueTxt.LinkMode = 0Txt.LinkMode = 2

Codificando o Option Button "Notificação"

15. Associar ao evento Click deste botão as seguintes linhas de código :

CMDRequest.enabled = trueTxt.LinkMode = 0Txt.LinkMode = 3

Codificando o botão "Request"

16. Associar ao evento Click deste botão as seguintes linhas de código :Txt.LinkRequest

EDS RJ - Regional Support Center - pág: 76

Page 77: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 77/121

 

Visual Basic - Programação

Codificando o botão "Poke"

17. Associar ao evento Click deste botão as seguintes linhas de código :

Txt.LinkPoke

Executando a Aplicação

18. Pressione F5 para executar a aplicação.

19. Experimente fazer alterações no texto, e veja os resultados tanto quando a ligação

DDE for de tipo automático, quanto quando a ligação for manual ou Notificada.

20. Verifique a Utilização do método LinkPoke.

EDS RJ - Regional Support Center - pág: 77

Page 78: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 78/121

 

Visual Basic - Programação

Exemplo - Criação de uma ligação em Run-Time onde VB é fonte e VB é

destino

Já vimos nos exemplos anteriores como o Visual Basic funciona como aplicação destino

de uma ligação DDE, onde a fonte é ou o Excel ou o Word for Windows. Agora,veremos como funciona uma ligação DDE onde uma aplicação VB é fonte, e outra

destino.

Criando a aplicação Visual Basic Fonte

1. Inicialize o Visual Basic.

2. Crie uma TextBox, com nome "TXT_Fonte" e propriedade LinkItem "TXT_Fonte".

3. Digite dois parágrafos de um texto qualquer na propriedade Text da TextBox recémcriada..

4. Selecione formulário.

5. Em sua propriedade LinkMode, digite o valor 1 (Source) e em sua propriedadeLinkTopic, a string "DDE_Form1".

6. Gere um executável de nome "DDE_FNT.exe".

7. Crie um grupo no Windows e Crie o item de programa "DDE_Fonte" associado aoexecutável recém criado.

EDS RJ - Regional Support Center - pág: 78

Page 79: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 79/121

 

Visual Basic - Programação

Criando a aplicação Visual Basic Destino

8. Crie uma TextBox e nomeie-a TXT .

9. Crie um botão, desabilitado, com Caption = "Request" e Nome = "CMDRequest".

10. Crie outro botão, com caption = "Poke" e Nome = CMDPoke.11. Crie um frame com o nome "Frame".

12. Crie um Option Button, dentro do frame recém criado, com o nome "OPTManual",e com Caption "Manual".

13. Crie outro Option Button dentro do Frame, de value True, desta vez com o nome"OPTAutomat" e caption "Automática".

14. Crie outro Option Button dentro do Frame, desta vez com o nome "OPTNotify" ecaption "Notificar".

EDS RJ - Regional Support Center - pág: 79

Page 80: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 80/121

 

Visual Basic - Programação

Codificando o Load do Formulário

15. Digite as seguintes linha de código :

dim z as integer

On Error goto T_ErroTxt.LinkMode = 0Txt.LinkTopic = "DDE_FNT|DDE_Form1"Txt.LinkItem = "TXT_Fonte"Txt.LinkMode = 1

Exit SubT_Erro:

z = shell( "DDE_FNT.exe", 1)z = doevents()Resume

Codificando o Option Button "Automático"

16. Associar ao evento Click deste botão as seguintes linhas de código :

CMDRequest.enabled = falseTxt.LinkMode = 0Txt.LinkMode = 1

Codificando o Option Button "Manual"

17. Associar ao evento Click deste botão as seguintes linhas de código :CMDRequest.enabled = trueTxt.LinkMode = 0Txt.LinkMode = 2

Codificando o Option Button "Notificação"

18. Associar ao evento Click deste botão as seguintes linhas de código :

CMDRequest.enabled = true

Txt.LinkMode = 0Txt.LinkMode = 3

Codificando o botão "Request"

19. Associar ao evento Click deste botão as seguintes linhas de código :

Txt.LinkRequest

EDS RJ - Regional Support Center - pág: 80

Page 81: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 81/121

 

Visual Basic - Programação

Codificando o botão "Poke"

20. Associar ao evento Click deste botão as seguintes linhas de código :

Txt.LinkPoke

Codificando o Evento LinkNotify

21. Digitar a seguinte linha de código :

MSGBOX "Conteúdo da Aplicação Fonte foi alterado !!!"

Executando a Aplicação

22. Pressione F5 para executar a aplicação.

23. Experimente fazer alterações no texto na aplicação Fonte, e ver os resultados tanto

quando a ligação DDE for de tipo automático, quanto quando a ligação for manual

ou Notificada.

24. Verifique a Utilização do método LinkPoke.

10. OLE - Object Linking and Embedding

Objetivo

OLE é mais uma forma de "interoperabilidade" entre os aplicativos Windows. O OLE

 permite que um usuário, de dentro de uma aplicação Visual Basic, edite objetos

criados a partir de outros aplicativos.

 

EDS RJ - Regional Support Center - pág: 81

Page 82: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 82/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 82

Page 83: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 83/121

 

Visual Basic - Programação

10.1 Conceituação de OLE

OLE é mais um método de compartilhamento de dados entre aplicações Windows. OLE

 permite a criação de aplicações VB, nas quais o usuário poderá acessar as melhores

características de todas as ferramentas Windows. Por Exemplo, uma aplicação VB poderia conter um texto do Word, uma planilha do Excel, etc. Desta forma a

aplicação está centrada nos objetos que possui e não na ferramenta (o próprio VB).

Dentro do objeto OLE, você pode, por exemplo, colocar uma planilha Excel. O usuário

irá visualizar esta planilha, da mesma forma que ele a vê no Excel. Ao dar duplo-

clique com o mouse sobre aquele objeto, o usuário poderá editar a planilha dentro

do próprio Excel.

10.2 O Controle OLE

O controle do Visual Basic OLE, uma vez colocado no formulário permite que você

associe aquela posição de tela a um aplicativo qualquer do Windows. O item ao qual

o OLE é associado, é denominado objeto. Um objeto pode ser uma planilha em

Excel, um documento em Word, uma figura do PaintBrush, etc..

Ao inserir um controle OLE no formulário, uma caixa de diálogo é apresentada. Nesta

caixa, o usuário seleciona o aplicativo ao qual ele deseja associar o OLE, se eledeseja incorporar um objeto ou vincular o OLE a um objeto externo, etc..

EDS RJ - Regional Support Center - pág: 83

Page 84: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 84/121

 

Visual Basic - Programação

10.3 Diferenças entre Ligação e Incorporação ( Linking and Embedding )

O controle OLE é utilizado para associar um objeto a uma aplicação Visual Basic. Esta

associação pode ser feita de duas maneiras : Ligando o objeto ao controle OLE da

aplicação Visual Basic ou incorporando o objeto na aplicação.

Ligação

 Na ligação, o objeto não fica guardado dentro da aplicação VB. Nela, há apenas um

 ponteiro direcionando-a para o objeto externo. Este objeto, além de ser acessado

 pela sua aplicação, também pode ser acessado por qualquer outro aplicativo

Windows. Por exemplo, se você tiver uma planilha Excel ligada à sua aplicação VB,

esta mesma planilha também poderá estar ligada a um documento Word. Isto

acontece porque o VB não guarda dentro de si a planilha, mas apenas um ponteiro para ela.

Incorporação

 Na Incorporação, o dado fica guardado dentro da aplicação VB. Este dado somente

 pode ser acessado pela ferramenta que o gerou, e assim mesmo, quando chamado de

dentro da aplicação VB que possui o dado.

EDS RJ - Regional Support Center - pág: 84

Page 85: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 85/121

 

Visual Basic - Programação

10.4 Criando um Objeto em Design Time

Ao inserir um controle OLE dentro de um formulário, uma caixa de diálogo é

apresentada. Nesta caixa, o usuário pode selecionar : a ferramenta que gerou o

objeto; se ele deseja criar o objeto a partir de um arquivo já existente ou um novo

arquivo; se ele deseja incorporar o objeto ou fazer apenas uma ligação.

Importante observar que, para objetos incorporados, se o programador decidir criar a partir de um arquivo já existente, o OLE estará apenas pegando o arquivo existente

como modelo, e fazendo uma cópia dos dados para dentro da aplicação VB.

EDS RJ - Regional Support Center - pág: 85

Page 86: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 86/121

 

Visual Basic - Programação

Exemplo - Criação de objetos OLE em Design-Time

Para exemplificar a criação de um controle OLE em design-time, desenvolveremos uma

aplicação que conterá apenas um controle OLE cujo objeto será uma figura em

PaintBrush, incorporada à aplicação Visual Basic.

Criando o controle OLE na Aplicação VB

1. Inicialize o Visual Basic.

2. Crie no formulário aberto, um controle OLE. Uma janela de Dialogo aparecerá.

3. Na janela de Dialogo, selecione o aplicativo PaintBrush.

4. Marque a opção Create New. Pressione o botão OK. O PaintBrush será aberto.

Criando a Figura na PaintBrush

5. No PaintBrush, desenhe uma figura qualquer.

6. Do PaintBrush, atualize a figura incorporada e saia do aplicativo.

Executando a Aplicação

7. Pressione F5 para executar a aplicação.

8. Dê duplo-clique sobre a figura PaintBrush.

9. Faça alterações na figura e veja como elas refletem no controle OLE.

10. Pare a execução da aplicação e inicialize-a de novo. Veja como as alterações nafiguras não foram armazenadas.

Se Houver Tempo ...

11. Crie um objeto "ligado" ( não incorporado ). Faça alterações nele e veja como elereage.

EDS RJ - Regional Support Center - pág: 86

Page 87: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 87/121

 

Visual Basic - Programação

10.5 Os menus Pop_Up do Controle OLE

Em design-time, o programador pode acessar comandos da OLE mais facilmente se

clicar o botão direito do mouse sobre o controle OLE. Neste momento um menu é

apresentado com quatro opções :

•  Insert Object - Mostra a Caixa de Diálogo para associação do controle OLE com

um aplicativo Windows.

•  Paste Special - Permite a criação de um OLE, a partir do conteúdo do Clipboard.

•  Delete Embedded Object - Desfaz qualquer associação daquele controle com

qualquer aplicativo Windows.

•  Edit - Abre o aplicativo ao qual o controle está associado para edição.

EDS RJ - Regional Support Center - pág: 87

Page 88: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 88/121

 

Visual Basic - Programação

10.6 Propriedades para Criação de controles OLE em Run-Time

Quando se deseja criar um controle OLE em design-time, deve-se usar a caixa de

diálogo "Insert Object". Para criá-lo em run-time, deve-se determinar os valores de

algumas propriedades em código. Elas são : Class, OleTypeAllowed, SourceDoc,SourceItem e Action.

Class ⇒ Identifica o aplicativo que criou o objeto. Ex.: PaintBrush.

OleTypeAllowed ⇒ Indentifica o tipo de objeto que poderá ser criado ( ligado,

incorporado ou ambos ).

SourceDoc ⇒ Em objetos ligados, determina o arquivo ao qual a OLE

estará ligada. Ex.: Figura.bmp.

Em objetos Incorporados, determina um arquivo para ser 

tomado como modelo.

SourceItem ⇒ Especifica o dado dentro de um arquivo ao qual o objeto

estará ligado ( serve apenas para Ligações ). Ex.: L1C1

(linha 1 coluna 1 de uma planilha Excel).

Action ⇒ Especifica o tipo de operação a ser executada no controle

OLE.

Propriedade Action Significado

0 Cria um objeto incorporado1 Cria um objeto Ligado4 Copia o objeto para o ClipBoard5 Copia objeto do ClipBoard6 Atualiza objeto a partir do aplicativo que o criou.7 Abre o aplicativo gerador do objeto.9 Fecha o objeto OLE e termina a ligação com o

aplicativo que criou o objeto.10 Deleta o objeto OLE e desocupa memória.11 Salva conteúdo do objeto OLE para um arquivo.12 Lê conteúdo de um objeto OLE de um arquivo.14 Mostra caixa de diálogo "Insert Object".15 Mostra caixa de diálogo Paste Special.18 Salva um objeto incorporado para um arquivo no

formato OLE.

EDS RJ - Regional Support Center - pág: 88

Page 89: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 89/121

 

Visual Basic - Programação

10.7 Criando Controles OLE Ligados em Run-Time

Antes de criar um objeto OLE Ligado, em Run-Time, o programador precisa definir o

aplicativo a ser ligado, o nome do arquivo e opcionalmente a área do arquivo.

10.8 Criando Controles OLE Incorporados em Run-Time

Para criar um objeto OLE, incorporado, em Run-Time, a partir de um modelo já

existente, o programador deverá seguir os seguintes passos :

1. Setar a propriedade Class.

2. Setar a propriedade SourceDoc.

3. Setar a propriedade Action = 0.

Para criar um novo objeto OLE, incorporado, em Run-Time, o programador deverá

seguir os seguintes passos :

1. Setar a propriedade Class.

2. Setar a propriedade Action = 0, para criar o objeto.

3. Setar a propriedade Action = 7, para ativar o aplicativo para acriação do objeto.

EDS RJ - Regional Support Center - pág: 89

Page 90: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 90/121

 

Visual Basic - Programação

10.9 Trabalhando com Arquivos

Dados associados a uma objeto OLE não são permanentes, isto é, quando um formulário

contendo um controle OLE é fechado, todos os dados associados àquele controle são

 perdidos. É possível salvar dados de um objeto OLE para um arquivo através da propriedade Action. Uma vez salvos os dados, eles podem ser lidos de volta para o

controle OLE a qualquer momento.

Objetos OLE podem ser salvos apenas para arquivos binários abertos.

Salvando dados em um arquivo

1. Abra um arquivo em formato binário.

2. Ajuste a propriedade FileNumber.

3. Ponha o valor 11 na propriedade Action.

Veja o exemplo abaixo, este código poderia ser associado ao click de um botão :

Dim NumArquivo as integer

NumArquivo = FreeFile

Open "arquivo.OLE" for Binary as #NumArquivo

Ole1.FileNumber = NumArquivo

Ole1.Action = 11

Close #NumArquivo

Lendo dados de um arquivo

1. Abra um arquivo em formato binário.

2. Ajuste a propriedade FileNumber.

3. Ponha o valor 12 na propriedade Action.

Veja o exemplo abaixo, este código poderia ser associado ao click de um botão :

Dim NumArquivo as integer

NumArquivo = FreeFile

Open "arquivo.OLE" for Binary as #NumArquivo

Ole1.FileNumber = NumArquivo

Ole1.Action = 12

Close #NumArquivo

EDS RJ - Regional Support Center - pág: 90

Page 91: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 91/121

 

Visual Basic - Programação

10.10 Evento Updated

O evento Updated é invocado sempre que o conteúdo de um objeto é alterado. Este

evento tem como parâmetro um código que indica se o contúdo do objeto foi

alterado, salvo, ou se o aplicativo foi fechado.

EDS RJ - Regional Support Center - pág: 91

Page 92: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 92/121

 

Visual Basic - Programação

Exemplo - Criação de objetos OLE em Run-Time

Para exemplificar a criação de um objeto OLE em run-time, desenvolveremos uma

aplicação contendo dois controles, um OLE e um botão. Ao inicializar a aplicação,

ela verificará se já existe um arquivo de nome "FOO.ole". Em caso positivo, ela leráo conteúdo deste arquivo para o controle OLE. Em caso negativo, o PaintBrush será

aberto para que o usuário possa desenhar alguma coisa. O usuário poderá salvar suas

alterações em arquivo sempre que quiser, bastando para isso pressionar o botão

"Salva Objeto".

Criando os Controles no Visual Basic

1. Inicialize o Visual Basic.

2. Crie um controle OLE. Pressionar o botão de "Cancel"na Caixa de Diálogo.

3. Crie um botão com caption "Salva Objeto".

EDS RJ - Regional Support Center - pág: 92

Page 93: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 93/121

 

Visual Basic - Programação

Programando o Load do Formulário

4. Digitar as seguintes linhas de código:

Dim numarquivo As Integer

' Testa se o arquivo foo.ole já existe, se existir abre, senão

' abre o PaintBrushIf Trim(Dir("c:\curso\foo.ole")) <> "" Then

ole1.Class = "PBrush"

ole1.Action = 0

' A função FreeFile indica o próximo número de arquivo livre.numarquivo = FreeFile

Open "c:\curso\FOO.ole" For Binary As #numarquivo

ole1.FileNumber = numarquivo

ole1.Action = 12

Close #numarquivo

Else

ole1.Class = "PBrush"

ole1.Action = 0

ole1.Action = 7

End If

Codificando o click do botão "Salva Objeto"

5. Digitar as seguintes linhas de código :

Dim numarquivo As Integer

numarquivo = FreeFile

Open "c:\curso\FOO.ole" For Binary As #numarquivo

ole1.FileNumber = numarquivo

ole1.Action = 11

Close #numarquivo

Executando a Aplicação

6. Pressione F5 para inicializar a aplicação.

7. Faça alterações na figura e salve-a pelo menos uma vez.

8. Finalize a aplicação e inicialize-a novamente. Veja coma a figura está atualizada.

9. Rode a aplicação em Debug Mode, para ver o que acontece passo a passo.

EDS RJ - Regional Support Center - pág: 93

Page 94: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 94/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 94

Page 95: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 95/121

 

Visual Basic - Programação

11. Acessando DLL (Dynamic Link Library)

Objetivo

Apresentar ao participante as bibliotecas de funções dinâmicas do Windows. Neste

capítulo, além de verificar o funcionamento deste tipo de bibliotecas, o participante

irá conhecer algumas funções úteis.

 

EDS RJ - Regional Support Center - pág: 95

Page 96: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 96/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 96

Page 97: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 97/121

 

Visual Basic - Programação

11.1 Conceituação de DLL

 Dynamic Link Libraries (DLLs), como o próprio nome sugere, são bibliotecas de

funções que podem ser dinamicamente "ligadas" a aplicações em run-time, ao invés

de associadas estaticamente em design-time.

Por serem apenas ligadas dinamicamente em run-time, as funções contidas nestas

 bibliotecas podem ser compartilhadas por várias aplicações diferentes, e quando

atualizadas (pelo fabricante da DLL em questão), o processo é feito

independentemente das aplicações as quais ela está ligada.

Uma aplicação VB pode não só chamar DLLs do Windows (GDI, Kernel, User), como

também bibliotecas como o VBRun300.DLL, bibliotecas de outros aplicativos, e

 bibliotecas próprias, escritas em C.

Informações sobre as funções contidas em cada biblioteca, podem ser encontradas na

documentação do aplicativo que trouxe a biblioteca.

Existe Help on-line para as bibliotecas do Windows ( podem ser encontrados como

ícones no grupo de programas do Visual Basic 3.0) :

Win 3.1 API Help  ⇒ Contém a lista de todas as funçoes existentes nas

 bibliotecas do Windows. Neste Help, há também a declaração para cada uma destas

funções.

Win SDK Help  ⇒ Contém a descrição de cada uma das funções.

EDS RJ - Regional Support Center - pág: 97

Page 98: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 98/121

 

Visual Basic - Programação

11.2 Como utilizar uma Biblioteca DLL

Para utilizar uma biblioteca DLL, o programador deve seguir os seguintes passos :

1. Escrever o comando de declaração da função desejada.

2. Fazer a chamada à função no meio do código.

3. Salvar a aplicação e testar o funcionamento da função.

11.3 Declarando uma DLL

Para fazer a declaração de uma biblioteca DLL, o programador se utiliza o comando Declare, que deve ser colocado dentro do General Declarations de um formulário

ou módulo de código.

Os parâmetros necessários para a declaração da função devem ser procurados na

documentação da DLL.

Exemplo :

Declare Sub InvertRect Lib "User" (ByVal hDC asinteger, aRect as Rectangle)

Declare Function GetSystemMetrics Lib "User" (ByVal n as Integer)as Integer

11.4 Chamando uma função de uma DLL

Uma vez declarada a função ou rotina, você pode chamá-la de seu código como se fosse

uma outra subrotina qualquer.

Tenha cuidado, pois se algum parâmetro incorreto for passado, a sua aplicação pode

abortar. Salve seu trabalho com freqüencia !!!

Exemplo :

Sub Form_Load ()Const SM_MOUSEPRESENT = 19

showIf GetSystemMetrics(SM_MOUSEPRESENT) Then Print "Mouse Installed"

End Sub

EDS RJ - Regional Support Center - pág: 98

Page 99: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 99/121

 

Visual Basic - Programação

11.5 Tipos de Dados

As funções contidas em bibliotecas DLL normalmente são escritas em C. Existem

alguns tipos de dados que existem em C que não existem em VB, ou vice-versa.

Quando passamos parâmetros para funções de DLLs, precisamos nos certificar queestamos passando o valor correto. Veja a tabela abaixo, que contém os tipos de

dados correspondentes em C e em VB :

Tamanho C Visual Basic

1 byte char leia texto abaixo

2 byte int integer 

4bytes long long

4bytes float single8 bytes double double

8 bytes não existe currency

O Visual Basic não contém um tipo de dados Char . Quando uma função de uma DLL

exigir como parâmetro este tipo de dado, o código ASCII do caracter deverá ser 

 passado numa variável inteiro.

A linguagem C não suporta o tipo currency. Quando um valor deste tipo tiver que ser 

 passado, converta-o antes (dentro do VB), para o tipo de dado Double.

Qualquer função de DLL's pode ser chamada de dentro do Visual Basic, exceto aquelas

que recebem como parâmetros ponteiros.

11.6 Handles de Controles

Funções de DLLs fazem uso extensivo de handles de controles. Um handle é um valor 

inteiro definido pelo sistema operacional, que serve para referenciar objetos como

controles e formulários.

A propriedade hWnd de controles e formulários, disponível apenas em run-time,

retorna o valor do handle para aquele formulário ou controle especificamente.

 

EDS RJ - Regional Support Center - pág: 99

Page 100: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 100/121

 

Visual Basic - Programação

Exemplo - Utilização de Funções de Bibliotecas DLL

Para exemplificar o uso de funções de bibliotecas DLL, criaremos uma aplicação que

usará três funções : Uma que faz o título da janela piscar, outra que permite a

contagem do número de linhas dentro de um TextBox,e outra que estica um bitmap.

Criando os controles

1. Inicialize o Visual Basic.

2. No formulário existente, crie os seguintes controles :

Controle Name Caption

TextBox TXT1TextBox TXT2Picture Pic1Picture Pic2

Command Button cmd1 Estica FiguraLabel Nümero de Linhas

3. Associe a Pic1, um bitmap qualquer do diretório \VB\Bitmaps. TXT1 deve ter a propriedade Multiline = true.

4. Crie um timer, habilitado, com intervalo de 500 milésimos de segundos.

EDS RJ - Regional Support Center - pág: 100

Page 101: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 101/121

 

Visual Basic - Programação

Programando os eventos

5. Na seção General Declarations, escreva as seguintes linhas de código ou copie as

funções do Help Win API.

Declare Function flashwindow Lib "User" (ByVal hWnd As Integer, ByValbinvert As Integer) As Integer

Declare Function sendmessage Lib "User" (ByVal hWnd As Integer, ByValwmsg As Integer, ByVal wparam As Integer, lparam As Any) As Long

Declare Function StretchBlt% Lib "GDI" (ByVal hDC%, ByVal X%, ByValY%, ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal XSrc%,ByVal YSrc%, ByVal nSrcWidth%, ByVal nSrcHeight%, ByVal dwRop&)

6. No evento timer do timer, escreva as seguintes linhas de código :

Dim X As Integer

X = flashwindow(form1.hWnd, 1)

7. No evento Change de TXT1, escreva as seguintes linhas de código :

Const GetLineCount = &H40ATxt2.Text = sendmessage(txt1.hWnd, GetLineCount, 0, ByVal 0&)

8. No click do botão "Estica Figura", escrever as seguintes linhas de código :

Const pixel = 3Const srccopy = &HCC0020Dim rc

pic1.ScaleMode = 3pic2.ScaleMode = 3

rc = StretchBlt(picture2.hDC, 0, 0, pic2.ScaleWidth,pic2.ScaleHeight, pic1.hDC, 0, 0, pic1.ScaleWidth,pic1.ScaleHeight, srccopy)

Executando a Aplicação

9. Pressione F5. Experimente escrever texto na TXT1, e pressione o botão "Esticar 

Figura". Entre no Help on-line para conhecer novas funções.

EDS RJ - Regional Support Center - pág: 101

Page 102: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 102/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 102

Page 103: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 103/121

 

Visual Basic - Programação

12. Construção de Help on-line

Objetivo

Apresentar ao participante as considerações a serem feitas quando se constroi um help

on-line, os passos para o seu desenvolvimento, sua arquitetura, a estrutura de seus

arquivos e os passos para sua criação.

 

EDS RJ - Regional Support Center - pág: 103

Page 104: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 104/121

 

Visual Basic - Programação

Esta página foi deixada em branco intencionalmente.

EDS RJ - Regional Support Center - pág: 104

Page 105: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 105/121

 

Visual Basic - Programação

12.1 Considerações sobre os usuários do help

O perfil dos usuários é um fator determinante na definição do conteúdo e da linguagem

utilizada no help.

 Normalmente classificamos os usuários como:

Usuário Experiência

 Novato em relação a computadores Nenhuma. Completamente inexperiente

com computadores.

 Novato em relação a aplicação Familiarizado com computadores e

 possivelmente até com outras

aplicações, mas sem experiência em

aplicações como a sua.

Ex: usuário de processador de textos

quando sua aplicação é uma planilha.

Intermediário em relação a aplicação Já possui algum conhecimento em

aplicações como a sua.

Avançado em relação a aplicação Já possui muita experiência em

aplicações como a sua.

A classificação deve ser considerada no planejamento do help:

Classificação Necessidades

 Novato em relação a computadores

 Novato em relação a aplicação

Explicações sobre como executar tarefas,

como compreender a interface e a

terminologia.

O help deve responder a perguntasoperacionais.

Intermediário em relação a aplicação

Avançado em relação a aplicação

Focalizar em funcionalidade e nas

 possibilidades de comandos da

aplicação.

O help deve responder a perguntas

conceituais.

EDS RJ - Regional Support Center - pág: 105

Page 106: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 106/121

 

Visual Basic - Programação

12.2 Definição do conteúdo lógico

O help deve contemplar todos os assuntos tratados pela aplicação, entretanto deve

 permanecer concizo, com textos curtos e de fácil entendimento. Devemos lembrar que a leitura em tela não é confortável para os usuários.

12.3 Desenho Técnico

Todos os help systems possuem um menu. Qualquer menu deveria possuir os seguintestópicos:

Conteúdo

Localizar 

Sobre <nome da aplicação>

Existem alguns outros tópicos que trazem benefícios aos usuários:

Índice (índice completo em ordem alfabética)

Guia do teclado

Como usar o help

Organização do conteúdo do help

A "Content Screen" 

Todo help deve ter uma Content Screen, essa janela mostra todo o conteúdo abrangido

 pelo help e permite que os principais assuntos abordados sejam acessados. O

conteúdo deve ser apresentado na Content Screen de forma lógica. A Content 

Screen funciona como um índice em um livro.

EDS RJ - Regional Support Center - pág: 106

Page 107: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 107/121

 

Visual Basic - Programação

Os Tópicos 

O conteúdo do help deve ser sub-dividido e organizado, de preferência de forma

hierárquica, em tópicos para ser apresentado. Tópicos são as janelas de texto que

aparecem quando o help é chamado. A ligação entre tópicos é feita através de

 palavras ( jumps) que aparecem no texto dos tópicos.

OBS: Sempre tente evitar que o caminho que o usuário terá que percorrer para chegar a

uma informação seja muito longo (ex: passar por mais de três tópicos para chegar a

uma resposta ou definição).

Os "jumps"

As palavras que ligam os tópicos são chamadas jumps. Através delas o usuário navega

 pelo help.

As janelas pop-up 

As vezes é necessário conceituar palavras ou expressões que aparecem nos tópicos.

 Normalmente essas conceituações são feitas a parte, em janelas separadas, essas

 janelas podem ser chamadas a partir dos tópicos se o usuário desejar. Essas janelas

são chamadas janelas pop-up. 

A necessidade de mostrar exemplos também deve ser identificada. Estes exemplos

também ficam separados dos tópicos.

EDS RJ - Regional Support Center - pág: 107

Page 108: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 108/121

 

Visual Basic - Programação

Ao final do planejamento do conteúdo do help devemos ter uma estrutura similar a

seguinte:

JUMP JUMP

TÓPICO (assunto a) TÓPICO (assunto a1) EXEMPLO a1

TÓPICO (assunto a2) POP-UP conceito c1

CONTENT SCREEN TÓPICO (assunto b)

TÓPICO (assunto c) TÓPICO (assunto c1) POP-UP conceito c1

TÓPICO (assunto a2)

EDS RJ - Regional Support Center - pág: 108

Page 109: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 109/121

 

Visual Basic - Programação

Determinando a "Browse Sequence" 

Além de organizar os tópicos hierarquicamente, você pode definir para eles uma

sequência lógica. Se o usuário desejar, ele pode ler todo o help obedecendo a essa

sequência através dos botões >> e <<.

Programando "Context sensitive help" 

Uma outra forma de permitir o acesso do usuário ao help é através do help sensitivo.

 Neste caso, os pontos sensíveis da aplicação devem ser determinados e o conteúdo

do help em cada ponto deve ser definido. O acesso ao help sensitivo é feito através

da tecla F1 quando a aplicação está sendo executada.

OBS: Nada impede que tópicos que já aparecem na Content Screen e que são acessados

 por outros meios também sejam acessados pela tecla F1.

Pesquisa por palavra chave (key word) 

A necessidade de pesquisa de assuntos por  palavra chave (key word ) também deve ser estudada. No caso dela ser necessária, as palavras ou expressões consideradas chave

de cada tópico devem ser determinadas.

Um tópico pode ter mais de uma palavra chave e uma palavra chave pode estar 

relacionada a mais de um tópico.

EDS RJ - Regional Support Center - pág: 109

Page 110: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 110/121

 

Visual Basic - Programação

12.4 Considerações sobre o texto

Essas considerações sobre o texto visam a facilidade e conforto do usuário para acessar e ler o help.

Um tópico deve ser do tamanho de uma janela de help, no máximo duas.

Essa janela mede aproximadamente metade de uma janela maximizada, ou

seja, de 15 a 20 linhas.

Se o tópico ficar muito grande ele deve ser quebrado em dois ou parte dele

deve ficar em um tópico subordinado.

Os parágrafos devem ser curtos.

Tenha uma estratégia consistente para definir o conteúdo de janelas pop-up

e a forma de dividir o conteúdo do help em tópicos.

As características visuais dos tópicos devem se manter coerentes também

(tipos de letras, tamanho de fonte, cores, etc).

Use uma linguagem apropriada aos seus usuários. Cuidado com a utilização

de elementos visuais pois eles podem comunicar coisas diferentes conforme

a cultura de seus usuários. É mais seguro não confiar em elementos visuais

 para comunicar.

Use espaços em branco para isolar informações. Eles tornam o texto mais

fácil de ler.

EDS RJ - Regional Support Center - pág: 110

Page 111: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 111/121

 

Visual Basic - Programação

Cuidado com a utilização de cores pois elas chamam a atenção do usuário,

dão ênfase e intesificam o significado. Você pode, sem querer, estar 

chamando a atenção do usuário para o ponto menos importante do texto que

ele está lendo.

Use cores para explicitar a idéia de hierarquia ou agrupamento.

EDS RJ - Regional Support Center - pág: 111

Page 112: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 112/121

 

Visual Basic - Programação

12.5 Utilização de macros

As macros podem ser usadas para adicionar ou remover botões da barra de ferramentas,alterar o menu ou modificar as funções de seus ítens, executar aplicações de dentro

do help ou chamar DLLs externas.

Exemplo de sua aplicação: habilitar e desabillitar a opção de menu "Imprimir".

12.6 Confecção do help

Elementos que compõem o help

O help é composto por:

arquivos .RTF: documentos do Word gravados no formato  Rich Text 

 Format . Contém os tópicos do help.

arquivos .BMP (opcionais).

arquivos .WMF (opcionais).

arquivos .SHG: bitmap ou wmf produzio por shed.exe. (Opcionais).

arquivos .MRB: multiple resolution bitmap, produzido por mrbc.exe.

(Opcionais).

arquivo .HPJ: contém a lista de arquivos .RTF, .BMP, .WMF, .SHG e .MRB

que compoem o help além de informações que o compilador usa para

controlar o processo de compilação. O texto do arquivo .HPJ deve estar no

formato ASCII e cada help só pode ter um arquivo .HPJ.

EDS RJ - Regional Support Center - pág: 112

Page 113: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 113/121

 

Visual Basic - Programação

Utilitários usados na confeção do help:

shed.exe (Hot Spot Editor)

mrbc.exe (Multiple-resolution bitmap Compiler)

hc31.exe (help compiler)

Como os elementos se relacionam

topicfile

.RTF

topicfile

.RTF

graficos

.BMP

.WMF

hot spot editor 

(SHED.EXE)

MRB.EXE

.HPJ

projectfile

help compiler 

(HC31.EXE)

help

(.HLP)

roda em DOS 

roda em Windows

 

EDS RJ - Regional Support Center - pág: 113

Page 114: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 114/121

 

Visual Basic - Programação

Passos para a criação do help

Defina a estrutura hierarquica

e uma lista de tópicos

Defina o conteúdo do help

Escreva o conteúdo dos tópicos

Insira os códigos de controles

nos textos

Crie o arquivo .HPJ

Teste e faça o Debug do help

Prepare a aplicação para chamar 

o help

Teste a aplicação

Crie gráficos

Crie macros

passos opcionais

 

EDS RJ - Regional Support Center - pág: 114

Page 115: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 115/121

 

Visual Basic - Programação

Codificação

O texto dos tópicos devem receber uma codificação especial para que apareçam para o

usuário com a aparência conhecida e para que os jumps e chamadas de janelas pop-

up funcionem.

Os códigos utilizados pelo help compiler são:

Código do controle Nome Propósito

# Context string Define um context

string que identifica

um tópico

univocamente.

O hipertexto trabalha

com “links”

fornecidos pelos

context strings,

tópicos sem context

string só serão

mostrados através

de palavras chave

ou em sequências

de browse.

$ Title Define o título de um

tópico. Títulos

aparecem na list

 box quando você

usa o recurso

“Search”. Títulos

são opcionais.

EDS RJ - Regional Support Center - pág: 115

Page 116: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 116/121

 

Visual Basic - Programação

Código do controle Nome Propósito

K  Keyword Define a palavra chavecom a qual o

usuário irá procurar 

 por um tópico.

(Recurso

“Search”). Palavras

chave são

opcionais.

=== Jump Indicam o texto que o

usuário pode

utilizar para ir para

outro tópi-co.

----- Defintion Define o texto asso-

ciado à um “ Pop-

up”.

texto oculto Context string Define o context string

do tópico que será

mostrado quando

um usuário

selecionar um texto

imediatamente

anterior a ele.

+ Browse sequence

number 

Define a sequência na

qual o usuário pode

navegar pelos

tópicos. Botões >>

, << utilizando

macros.

EDS RJ - Regional Support Center - pág: 116

Page 117: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 117/121

 

Visual Basic - Programação

Esses códigos devem ser escritos na Foot Note da página do tópico que está sendo

codificado ou logo após a(s) palavra(s) que definem um jump ou uma janela pop-up.

Exemplo - Criação de uma Contents Screen

#  $  K  Sistema de Fluxo de Caixa

Fluxo de Caixa

Manutenção 

Seleção 

Consulta 

Imprime 

Gráfico 

Lançamentos

Consulta 

Tabelas

Plano Orçamentário

Critério de distribuição de Contas a Receber  

Diversos

Parâmetros

♦ ♦ ♦ 

# SIS_FCX

$ Sistema de Fluxo de Caixa

K  Fluxo de Caixa;Lançamentos;Tabelas;Diversos;Previsões Iniciais

 

EDS RJ - Regional Support Center - pág: 117

Page 118: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 118/121

 

Visual Basic - Programação

Exemplo - Criação de um tópico

# $ K  Unidade

 A unidade representa o fator de divisão que o Fluxo de Caixa utiliza. Este fator é utilizado

independentemente da moeda escolhida para visualização dos valores.

• Alteração:

 A unidade utilizada pode ser alterada na opção Parâmetros. Seu valor máximo é

9.999.999.

 A unidade utilizada pode ser alterada temporariamente na tela de seleção, quando for 

solicitada uma consulta ou impressão de relatório.

♦ ♦ ♦ 

Exemplo - Criação de um janela pop-up

# $ Período

Informação do tipo mês/ano ou dia/mês/ano, no formato mm/aaaa ou dd/mm/aa.

# UNIDADE

$ Unidade

K Seleção;Consulta;Imprime;Parâmetros

# PERIODO

$ Período

 

EDS RJ - Regional Support Center - pág: 118

Page 119: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 119/121

 

Visual Basic - Programação

12. 7 Construindo o arquivo .HPJ e compilação

Conteúdo de um arquivo .HPJ:

[OPTIONS]

CONTENTS = SIS_IND ; context-string de

nível mais alto na

hierarquia do sistema

ERRORLOG = ERRHLP.LOG ; arquivo que contém

as mensagens de erro

da compilaçao do help

REPORT = ON ; mensagens na tela

durante a compilação

ROOT = G:\IND\FIS\HLP\DOC

TITLE = Indexadores Ajuda - IND.HLP ; título da

janela do help

WARNING = 3 ; nível das mensagens

de erro (3 = todas)

[FILES] ; arquivos (texto)

que constituem o help

HLP1.RTF

HLP11.RTF

HLP131.RTF

HLP132.RTF

POP_UP1.RTF

POP_UP2.RTF

EDS RJ - Regional Support Center - pág: 119

Page 120: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 120/121

 

Visual Basic - Programação

[MAP] ; relação context

string X context id

SIS_IND 1 ;ítens do menu

IND 2

DE_MOE 32 ; campos gerais do sistema

DE_SBL_MOE 33

IND_CD_MOE 31 ; campos com tratamento

específico

IND_PERIODO_CON 55

[WINDOWS]

main = ,,,,(192,192,192)

Compilação

A compilação deve ser feita em uma janela DOS no ambiente Windows. O seguinte

comando deve ser dado para que o help compiler seja executado:

< path do help compiler >HC31 < path do arquivo .hpj> arquivo.hpj

Exemplo1:

c:\windows\hc\hc31 callhelp.hpj

Exemplo2:

c:\windows\hc\hc31 c:\aplicacao\callhelp.hpj

EDS RJ - Regional Support Center - pág: 120

Page 121: Curso de Visual Basic

5/17/2018 Curso de Visual Basic - slidepdf.com

http://slidepdf.com/reader/full/curso-de-visual-basic-55b07d6883890 121/121

 

Visual Basic - Programação

12.8 Testando o help

Caso a compilação seja bem sucedida, o help deve ser testado. No teste do help

aconselhamos que sejam verificados os seguintes pontos:

se todos os jumps estão chamandos os tópicos corretos;

se todas as chamadas de janelas  pop-up estão chamando as janelas

corretas;

se todas as key words estão associadas aos tópicos corretos;

se todas os tópicos estão associadas às key words desejadas.

12.9 Preparando a aplicação para chamar o help

A aplicação pode chamar o help através da tecla F1, do menu da aplicação ou

implementando o help sensitivo. As três formas podem ser implementadas ao

mesmo tempo.

Quando o help for chamado a partir do menu, ele será sempre apresentado ao usuário a

 partir da content screen . Se ele for chamado de algum outro ponto da aplicação, o

tópico referente a este objeto será mostrado (context sensitive help). Para que isso

aconteça, a propriedade  HelpContextId  do objeto deve estar programada para

chamá-lo.

Programando o Help Sensitivo: 

A propriedade  HelpContextId deve ser preenchida com um valor numérico, este valor 

numérico deve ser associado, no arquivo .HPJ do help, ao context string do tópico a

ser chamado.

Definindo o arquivo de help da aplicação: 

Para definir o help de uma aplicação, basta informar o path e o nome do executável do

help na opção do menu Options / Project / Helpfile.

EDS RJ - Regional Support Center - pág: 121