PROBLEMINHA PARA LÓGICA

POCE1DON 06/07/2016 11:29:43
#464545
Não consigo encontrar a lógica para isso.



Estou tentando fazer o Label indicado se movimentar conforme o [Ô]selectedIiem.index[Ô] do listview.
Enquanto vai sequenciando do 1º ao último, é sem problemas, mas ao retornar, não consigo encontrar
a lógica.
http://www.filedropper.com/label
Aqui está um [Ô]projetinho[Ô] exemplo pra vc ver como tentei fazer e não deu certo.

Pode me ajudar?

Obrigado!
JUVENALBIA 06/07/2016 12:43:43
#464550
Parece meio complicado porque quando está no meio
da lista não há como saber se você rolou e deixou o item
selecionado no topo ou se está no final ou mesmo no meio.
POCE1DON 06/07/2016 12:48:24
#464551
Pois é JUVENALBIA, não estou conseguindo montar a lógica pra levar em consideração essas index selecionadas da 8ª à última.
Estou tentando montar uma Array dentro de um Laço pra fazer essa verificação de posição, mas até agora nada.
JABA 06/07/2016 15:10:26
#464560
Resposta escolhida
Substitua por isso:

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

Label1.Top = Item.Top + 300

End Sub
POCE1DON 06/07/2016 15:43:03
#464564
Essa não é a solução JABA


Se fizer isso, como há o limite de altura do Listview, o label vai sumir do form quando passar
do limite de 7 itens visíveis
Eu preciso que o label seja alinhado com o item selecionado
JABA 06/07/2016 16:02:17
#464566
Não vai não, eu já fiz os testes. Faça o teste você mesmo e veja que está funcionando conforme você deseja.
POCE1DON 06/07/2016 17:22:23
#464570
Citação:

:
Não vai não, eu já fiz os testes. Faça o teste você mesmo e veja que está funcionando conforme você deseja.




Obrigado JABA, deu certinho aqui.

Só incrementei isso

If Label1.Top > 1800 Then Label1.Top = 1800
If Label1.Top < 530 Then Label1.Top = 540


para manter o label na posição correta

Obrigado amigo!
JABA 06/07/2016 17:41:21
#464571
Isso acontece porque só estamos tratando a parte referente ao click do mouse. Faça no evento KeyUp e veja se vai:

Private Sub ListView1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 38 Or KeyCode = 40 Then
Label1.Top = ListView1.SelectedItem.Top + 300
End If
End Sub


Tópico encerrado , respostas não são mais permitidas