Visual Basic 6 - Usando a área de transferência (ClipBoard)

A área de transferência do Windows permite que você troque informações ( textos , gráficos, etc...) entre aplicativos Windows ( vide operação : recortar/copiar/colar e arrastar e soltar).

O VB possui métodos que permitem a você trabalhar com a área de transferência do Windows em sua aplicação VB.

Os métodos mais usados para trabalhar com o ClipBoard (área de transferência) são : SetText e GetText. Estes dois métodos transferem dados no formato string para o clipboard.

- SetText : copia o texto para o ClipBoard (substitui o texto existente). A sintaxe é :

Clipboard.SetText data[, format]

Parte Descrição
 
data Os dados que serão transferidos para o ClipBoard.
Format Uma constante que define um dos formatos reconhecidos pelo VB.

- GetText : Retorna o texto armazenado no ClipBoard.(O texto ainda continua no ClibBoard). A sintaxe é :

destino = Clipboard.GetText()

As definições para a constante Format são : ( valem para SetText e GetText)
Constante Valor Descrição
vbCFLink &HBF00 usado com DDE
vbCFText 1 (Padrão) Texto
vbCFRTF &HBF01 (arquivo .rtf )Rich Text Format

Obs: Para limpar a área de transferência usamos o método Clear : Ex - ClipBoard.Clear.

Outro método que pode ser usado em conjunto com os métodos acima descritos é GetFormat. Este método retorna um inteiro que indica se um item presente no ClipBoard coincide com um formato especificado. A sintaxe usada é :

object.GetFormat (format)

Onde temos:

Parte Descrição
object O objeto a que o formato se refere.
format Um valor ou constante que especifica o formato do objeto no ClipBoard. (Veja a seguir so valores possiveis).

Os valores possiveis para format são :

Constante Valor Descrição
vbCFLink &HBF00 DDE (informação de conexão)
vbCFText 1 Texto
vbCFBitmap 2 Bitmap (.bmp files)
vbCFMetafile 3 Metafile (.wmf files)
vbCFDIB 8 Device-independent bitmap (DIB)
vbCFPalette 9 Color palette

O método GetFormat retorna True se o item no ClipBoard coincidir com um dos valores definidos em format, caso contrário ele retorna False.

Combinando os dois métodos com as propriedades para selecionar textos podemos facilmente Copiar , Recortar e Colar. Vejamos :

1 - Inicie um novo projeto no VB e no formulário padrão insira um botão de comando e uma caixa de texto , conforme o layout abaixo:

2- Insira o código abaixo no evento Click do botão de comando - command1 :

Private Sub Command1_Click()

Dim I As Integer
Dim Msg As String, temp As String

On Error Resume Next 

Msg = "Digite qualquer texto ...."

Text1.Text = InputBox(Msg)   ' o texto informado

Msg = "Escolha OK para copiar o conteúdo da Caixa de Texto " & vbCrLf & vbCrLf
Msg = Msg & "para a Área de Transferência."

MsgBox Msg ' mostra mensagem

Clipboard.Clear ' limpa o ClibBoard
Clipboard.SetText Text1.Text ' Poe o texto no ClipBoard

If Clipboard.GetFormat(vbCFText) Then

   Text1.Text = "" ' limpa a caixa de texto

   Msg = "O texto agora esta no Clipboard. Clique em OK " & vbCrLf & vbCrLf
   Msg = Msg & "para copiar o texto do ClipBoard " & vbCrLf
   Msg = Msg & "para a Caixa de Texto " & vbCrLf & vbCrLf
   Msg = Msg & "Obs: O texto será invertido !"
   MsgBox Msg ' exibe a mensagem

   temp = Clipboard.GetText(vbCFText) ' pega o texto do clipboard
 
   For I = Len(temp) To 1 Step -1 ' inverte o texto
     Text1.Text = Text1.Text & Mid(temp, I, 1)
   Next I

Else

  Msg = "Não há nenhum texto na área de transferência."
  MsgBox Msg 'exibe a mensagem de erro

End If
End Sub

Ao executar o projeto teremos a sequencia de telas conforme abaixo:

Tela inicial do exemplo O usuário informa o texto
O texto é copiado para a caixa de texto O texto é copiado para a área de transferência

Até agora trabalhamos com texto no ClipBoard . E se quisermos trabalhar com imagens gráficas ?

O método GetData retorna um gráfico do objeto ClipBoard. A sintaxe é :

object.GetData (format)

Onde temos:

Parte Descrição
object O objeto a que o formato se refere.
format Uma constante ou valor que define o formato gráfico do item no Clipboard . Se o o valor de format for igual a 0 ou omitido , GetData usa o formato apropriado.

Os valores para format são:

Constante Valor Descrição
vbCFBitmap 2 Bitmap (.bmp files)
vbCFMetafile 3 Metafile (.wmf files)
vbCFDIB 8 Device-independent bitmap (DIB)
vbCFPalette 9 Color palette

Se nenhum gráfico no ClipBoard coincidir com um dos formatos especificados , o retorno será nada.

Para por um gráfico no ClipBoard usamos o método SetData. A sintaxe é :

object.SetData data, format

onde data é o objeto gráfico e format um valor que indica o formato da imagem gráfica. Os valores possíveis são:

Constante Valor Descrição
vbCFBitmap 2 Bitmap (.bmp files)
vbCFMetafile 3 Metafile (.wmf files)
vbCFDIB 8 Device-independent bitmap (DIB)
vbCFPalette 9 Color palette

Vamos mostrar um exemplo que trabalhe com gráficos no ClipBoard:

1 - Inicie um novo projeto no VB e no formulário padrão insira um botão de comando , conforme o layout abaixo:

2- Insira o código abaixo no evento Click do botão de comando - command1 :

Private Sub Command2_Click()

Const CF_BITMAP = 2  ' Define o formato bitmap
Dim Msg As String    ' Declara a variavel
On Error Resume Next ' trata os erros continuando a execução

Msg = "Clique em Ok para carregar um bitmap para o Clipboard."
MsgBox Msg           ' Exibe a mensagem

Clipboard.Clear      ' Limpa o Clipboard.
Clipboard.SetData LoadPicture("c:\teste\teste.bmp") ' Obtem o bitmap.

If Err Then
   Msg = "Não achei o arquivo .bmp ."
   MsgBox Msg             ' exibe mensagem de erro
   Exit Sub
End If

Msg = "Um bitmap esta agora no Clipboard. Escolha OK para copiar "
Msg = Msg & "o bitmap do Clipboard para o formulário"
MsgBox Msg           ' exibe mensagem de erro

Picture = Clipboard.GetData() ' Copia a partir do Clipboard.

Msg = "Clique em OK para limpar o formulário."
MsgBox Msg

Picture = LoadPicture() ' limpa o formulario

End Sub

Ao executar o projeto a sequência de telas obtidas é a seguinte:

Só isto... Até mais...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti