Arrastar-e-Soltar

Novidades

Acima
ListBox
Eventos
Wallpaper
Atalhos
Arrastar-e-Soltar














































































 

Neste artigo você aprenderá um recurso que possibilita ao usuário trocar dados entre aplicativos. Isso só é possível, por causa de uma tecnologia denominada OLE. Além de trocar dados, ela também permite ao usuário arrastar e soltar controles e ícones em novas posições, realizando operações variadas.

Existem dois mecanismos de Drag-And-Drop: o convencional e o baseado na tecnologia OLE (Object Linking and Embedding), vinculação e incorporação de objetos.

O primeiro movimenta controles dentro da aplicação em tempo de execução. Você ao arrastar o controle de um lugar para outro ou mover uma sombra do controle de uma área para outra, fazendo simular a troca de dados entre diferentes partes de um mesmo aplicativo. Já o segundo, você criará aplicações servidoras, capazes não apenas de receber, mas também transferir dados para outras aplicações, isso é possível, devido a um movimento chamado Drag-And-Drop. Um exemplo desse movimento, temos: o mover de um documento no formato RTF criado em sua aplicação, para outro que suporte o mesmo formato.

Visão geral do OLE Drag-And-Drop

        A tecnologia OLE possui uma visão orientada a documento, e não a aplicações. A idéia dessa tecnologia é criar documentos para cumprir uma ou mais tarefas. Ela foi criada para resolver tarefas de grande complexidade com um mínimo de esforço por parte do usuário.
Para conhecê-lo melhor observe a tabela abaixo, com propriedades, eventos e métodos, e veja se os controles que você adicionar em seus projetos possuem os mesmos:



Categoria Operação Descrição
Propriedades OLEDragMode Habilita o tipo de operação OLE drag-and-drop, se
automático (sem intervenção do programador) ou
automático (via comandos).
OLEDropMode Determina como um controle responderá a uma
operação de soltar um objeto sobre ele.
Eventos OLEDragDrop Gerado quando um objeto é solto sobre um controle.
OLEDragOver Gerado quando um objeto é arrastado sobre um controle.
OLEGiveFeedback Gerado quando é necessário retornar uma informação
visual ao usuário após uma operação de drag-and-drop.
Métodos OLEStartDrag Gerado quando se inicia uma operação de drag-and-drop.
OLESetData Gerado quando um objeto é solto sobre um controle.
OLECompleteDrag Gerado quando uma operação drag-and-drop é finalizada.
OLEDrag Inicia uma operação manual de drag-and-drop.


Existem dois meios de realizar operações de drag-and-drop: a manual, sob o controle do programador e o automático, onde é alterado o valor da propriedade OLEDragMode para 1 (Automatic) e o Visual Basic cuida do restante dos detalhes.

Agora vamos a um exemplo prático de um drag-and-drop automático:

Abra o Visual Basic e insira no formulário o componente RichTextBox, se ele não estiver na palheta de componentes, tecle as teclas CTRL+T para poder abrir a janela de componentes e adicionar o componente a sua palheta. Marque a opção Microsoft Rich TextBox Control 5.0 e clique em Ok.


Após a inclusão do componente, clique duas vezes no controle para poder inserir o mesmo no formulário. E percorra a lista de propriedades e altere o valor de OLEDragMode para 1 (rtfOLEDragAutomatic).

Antes de mais nada insira o seguinte código no evento Load do formulário, para que o RichTextBox tenha sempre o mesmo tamanho do formulário:

RichTextBox1.Left = 0
RichTextBox1.Top = 0
RichTextBox1.Width = ScaleWidth
RichTextBox1.Height = ScaleHeight

Iremos fazer o mesmo no evento Resize do formulário:

RichTextBox1.Left = 0
RichTextBox1.Top = 0
RichTextBox1.Width = ScaleWidth
RichTextBox1.Height = ScaleHeight

Para uma melhor apresentação de seu aplicativo, altere as seguintes propriedades do controle RichTextBox: Scrollbars para 2 (rtfVertical) e RightMargin para qualquer valor diferente de zero. De modo a permitir uma barra de rolagem de texto vertical sempre que o texto atingir o limite da janela.

Artigo extraído de
VBMAGAZINE

 
AF Sistemas
(c) 1998 - 2005  Adriano Freitas
Dúvidas e sugestões sobre este site, escreva para:

suporte@afsistemas.cjb.net