MOVER REGISTROS EM UM LISTVIEW

EMANUEL 25/09/2014 08:27:45
#441495
Pessoa, bom dia!
Tenho um Listview onde carrego as seguintes informações do banco de dados

Codigo Nome Data
10 Marcos 15/08/2014
20 Amanda 16/08/2014
30 Marcelo 17/09/2014

Como eu poderia fazer para mover o 3o Registro para o 2o, por exemplo, e o segundo ficaria sendo o terceiro.
Pode ser ate dois botoes, onde eu selecione o registro (check) que quero mover, clico no botao para cima ou para baixo

Codigo Nome Data
10 Marcos 15/08/2014
30 Marcelo 17/09/2014
20 Amanda 16/08/2014

ou seja, poder navegar para cima e para baixo com qualquer registro, e ter o controle do registro movimentado..

Desde ja agradeço a atenção,
1 abraço
Emanuel
FFCOUTO 25/09/2014 13:26:23
#441503
Resposta escolhida
Função para mover o item da ListView para cima
Sub MoverItemCima(lvw As ListView)
On Local Error Resume Next
Dim nItem As Integer, xItem As ListItem

With lvw
If .SelectedItem.Index < 1 Then Exit Sub
nItem = .SelectedItem.Index
Set xItem = .SelectedItem
If nItem = 1 Then Exit Sub [ô]can[ô]t move 1st item up

[ô]move item up
.ListItems.add nItem - 1
.ListItems(nItem - 1).Tag = xItem.Tag
.ListItems(nItem - 1).Text = xItem.Text
.ListItems(nItem - 1).SubItems(1) = xItem.SubItems(1)
[ô]é necessário repetir para cada subitem da lista

[ô]remove old item
.ListItems.Remove nItem + 1

[ô]select the item that was just moved
.ListItems(nItem - 1).Selected = True
.Refresh
End With
End Sub


Função para mover o item da ListView para baixo
Sub MoverItemBaixo(lvw As ListView)
On Local Error Resume Next
Dim nItem As Integer, xItem As ListItem

With lvw
If .SelectedItem.Index < 1 Then Exit Sub
nItem = .SelectedItem.Index
Set xItem = .SelectedItem
If nItem = .ListItems.Count Then Exit Sub [ô]can[ô]t move last item down

[ô]move item down
.ListItems.add nItem + 2
.ListItems(nItem + 2).Tag = xItem.Tag
.ListItems(nItem + 2).Text = xItem.Text
.ListItems(nItem + 2).SubItems(1)= xItem.SubItems(1)
[ô]é necessário repetir para cada subitem da lista

[ô]remove old item
.ListItems.Remove nItem

[ô]select the item that was just moved
.ListItems(nItem + 1).Selected = True
.Refresh
End With
End Sub


Para chamar as funções
Private Sub cmdMoverCima_Click()
MoverItemCima ListView1
End Sub

Private Sub cmdMoverBaixo_Click()
MoverItemBaixo ListView1
End Sub

EMANUEL 26/09/2014 09:09:35
#441519
Bom dia amigo Fabiano!
Vou da uma analisada e testar, darei um retorno em breve.

Obrigado pela atenção
Emanuel
EMANUEL 28/09/2014 15:47:20
#441579
Caro Fabiano,
Obrigado mais uma vez!
Seu código resolveu meu problema! ficou perfeito.

1 abraço!
Tópico encerrado , respostas não são mais permitidas