Buscar

curso de visual basic

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 121 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 121 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 121 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 2 
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 grupos 
de 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 quando 
estiver 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 
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 = 2 
 End Sub 
 
Valor da Propriedade Action Tipo da caixa de diálogo 
0 Não executa nenhuma ação. 
1 Abrir Arquivo 
2 Salvar Arquivo 
3 Escolher Cores 
4 Escolher Fonte 
5 Configurar Impressora 
6 Invocar o Ajuda do Windows 
EDS RJ - Regional Support Center - pág: 4 
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 ao 
diretó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 
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 List 
Box. 
Exemplo : 
 Sub Drive1_Change () 
 Dir1.Path = Drive1.drive 
 End Sub 
EDS RJ - Regional Support Center - pág: 6 
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 
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 
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ão 
de 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 
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 seo 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 
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 
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 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 14 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 16 
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 parte 
do 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 = 0 
 End 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 
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ção 
InStr 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 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 20 
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, e 
asoutras 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 
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 
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 
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 Then 
 Load TXBBuffer(indice) 
 TXBBuffer(indice).Top = TXBBuffer(indice - 1).Top + 1500 
 Load 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 = True 
 MNUCortar(indice).Visible = True 
 MNUColar(indice).Visible = True 
 
 MNUEditar.Enabled = True 
 
 indice = indice + 1 
 
 End If 
 
End Sub 
 
EDS RJ - Regional Support Center - pág: 24 
Visual Basic - Programação 
6. Adicionar as seguintes linhas de código ao click de MNUApagarBuffer : 
 
Sub MNUApagarBuffer_Click () 
 
 If indice > 1 Then 
 Unload TXBBuffer(indice - 1) 
 
 Unload MNUCopiar(indice - 1) 
 Unload MNUCortar(indice - 1) 
 Unload MNUColar(indice - 1) 
 
 indice = indice - 1 
 Else 
 If indice = 1 then 
 TXBBuffer(indice - 1).text = "" 
 TXBBuffer(indice - 1).visible = False 
 indice = 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.SelText 
 TXBOrigem.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.SelText 
 TXBOrigem.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).Text 
 TXBBuffer(index).Text = "" 
 
 End Sub 
 
EDS RJ - Regional Support Center - pág: 25 
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 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 28 
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 podem 
coexistir 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 
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 um 
formulá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.show 
 End 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 + 1 
 Me.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 menu 
conterá 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 
Visual Basic - Programação 
4.5 Menu Janela 
 
Na maioria das aplicações MDI existe um item de menu chamado Janela. Este item de 
menu, 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 
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 0 
Em blocos horizontais 1 
Em blocos verticais 2 
 
EDS RJ - Regional Support Center - pág: 32 
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 e 
Group 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 
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_Click 
 Picture1.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.show 
 End Sub 
8. Adicionar as seguintes linhas de código ao click de MNUBloco : 
 Sub MNUBloco 
 MDIForm1.Arrange 2 
 EndSub 
9. Executar a aplicação. 
 
5.0 Impressão 
 
Objetivo 
EDS RJ - Regional Support Center - pág: 34 
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 
Visual Basic - Programação 
Esta página foi deixada intencionalmente em branco. 
EDS RJ - Regional Support Center - pág: 36 
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étodos 
de impressão. 
 
5.2 Métodos de Impressão 
Print 
É utilizado para imprimir conjuntos de caracteres na impressora, em um formulário ou 
em 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 
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 
Visual Basic - Programação 
6.0 Crystal Report 
Objetivo 
Neste módulo será mostrada a ferramenta Crystal Report, que é o gerador de relatórios 
do 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 as 
tabelas 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
Campo
da Tabela
Texto
Fórmula
Somatório
Figura
Linha
Caixa
Janela
Arquivo
Impressora
Relatório Inserir ImprimirEdição
 
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 
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 
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, tipoe 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 
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 
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 
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 o 
campo 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 
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 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 48 
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 
Visual Basic - Programação 
7.2 Calls - Árvore de Chamada 
 
Disponível apenas em tempo de execução, estando o programa em Break Mode. Mostra 
a á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 
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 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 53 
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, o 
operador 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 
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. Este 
nú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 
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 Err 
 Case 71 
 MsgBox "Não existe disquete no drive. Coloque um e tente 
 novamente!" 
 Case 55 
 MsgBox "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 Select 
 Resume Next 
End Sub 
 
 
EDS RJ - Regional Support Center - pág: 56 
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 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 59 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 61 
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 
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 
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. PressioneF5 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 
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ção 
1 Automática 
2 Manual 
3 Notificada 
 
