VB6 - Arrastar e Soltar , é só começar...
Você já precisou arrastar elementos de um controle usando o mouse e movê-los para outro controle ? O exemplo clássico é mover elementos de um controle Listbox - Listbox1- para outro - Listbox2 - usando os eventos OLEDragDrop e OLeStartDrop
O evento OLEDragDrop ocorre quando um arrastamos um componente entre dois controles somente quando a propriedade OLEDropMode é definida com o valor 1 - Manual.
A sintaxe é a seguinte:
Private Sub object_OLEDragDrop(data As DataObject, effect As Long, button As Integer, shift As Integer, x As Single, y As Single)
Parte | Descrição | ||||||||||
Object | Um objeto ao qual o evento se aplica. | ||||||||||
Data | Um objeto DataObject que contém formatos que o componente origem irá fornecer. | ||||||||||
Effect | Um valor initeiro longo
definido pelo componente de destino que identifica a
ação que foi executada permitindo assim a origem tomar
a ação apropriada se o componente foi movido. Os
valores possíveis são:
|
||||||||||
Button | Um inteiro que indica o estado do campo bit do mouse quando foi pressionado. O botão esquerdo é 0 , o direito 1 e o do meio é 2. inn | ||||||||||
Shift | Um inteiro que indica o estado do campo bit para o estado das teclas shift, ctrl, e alt quando elas são soltas . | ||||||||||
x,y | Um numero que indica o localização atual do ponteiro do mouse. |
O evento OLEStartDrag ocorre quando o método OLEDrag do componente é executado ou quando uma operação OLE drag/drop ocorre.
Da teoria á prática
Chega de papo e vamos ao trabalho:
1- Inicie o Visual Basic e insira dois controles ListBox no formulário padrão. Vamos usar os nomes padrões dos controles : ListBox1 e ListBox2.
2- Nosso objetivo e arrastar elementos de um listbox e movê-los para o outro controle Listbox. O código será idêntico para os dois controles:
3-Código do evento Load do formulário : Vamos preencher o Listbox1 e definir as propriedades OLEDropMode de cada controle com valor igual a 1 - Manual.
Private Sub Form_Load() 'Preenche a lista List1.AddItem "Macoratti" List1.AddItem "Jefferson" List1.AddItem "Jessica" List1.AddItem "Janice" List1.AddItem "Miriam" List1.OLEDropMode = 1 List2.OLEDropMode = 1 End Sub |
4- Insira o código a seguir no evento MouseDown de Listbox1:
' codigo para gerenciar elementos da listbox1 para listbox2 Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) List1.OLEDrag ' inicia o arrasto End Sub |
5-Insira o código a seguir no evento OLEStartDrag de Listbox1:
Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long) ' Permite somente mover AllowedEffects = vbDropEffectMove ' atribui a selecao em listbox ao DataObject Data.SetData List1 End Sub |
6-Agora por último o evento OLEDragDrop de ListBox2 :
Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, _ Shift As Integer, X As Single, Y As Single) Dim strList As String ' verifica o formato de DataObject If Not Data.GetFormat(vbCFText) Then Exit Sub ' devolve o texto de DataObject strList = Data.GetData(vbCFText) ' se o item não arrastou a ele proprio If Not strList = List2.Text Then List2.AddItem strList 'Remove o item da listbox List1.RemoveItem List1.ListIndex End If End Sub |
A seguir o código que torna possível a mesma operação de ListBox2 para ListBox1:
Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) List2.OLEDrag ' inicia o arrasto End Sub Private Sub List2_OLEStartDrag(Data As DataObject, AllowedEffects As Long) AllowedEffects = vbDropEffectMove Data.SetData List2 End Sub Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer,_ Shift As Integer, X As Single, Y As Single) Dim strList As String ' verifica o formato de DataObject If Not Data.GetFormat(vbCFText) Then Exit Sub ' devolve o texto de DataObject strList = Data.GetData(vbCFText) If Not strList = List1.Text Then List1.AddItem strList 'Remove o item da listbox List2.RemoveItem List2.ListIndex End If End Sub |
Execute o projeto e veja o resultado: Agora e Drag and Drop...
Básico... 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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
TreeView - Arrastar e Soltar (Drag and Drop) - Macoratti.net