Bom dia pessoal, criei um listview para fazer a transferencia selecionando do listview através de cliques para os textbox, ou seja, é possivel clicando em uma linha ele enviar para os textbox e etc...mas algo que preciso é se há possibilidade de que quando eu utilizo as setas do teclado no listview entre as linhas ele também faça esta copia para os textbox's e não somente quando clicar??
Este é o código de quando eu clico ele copia para os textbox.
Private Sub ListView1_click()
Dim linha, Index
'linha = ListView1.ListItems(Index).ListSubItems(4).Text 'linha da plan
Index = (ListView1.SelectedItem.Index) 'linha do ListView
Me.TextBox1.Value = ListView1.ListItems(Index) '1ª coluna do ListView
'2ª coluna do ListView
Me.TextBox2.Value = ListView1.ListItems(Index).ListSubItems(1).Text
'3ª coluna do ListView
Me.TextBox3.Value = ListView1.ListItems(Index).ListSubItems(2).Text
'4ª coluna do ListView
Me.TextBox4.Value = ListView1.ListItems(Index).ListSubItems(3).Text
'Me.TextBox1.SetFocus
End Sub
Agradeço a atenção de todos.
Editado pela última vez por Rafa - Info em Sex Mar 04, 2011 8:45 am, em um total de 1 vez.
Desculpe-me mas cantei vitória antes da hora, testando melhor verifiquei que os dados carregados para os TextBox's são sempre da seleção anterior, como bem havia verificado o nosso amigo Rafa.
Bom, pelo menos há um caminho percorrido, seguiremos...
Parabéns pela solução. Só não entendí como conseguistes "driblar" o fato de os dados carregados para os TextBox's serem sempre da seleção anterior e quando acessa o 1º ou último registro dava erro.
Segue uma alternativa (consegui "driblar" também os erros), verifique uma outra maneira de selecionar a 1ª linha no anexo e aqui uma maneira de selecionar a última linha.
' exemplo, para seleccionar e ver a última linha de um ListView.
ListView1.ListItems(ListView1.ListItems.Count).EnsureVisible
ListView1.ListItems(ListView1.ListItems.Count).Selected = True
ListView1.SetFocus
Pessoal, vocês não vão acreditar, hoje desde cedo estava suando a camisa literalmente, ficando louco com esta questão e joseA, vocês não vão acreditar que tive o mesmo raciocinio do + 1 e -1.
Segue o arquivo que fiz, colocando dentro do parênteses do index.....
Mas o do Mauro ficou show !!! Eu tentei colocar desta forma que ele fez mas não estava me entendendo com o "selected".
Pelo que eu entendi, ali foi crucial a condição For e no If indicando a linha selecionada.
Nem acessei a net hoje, minha esposa que viu inclusive agora pouco e entrei para postar.
Ficou 100% galera. Bom d++ o resultado.
Baixem o arquivo que estou disponibilizando tb, foi meio um remendo mas funcionou igual o do Mauro, claro que o do Mauro é o mais correto. Depois fazem uma limpeza nele....deixei vários testes que fiz nestes dias.....
Mauro outro detalhe legal para o listview ficar sem a possibilidade de manipulação dentro dele é retirando o LabelEdit deixe Manual, assim quando se clicar em qualquer linha da primeira coluna (4 cliques pelo teste que fiz ou um clique direto na primeira linha da primeira coluna) ele não abre para edição.
Na verdade não entendi o que o Mauro fez para que ele não pegasse a seleção anterior, apesar de estar meio cansado, revendo aqui parece que o keydown dele está igual o meu...
Antes de mais nada, agradeço as considerações, mas como eu já citei anteriormente, sem o "ponta pé incial" de vocês, provavelmente eu não teria conseguido, dei uma olhada rápida nos novos anexos e estão show de bola tambem, por isso que adoro VBA, ele nos permite chegar a um único resultado por diversas formas, e é como dizem "A ordem dos fatores, não altera o produto", acho que é isso, nem me lembro mais aonde escutei isso, rsrsrsrs.
Quanto a rotina no Evento KeyDown, o Rafa está com a razão, não foi alterado nadinha, só fiz uma limpa na mesma, alias essa é uma das primeiras coisa que costumo fazer, analizar se tem referencias e controles não declarados ou desabilitados e ir eliminando, fica mais fácil de percorrer a mesma e entender o que está se fazendo.
Quanto ao meu anexo, algumas das alterações foram :
Primeiro eu tirei todas as linhas que davam o Focu ao TextBox1,
Eliminei a rotina Private Sub ListView1_click()
Readequei a Rotina Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Criei uma nova rotina - Sub PrimeiroItem() - para forçar a Seleção do Primeiro Item ao iniciar o Formulário, e coloquei a chamada para a mesma na rotina Sub PreencherListView(), assim ao ser selecionado o item os TextBox são preenchidos ao iniciar o Formulário, não tendo a necessidade de se clicar antes em algum Item.
Basicamente, foi isto, alem de eliminar todas as rotinas e linhas desnecessárias, e uma coisa que não consegui acertar, mas isto vai ficar para uma outra oportunidade, e vou deixar vocês quebrando a cabeça por mim é a questão de realçar com formatação os itens selecionados igual a versão original.
Por hora é só, assim que der dou uma olhada mais detalhada nos novos anexos, e mais uma vez, parabens aos colegas pelo esforço e dedicação tambem, é essa força de vontade que nos motiva a ir sempre alem das nossas possibilidades e fazer deste Forum um dos melhores atualmente.