EDS RJ - Regional Support Center - pág: 65 
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 o 
conteú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 
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 = 0 
2. "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 
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 
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 
Visual Basic - Programação 
9.8 Método LinkExecute 
 
 
 
O método LinkExecute, aplicado sobre o controle destino de uma aplicação, executa um 
comando 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 
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 é diferente 
de 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 uma 
ligaçã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 ao 
sistema). 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 
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 dos 
nú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 Basic5. 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" e 
caption "Automática". 
 
EDS RJ - Regional Support Center - pág: 72 
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ês 
 Pic.LinkTopic = "Excel|source.xls Gráfico 1" 
Para Excel em Inglês 
 Pic.LinkTopic = "Excel|source.xls Chart 1" 
 
 Pic.LinkItem = "" 
 Pic.LinkTimeOut = 50 
 
 Txt.LinkMode = 0 
 Txt.LinkTopic = "Excel|source.xls" 
 
Para Excel em Português 
 Txt.LinkItem = "L1C1:L6C1" 
Para Excel em Inglês 
 Txt.LinkItem = "R1C1:R6C1" 
 
 Txt.LinkTimeout = 50 
 
 If OPTAutomat.value = true then 
 Pic.LinkMode = 1 
 Txt.LinkMode = 1 
 Else 
 Pic.LinkMode = 2 
 Txt.LinkMode = 2 
 CMDRequest.enabled = true 
 Endif 
 
 Frame.enabled = true 
 CMDConecta.enabled = false 
 
Codificando o Option Button "Automático" 
13. Associar ao evento Click deste botão as seguintes linhas de código : 
 CMDRequest.enabled = false 
 Pic.LinkMode = 0 
 Pic.LinkMode = 1 
 Txt.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 = true 
 Pic.LinkMode = 0 
EDS RJ - Regional Support Center - pág: 73 
 Pic.LinkMode = 2 
Visual Basic - Programação 
 Txt.LinkMode = 0 
 Txt.LinkMode = 2 
 
Codificando o botão "Request" 
15. Associar ao evento Click deste botão as seguintes linhas de código : 
 Txt.LinkRequest 
 Pic.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 
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 modo 
automá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" e 
caption "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 
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 = 2 
 OPTManual.value = true 
 
Codificando o Option Button "Automático" 
13. Associar ao evento Click deste botão as seguintes linhas de código : 
 CMDRequest.enabled = false 
 Txt.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 = true 
 Txt.LinkMode = 0 
 Txt.LinkMode = 2 
 
Codificando o Option Button "Notificação" 
15. Associar ao evento Click deste botão as seguintes linhas de código : 
 CMDRequest.enabled = true 
 Txt.LinkMode = 0 
 Txt.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 
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 
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ém 
criada.. 
4. Selecione formulário. 
5. Em sua propriedade LinkMode, digite o valor 1 (Source) e em sua propriedade 
LinkTopic, 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 ao 
executável recém criado. 
 
EDS RJ - Regional Support Center - pág: 78 
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" e 
caption "Notificar". 
EDS RJ - Regional Support Center - pág: 79 
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_Erro 
 Txt.LinkMode = 0 
 Txt.LinkTopic = "DDE_FNT|DDE_Form1" 
 Txt.LinkItem = "TXT_Fonte" 
 Txt.LinkMode = 1 
 Exit Sub 
 T_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 = false 
 Txt.LinkMode = 0 
 Txt.LinkMode = 1 
 
Codificando o Option Button "Manual" 
17. Associar ao evento Click deste botão as seguintes linhas de código : 
 CMDRequest.enabled = true 
 Txt.LinkMode = 0 
 Txt.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 = 0 
 Txt.LinkMode = 3 
 
Codificandoo 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 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 82 
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 ele 
deseja incorporar um objeto ou vincular o OLE a um objeto externo, etc.. 
EDS RJ - Regional Support Center - pág: 83 
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 
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 
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 na 
figuras não foram armazenadas. 
Se Houver Tempo ... 
11. Crie um objeto "ligado" ( não incorporado ). Faça alterações nele e veja como ele 
reage. 
EDS RJ - Regional Support Center - pág: 86 
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 
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 incorporado 
1 Cria um objeto Ligado 
4 Copia o objeto para o ClipBoard 
5 Copia objeto do ClipBoard 
6 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álogoPaste Special. 
18 Salva um objeto incorporado para um arquivo no 
formato OLE. 
EDS RJ - Regional Support Center - pág: 88 
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 
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 
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 
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 
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 PaintBrush 
 If 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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 94 
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 
Visual Basic - Programação 
Esta página foi deixada em branco intencionalmente. 
EDS RJ - Regional Support Center - pág: 96 
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 
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 as 
 integer, 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

Continue navegando