 VB6 - Arrastar e Soltar
, é só começar...
 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 Facebook
  
 Compartilhe no Twitter
 
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