Notifications
Clear all

ScrollBar Listview

14 Posts
2 Usuários
0 Reactions
3,722 Visualizações
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Ola,

Sei que ao completar os campos visivos o listview deveria criar automaticamente a barra de rolagem, mas nao esta acontecendo nos meus listviews, na net dizem que devo marcar como false em propriedades, mas ja esta marcado como false, o que devo fazer?
Outra coisa se puderem ajudar, gostaria que ao salvar os registros fosse feito invertido, para aparecer no listview sempre o mais recente na primeira linha, em outros projetinhos que tenho trabalhado aqui eu consegui, mas neste que o banco de dados e externo não.

Obrigado

Fabio

 
Postado : 06/04/2012 1:36 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio, bem que você poderia simplificar o modelo anexo, somente com a duvida que quer, é bem complicado ter de analisar projetos complexos com 22 abas 14 formulários com 4 listView sem contar com todas as rotinas que interligam vários processos.

Seu BD tem somente um cadastro, monte um exemplo com mais cadastros e somente com um formulario para podermos analisar melhor o que pretende.
Perceba que da maneira que está gasta-se muito tempo a analisar dificultando uma resposta imediata, e acabamos deixando para olhar outra hora com mais tempo.

A principio o que citou sobre apropriedade do ScrollBar deveria resolver, você salvou o projeto depois sde modificar a propriedade ?

[]s

 
Postado : 06/04/2012 2:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!
:(
Juro que baixei seu anexo, e logo desanimei, poderia ter fala algo parecido com que o mauro falou, mas o desanimo foi tanto que não resolvi responder.

Fabio, nas próximas se realmente poder simplificar seus anexo, sua resposta tende a ser mais rápida!

Att

 
Postado : 06/04/2012 2:36 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Pois é, estava fazendo o que vcs me pediram de enxugar o projeto, ai a scrollbar apareceu no listview, mantive somente a frmcadastroserviçosconvenio e no userform1 somente a aba Convenio com a listview2, ai funcionou.

 
Postado : 06/04/2012 3:41 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Senhores, resolvido a primeira questao, um erro de dimensão do listview da minha parte, redimensionei e esta tudo ok.

Fica a segunda pergunta do arquivar os registros em modo invertido.

Um Abraço.

 
Postado : 06/04/2012 4:23 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio, não sei se entendi corretamente, mas se quer que o listview se ja carregado com o ultimo item na primeira linha, é só alterar a Classificação para descendente ao carregar o LV, não sendo necessário salvar os dados em ordem inversa no BD.

Mas se quer que o o Scroll role até o úlimo item do LV, utilize a propriedade "EnsureVisible", adicione na Rotina PopulaListbox2 depois apos a istrução Loop da linha:
Set li = ListView2.ListItems.Add(, "k" & rst.Fields(0), CheckNull(rst.Fields(0)))
.............
..............
...............
Loop

ListView2.ListItems(ListView2.ListItems.Count).Selected = True
ListView2.ListItems(ListView2.ListItems.Count).EnsureVisible

veja se é isto que pretende.

[]s

 
Postado : 07/04/2012 10:52 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Fala Mestre, entao, ja ontem a noite pesquisando encontrei a propriedade EnsureVisible na rede e ja estava rodando, mas gostaria que fosse como voce escreveu no inicio da tua resposta, que na primeira linha do listview, aparecesse o registro mais recente, so nao entendi como alterar a classificaçao para descendente. :oops:
Estou aqui tentando entender mas nao esta facil, hehehe.

Mauro, aproveitando a tua atenção, sempre dentro do meu limite tentando aprender e incomodar o minimo possivel, fiz o seguinte:
Dentro do userform1, para gravar um novo registro, aperto os botoes + de cada aba, ai eles abrem os respectivos formularios para adicionar registros, para atualizar os listviews do userform1, fiz o seguinte, ao clicar no botao + ele fecha o userform1, abre o formulario respectivo e ao salvar ele fecha este formulario reabrindo o userform1, que na funçao" Userform Activate", coloquei os Call PopulaListbox. Ok, ta funcionando, mas este seguramente não e o melhor meio e nem o mais seguro, certo???

Grande abraço Mauro e obrigado mais uma vez.

 
Postado : 07/04/2012 3:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Para alterar a Propriedade :

Selecione o ListView, e na Janela Propriedade, procure pela opção "Personalizado", clique nas reticencias e na janela que abrir va até a aba "Sorting" e altere conforme a figura abaixo:

Quanto a segunda questão depois analiso melhor.

[]s

 
Postado : 07/04/2012 6:34 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Mauro, deu classe nao registrada.

 
Postado : 07/04/2012 6:47 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio, é estranho dar esta mensagem uma vez que o controle e as referencias do Listview estão habilitadas.

Fiz uma adaptação, veja se é isto que está querendo.

[]s

 
Postado : 08/04/2012 7:30 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Ja estou adaptando, te dou um ok amanha.

Obrigado por enquanto Mauro.

Grande abraço,

Fabio Pradella

 
Postado : 08/04/2012 8:14 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Fabio, é estranho dar esta mensagem uma vez que o controle e as referencias do Listview estão habilitadas.

Fiz uma adaptação, veja se é isto que está querendo.

[]s

Mauro, e exatamente isto, mas nao fui capaz de adaptar ao projeto, da um erro no "Private Type LV_ITEM", alias, na verdade nem mesmo a função "EnsureVisible" agora quer rodar, estou anexando o projeto completo pra vc dar uma olhada se tiver tempo, se puder da uma olhada se na tua maquina voce consegue entrar no personalizado como voce me ensinou, na minha da erro.

Desculpe o abuso, um grande abraço.

 
Postado : 09/04/2012 1:44 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fábio, a principio não tive nenhum problema com este seu arquivo.

Fiz as alterações e funcionou acredito eu da maneira que quer, realize mais testes para ver se está da maneira que quer.

Uma obs,eu Alterei a instrução no Botão "CmbConfiguraçoes", onde estava :
'UserForm1.Hide - deixei :
Unload UserForm1
Acredito que não irá interferir em seu aplicativo, mas só fazendo vários testes, quando utiliza Hide o form não é descarregado, ele fica oculto, então quando pensamos que estamos reabrindo o mesmo, na verdade estamos somente reexibindo-o novamente da mesma tela que estava exibida, sem atualização.

E não precisamos usar a "EnsureVisible" desabilitei e deixei somente :
ListView2.ListItems(ListView2.ListItems.Count).Selected = True

E a instrução para classificar, a chamada para Function, uma coisa que havia esquecido é que estamos trabalhando com ListViews dentro de MultiPages, e como jáfoi dito anteriormente, existem algumas incompatibilidades, que as vezes não surtem o efeito desejado, já falamos sobre isto, então adicionei a chamada no evento Change do MultiPage.

Amigo, só fazendo os testes, qq coisa avise.

No anexo está somente o arquivo principal, uma vez que o BD é o mesmo.

[]s

 
Postado : 09/04/2012 7:24 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Mauro,

Realmente eu usava .hide em tudo, sem saber na verdade a verdadeira função, agora entendi bem o papel do unload, so esta palavrinha ja responde a pergunta que te fiz em neste post onde eu fazia uma viagem entre os forms para atualizar os listviews.
Estou testando as tuas melhorias e percebi que a função de classificação se resumo so ao listview2 e não pode ser estendido para os outros listviews do multipage, certo? Ao menos tentei e não deu, repeti para os outros LV na função change do multipage e não surtiu efeito.

Um grande abraço Mestre Mauro.

 
Postado : 09/04/2012 7:56 pm