Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Controle ListView
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Sex Jun 18, 2010 4:06 pm
- joseA
- Jedi
- Mensagens: 1048
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Re: Controle ListView
Confirme se é isso.
Obs.: Implementei com FrmAuxiliar, visto que vc adicionou uma plan Auxiliar.
Obs.: Implementei com FrmAuxiliar, visto que vc adicionou uma plan Auxiliar.
- Anexos
-
- ControleListViewDarci.v5.rar
- (33.22 KiB) Baixado 716 vezes
Re: Controle ListView
Olá a Todos,
Chegou minha vez de ressuscitar esse Tópico.
Como já havia comentado com o José (Fera) estou mudando meus Listbox para Listview. Porém como estou aprendendo ainda surge algumas dúvidas e que creio serem cruciais para continuar a mudança:
- É possível proibir qualquer tipo de alteração dentro do LIstview ?
Por exemplo: Eu posso clicar dentro do Listview e mudar manualmente um dado, e até mesmo aumentar ou diminuir o tamanho de uma coluna, é possível travar isso ?
Obs: Mudando a propriedade Enabled para FALSE isso ocorre porém o Listview ficaria praticamente igual ao LISTBOX, então não seria funcional. Utilizando a propriedade Hot Tracking do Listview também é possível proibir a edição dos dados, porém só de passar o mouse em cima, ele já muda de linha, além de não evitar a possibilidade de alterar o tamanho das colunas. Resumindo, ambas as possibilidades já foram tentadas e não atenderam minhas necessidades.
- É possível fazer com que o Listview receba os dados colocando sempre o último item digitado na primeira linha, e não ordenando em ordem do maior para o menor e vice-versa ?
EM TEMPO...
No Listbox eu utilizo um FIND para procurar os dados similares na planilha e fazer uma soma ou subtração. Utilizando as propriedades COUNT e LIST do Listbox, ficando assim:
Qual seria as propriedades semelhante do Listview ? Tentei a propriedade ListItems e nao deu certo. Qual então seria o meio correto de fazer o que hoje no Listbox pelo Listview ?
Obrigado a todos e um ótimo feriadão !!!
Chegou minha vez de ressuscitar esse Tópico.
Como já havia comentado com o José (Fera) estou mudando meus Listbox para Listview. Porém como estou aprendendo ainda surge algumas dúvidas e que creio serem cruciais para continuar a mudança:
- É possível proibir qualquer tipo de alteração dentro do LIstview ?
Por exemplo: Eu posso clicar dentro do Listview e mudar manualmente um dado, e até mesmo aumentar ou diminuir o tamanho de uma coluna, é possível travar isso ?
Obs: Mudando a propriedade Enabled para FALSE isso ocorre porém o Listview ficaria praticamente igual ao LISTBOX, então não seria funcional. Utilizando a propriedade Hot Tracking do Listview também é possível proibir a edição dos dados, porém só de passar o mouse em cima, ele já muda de linha, além de não evitar a possibilidade de alterar o tamanho das colunas. Resumindo, ambas as possibilidades já foram tentadas e não atenderam minhas necessidades.
- É possível fazer com que o Listview receba os dados colocando sempre o último item digitado na primeira linha, e não ordenando em ordem do maior para o menor e vice-versa ?
EM TEMPO...
No Listbox eu utilizo um FIND para procurar os dados similares na planilha e fazer uma soma ou subtração. Utilizando as propriedades COUNT e LIST do Listbox, ficando assim:
Código: Selecionar todos
For Y = 0 To ListBox1.ListCount - 1
Set r = Sheets("BDCQE").Range("C2:C5000").Find(What:=Val(ListBox1.List(Y, 0)), After:=Sheets("BDCQE").Range("C2"), LookIn:=xlValues, LOOKAT _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Not r Is Nothing Then
Sheets("BDCQE").Range("E" & r.Row) = Sheets("BDCQE").Range("E" & r.Row) - ListBox1.List(Y, 2)
End If
Next
Obrigado a todos e um ótimo feriadão !!!
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Controle ListView
Guima, quanto a primeira questão, não tenho certeza, mas acredito que só ordenando os dados na planilha e recarregando o ListView, assim que possível faço umas pesquisas para confirmar, enquanto isso vamos aguardar o que o José tem a dizer.
Quanto a segunda questão, eu ia postar nas Dicas um exemplo que baixei do outro forun que participo (Yahoo), referente a Edição e Alteração atraves de ListView, achei um ótimo exemplo e acredito que com algumas adaptações resolverá sua questão de Pesquisar pelo ListView, esse modelo permite que você escolha antes em qual coluna se encontra o dado que quer Editar e Alterar, e após a confirmação é alterado tanto no Listview como na planilha e para isso tem a rotina de pesquisa que como eu disse é só adaptar para seu uso.
Veja se ajuda.
[]s
Quanto a segunda questão, eu ia postar nas Dicas um exemplo que baixei do outro forun que participo (Yahoo), referente a Edição e Alteração atraves de ListView, achei um ótimo exemplo e acredito que com algumas adaptações resolverá sua questão de Pesquisar pelo ListView, esse modelo permite que você escolha antes em qual coluna se encontra o dado que quer Editar e Alterar, e após a confirmação é alterado tanto no Listview como na planilha e para isso tem a rotina de pesquisa que como eu disse é só adaptar para seu uso.
Veja se ajuda.
[]s
- Anexos
-
- ListView - Editar itens.rar
- Editar / Alterar Itens ListView
- (17.04 KiB) Baixado 778 vezes
Re: Controle ListView
Boa noite Mauro,
Como sempre aparece você, sempre solícito e disposto a ajudar...
Bom, em relação a sua primeira resposta ainda também não consegui nenhuma resposta diferente da que você sugeriu, mas que não servirá no meu caso. E olha que já revirei o google atrás de uma solução, como você disse, o jeito é esperar o José. Ele tem usado bastante o Listview, talvez tenha alguma outra alternativa.
Em relação a questão da edição, creio que não me fiz entender. O que necessito não é de uma rotina para fazer edição, quanto a isso até tenho uns exemplos do próprio Jose. O que gostaria de saber é se possível impossibilitar que seja alterado o tamanho das colunas, pois uma vez que selecione uma delas com o mouse é permitido alterar a largura delas, gostaria de impedir isso.
Porém a questão que mais está me fazendo arrancar meus poucos cabelos é reproduzir a rotina que usava com o LISTBOX e que postei no post anterior. Já fuçei o google inteiro e nada. Cheguei numa rotina que considero proxima, porém apesar disso, não subtrai depois o valor final. Veja só a rotina comentada:
É isso.... não sei deu pra entender, mas o que era simples no Listbox virou uma confusão no Listview. Tomara que consiga encontrar uma solução. Abraço e obrigado Mauro
Como sempre aparece você, sempre solícito e disposto a ajudar...
Bom, em relação a sua primeira resposta ainda também não consegui nenhuma resposta diferente da que você sugeriu, mas que não servirá no meu caso. E olha que já revirei o google atrás de uma solução, como você disse, o jeito é esperar o José. Ele tem usado bastante o Listview, talvez tenha alguma outra alternativa.
Em relação a questão da edição, creio que não me fiz entender. O que necessito não é de uma rotina para fazer edição, quanto a isso até tenho uns exemplos do próprio Jose. O que gostaria de saber é se possível impossibilitar que seja alterado o tamanho das colunas, pois uma vez que selecione uma delas com o mouse é permitido alterar a largura delas, gostaria de impedir isso.
Porém a questão que mais está me fazendo arrancar meus poucos cabelos é reproduzir a rotina que usava com o LISTBOX e que postei no post anterior. Já fuçei o google inteiro e nada. Cheguei numa rotina que considero proxima, porém apesar disso, não subtrai depois o valor final. Veja só a rotina comentada:
Código: Selecionar todos
' Rotina que pega os valores que constam no Listview e procura na planilha valor semelhante e subtrai o valor do LIstview pelo da planilha
For Y = 1 To LISTA.ListItems.Count
Set r = Sheets("BDCQE").Range("C2:C5000").Find(What:=Val(LISTA.ListItems(Y).SubItems(1)), After:=Sheets("BDCQE").Range("C2"), LookIn:=xlValues, LOOKAT _'procura na planilha BDCQE na coluna C um valor que seja igual ao valor da linha 1, coluna 1 do LIstview
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Not r Is Nothing Then
Sheets("BDCQE").Range("E" & r.Row) = Sheets("BDCQE").Range("E" & r.Row) - (LISTA.ListItems(Y).SubItems(3)) ' caso encontre irá subtrair o valor da linha 1 e coluna 3 do Listview pelo valor que consta na planilha. Ex. Caso tenha 10 na planilha e 2 no Listview irá efetuar a operação de subtração 10 - 2
End If
Next 'repete a operação nas próximas linhas do Listview
É isso.... não sei deu pra entender, mas o que era simples no Listbox virou uma confusão no Listview. Tomara que consiga encontrar uma solução. Abraço e obrigado Mauro
- joseA
- Jedi
- Mensagens: 1048
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Re: Controle ListView
Boa tarde,
Em tempo...
Desculpem-me se estou escrevendo e editando depois é que o micro aqui está caindo o tempo todo, senão perco o que digito.
Aqui tem um:
viewtopic.php?f=2&t=344&start=10
Mauro tu andastes para achar esse exemplo, foi criado por mim, está na 1ª página desse tópico viewtopic.php?f=6&t=233&start=0, acho que no 6º post EditarItensListView.rar.Mauro Coutinho escreveu:...eu ia postar nas Dicas um exemplo que baixei do outro forun que participo (Yahoo), referente a Edição e Alteração atraves de ListView, achei um ótimo exemplo e acredito que com algumas adaptações resolverá sua questão de Pesquisar pelo ListView, esse modelo permite que você escolha antes em qual coluna se encontra o dado que quer Editar e Alterar, e após a confirmação é alterado tanto no Listview como na planilha e para isso tem a rotina de pesquisa que como eu disse é só adaptar para seu uso...
Em tempo...
Desculpem-me se estou escrevendo e editando depois é que o micro aqui está caindo o tempo todo, senão perco o que digito.
Quanto a essa questão, se for carregar os dados para o controle na mesma ordem da planilha e não invertido, temos vários exemplos no fórum.Mauro Coutinho escreveu:... não tenho certeza, mas acredito que só ordenando os dados na planilha e recarregando o ListView...
Aqui tem um:
viewtopic.php?f=2&t=344&start=10
Re: Controle ListView
Olá José,
NO meu post anterior eu "comi" uma palavra na hora de escrever e que faz toda a diferença. Quero proibir a alteração da largura das COLUNAS, pois sobre a edição dos dados já havia conseguido através de seus exemplos.
A única dúvida que ainda permanece é referente a questão do FIND. Já pude perceber lendo alguns códigos em diversos fórum, que o LIstview tem o FINDITEM. Porém ele busca no LISTVIEW um valor igual ao que esteja num TEXTBOX ou na planilha. A minha necessidade é diferente. Preciso adaptar minha rotina que já funcionava com o LISTBOX para o LISTVIEW.
O código acima faz o seguinte: Procura o valor da primeira COLUNA do LISTBOX na planilha BDCQE, de C2 até C5000, uma vez encontrado esse valor será subtraido o valor da COLUNA 3 da mesma linha do LISTBOX menos o valor respectivo na planilha BDCQE na coluna E. Depois há um loop repetindo a operação em cada linha do LISTBOX
Tentei algo simples, alterando apenas o Listbox.LIST(Y,0) por LISTA.ListItems(Y).SubItems(1). Porém apesar de não haver nenhum erro, a rotina não funciona. Segue ela completa abaixo:
Obrigado José e a todos que puderem colaborar
NO meu post anterior eu "comi" uma palavra na hora de escrever e que faz toda a diferença. Quero proibir a alteração da largura das COLUNAS, pois sobre a edição dos dados já havia conseguido através de seus exemplos.
Sobre a questão de carregamento dos dados também já consegui uma solução razoável.Mauro Coutinho escreveu:
... não tenho certeza, mas acredito que só ordenando os dados na planilha e recarregando o ListView...
Quanto a essa questão, se for carregar os dados para o controle na mesma ordem da planilha e não invertido, temos vários exemplos no fórum.
Aqui tem um:
A única dúvida que ainda permanece é referente a questão do FIND. Já pude perceber lendo alguns códigos em diversos fórum, que o LIstview tem o FINDITEM. Porém ele busca no LISTVIEW um valor igual ao que esteja num TEXTBOX ou na planilha. A minha necessidade é diferente. Preciso adaptar minha rotina que já funcionava com o LISTBOX para o LISTVIEW.
Código: Selecionar todos
' TRANSFERE DADOS DO LISTBOX PARA A PLAN BDCQE
For Y = 0 To ListBox1.ListCount - 1
Set r = Sheets("BDCQE").Range("C2:C5000").Find(What:=Val(ListBox1.List(Y, 0)), After:=Sheets("BDCQE").Range("C2"), LookIn:=xlValues, LOOKAT _
':=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
'False, SearchFormat:=False)
If Not r Is Nothing Then
Sheets("BDCQE").Range("E" & r.Row) = Sheets("BDCQE").Range("E" & r.Row) - ListBox1.List(Y, 2)
End If
Next
Tentei algo simples, alterando apenas o Listbox.LIST(Y,0) por LISTA.ListItems(Y).SubItems(1). Porém apesar de não haver nenhum erro, a rotina não funciona. Segue ela completa abaixo:
Código: Selecionar todos
' Rotina que pega os valores que constam no Listview e procura na planilha valor semelhante e subtrai o valor do LIstview pelo valor encontrado na planilha
For Y = 1 To LISTA.ListItems.Count
Set r = Sheets("BDCQE").Range("C2:C5000").Find(What:=Val(LISTA.ListItems(Y).SubItems(1)), After:=Sheets("BDCQE").Range("C2"), LookIn:=xlValues, LOOKAT _'procura na planilha BDCQE na coluna C um valor que seja igual ao valor da linha 1, coluna 1 do LIstview
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Not r Is Nothing Then
Sheets("BDCQE").Range("E" & r.Row) = Sheets("BDCQE").Range("E" & r.Row) - (LISTA.ListItems(Y).SubItems(3)) ' caso encontre irá subtrair o valor da linha 1 e coluna 3 do Listview pelo valor que consta na planilha. Ex. Caso tenha 10 na planilha e 2 no Listview irá efetuar a operação de subtração 10 - 2
End If
Next 'repete a operação nas próximas linhas do Listview
- joseA
- Jedi
- Mensagens: 1048
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Re: Controle ListView
Quando a determinação de largura das colunas pode ser feita via código, repare em alguns exmplos bem no inicio quando é carregado os dados para controle ou na propriedade do controle >Personalizado>Colunm Headers.Guima escreveu:... se possível impossibilitar que seja alterado o tamanho das colunas, pois uma vez que selecione uma delas com o mouse é permitido alterar a largura delas, gostaria de impedir isso...
Nesse exemplo determina-se nome - largura
Código: Selecionar todos
With Me.ListView1
.ColumnHeaders.Add Text:="Nome", Width:=80
.ColumnHeaders.Add Text:="Endereço", Width:=80
.ColumnHeaders.Add Text:="Fone", Width:=80
.ColumnHeaders.Add Text:="Status", Width:=80
- joseA
- Jedi
- Mensagens: 1048
- Registrado em: Qui Out 22, 2009 7:22 am
- Localização: Cel. Fabriciano - MG
Re: Controle ListView
E aí careca...
Qualquer coisa, desculpe-me pela brincadeira.
Na 2ª página desse tópico no 4º post viewtopic.php?f=6&t=233&start=10
tem um exemplo de pesquisa com critério no controle ListViewFitroCritério.rar
Qualquer coisa post um pequeno exemplo, resumido, com o modelo que vc quer.
Faço assim, sempre simulo um exemplo reduzido para chegar ao que desejo.
Abraços.
Guima escreveu:... está me fazendo arrancar meus poucos...
Qualquer coisa, desculpe-me pela brincadeira.
Na 2ª página desse tópico no 4º post viewtopic.php?f=6&t=233&start=10
tem um exemplo de pesquisa com critério no controle ListViewFitroCritério.rar
Qualquer coisa post um pequeno exemplo, resumido, com o modelo que vc quer.
Faço assim, sempre simulo um exemplo reduzido para chegar ao que desejo.
Abraços.
Re: Controle ListView
Código: Selecionar todos
E aí careca...
Bom, vou verificar o exemplo que você sugeriu com atenção, mas como já tenho quase certeza que já vi ele e que o que necessito é diferente vou encaminhar o exemplo em anexo. Como estou na fase de Testes mantenho no mesmo Formulário e nas linhas de código o LISTBOX e LISTVIEW. Na rotina FINALIZA é onde está nosso "objeto de análise". A parte do LISTBOX eu deixei como comentário, mas se quiser verificar o funcionamento basta tirar as " ' " para que funcione. O que ela faz é que precisa ser feito no LISTVIEW. Perceba que a quantidade de determinado produto ao terminar essa rotina será subtraída. Qualquer dúvida só chamar.
[REMOVIDO]
Abraço e obrigado por mais essa.