Problème Clignotement ListView

philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 - 11 juil. 2005 à 15:08
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 - 12 juil. 2005 à 09:07
Langage: VB6

Bonjour à tous,

J'ai besoin de votre aide ..... J'utilise un listview pour afficher des informations issues d'une Base de données Access en continu. J'ai une requête SQL placée dans un Timer pour actualiser en continu les données de la base (la base varie continuellement). Le problème est que le listview clignote comme un sapin de Noël ...

J'ai fais des recherches sur le forum et j'ai bien vu l'exemple avec:
ValidateRect View1.hwnd, 0&
InvalidateRect View1.hwnd, 0&, 0&

Ca fonctionne relativement bien (clignote quand même un peu) à condition que la listview ne contient pas trop d'infos.Vu que j'ai une trentaine de paramètres les uns en dessous des autres, la listview affiche le scrollbar vertical et c'est le début de la fin.
Pour info, j'utilise l'instruction View1.ListItems.Clear pour effacer la liste avant de la remplir aves les nouveaux paramètres.

Si quelqu'un peut m'aider, je lui seraistrès reconaissant.
Merci d'avance !

Philipe

13 réponses

yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 8
11 juil. 2005 à 22:59
y'a un truc sur les listview qui invalide le rectangle de ta listview pendant le rafrechissement

c une api invalidaterectange je crois ou quelque chose comme ca

elle a la propriete de geler ta listview pendant son rafraissement et quand tu revalide le rectange , elle apparait modifier dans clignoter

regarde dans les api

invalidaterectangle

:)
1
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 8
12 juil. 2005 à 08:13
1
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
11 juil. 2005 à 15:47
Salut,


je suis plutôt orienté vb.net mais as-tu essayé un refresh de ta listview. J'ai eu des problèmes d'affichage avec un formulaire où les labels étaient transparents et le refresh les a résolus, on ne sait jamais...

@+
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
11 juil. 2005 à 16:17
Oui c'est la première chose que j'ai essayé! Mais en utilisant le refresch, la listview ne cesse de grandir. Il faut qu'avant chaque mise à jour (cadencé par le timer) je fasse un Listview.Clear pour complétement effacer la liste... mais ca clignote !

Vu qu'il y'a une boucle For c'est peut être une instruction placée au mauvais endroit!
Merci pour ta réponse

Philippe
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
11 juil. 2005 à 16:29
Si j'ai bien compris, tu fais ton clear à l'intérieur de ta boucle for, et c'est la répétition qui fait clignoter ta listview... Si tu augmente le temps de ton timer, ta lise à jour se fait moins souvent, mais ta listview ne doit plus clignoter, as-tu vraiment besoin de rafraîchir tes datas si souvent?
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
11 juil. 2005 à 16:44
Bah malheureusement oui car j'ai une autre appli qui vient écrire dans la base de données des paramètres importants issus d'une machine. Et je dois afficher sur l'autre appli les valeurs de la base de données avec les valeurs de paramètres courantes ...

C'est un vrai casse tête c'te truc! Oui t'as bien compris le problème ..
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
11 juil. 2005 à 16:52
peut-être que ta solution serait une machine plus puissante?
Plus sérieusement, je ne vois pas d'autre solution que de ralentir ton prog...
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
11 juil. 2005 à 19:41
Mdr ! Non mais je pense pas, ca doit être un vieux truc à la batman... C'est tellement vaste VB, j'en apprends tous les jours et surtout, je m'en étonne tous les jours !

Je pri pour qu'un programmeur super balaise passe par là et me donne la solution en 2 lignes ....
En tout cas merci de m'avoir répondu !!
Je cherche toujours .....

Bye bye
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
12 juil. 2005 à 08:10
Merci Yohan, je vais mater ca sans attendre .... Te tiens au jus.
Bye

Philippe
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
12 juil. 2005 à 08:21
Bah j'ai cherché sur ce site et sur le moteur Google et je n'ai rien trouvé de probant sous le nom d'API invalidaterectangle. Es-tu sûr que ca fonctionne pour VB6?
Si tu retrouve le code ou l'adresse web tiens moi au courant, je continu à chercher !

Bye
Philippe
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
12 juil. 2005 à 08:24
Salut,

à l'adresse que t'a donné yohan, y a bien un truc qui pourrait t'aider. Ca ressemble quand même bien à du vb6...
@+
0
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 8
12 juil. 2005 à 08:41
Le seul veritable moyen d'avoir une list qui ne clignote plus c de faire une requete pour chaque ligne , et actualiser la ligne de ta liste c pas top , c long c lourd

vraiment si la sources que je t'ai passe ne fonctionne pas comme tu veux ben tu n'aura pas d'autre choix que de faire deux listview, une masque (celle qui clignotte) et une autre avec actualisation plus espace via un timer , toutes les secondes par exemple

c une solution comme une autre

une autre chose , le fait que ton autre application change des donnees dans ta base n'est pas important , ta listview n'est la qu' a titre indicatif donc que tu es un rafraichissement toutes les seconde ne te gene en rien
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
12 juil. 2005 à 09:07
Oui j'étais tombé sur cete source ! Ca fonctionne mais j'ai quand même des probs. D'une part ca clignote beaucoup moins mais c'est toujours pas nickel, et si la listview contient beaucoup d'éléments (mon cas) il y'a les scroll bars verticales qui apparaissent et là ca reclignote à max. Si je dévalide les scroll bars sur la list view ca fonctionne un peu prés bien mais je peux pas visualiser tous mes paramètres (y'en a environ 40). En plus ce qui est gênant c'est que j'ai cette fonction dans un timer......
0