cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
26 juin 2005 à 19:32
LunaPurple
Messages postés19Date d'inscriptiondimanche 15 avril 2007StatutMembreDernière intervention20 octobre 2010
-
29 sept. 2008 à 16:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
LunaPurple
Messages postés19Date d'inscriptiondimanche 15 avril 2007StatutMembreDernière intervention20 octobre 2010 29 sept. 2008 à 16:47
Arf!!
Encore oublié la note.
LunaPurple
Messages postés19Date d'inscriptiondimanche 15 avril 2007StatutMembreDernière intervention20 octobre 2010 29 sept. 2008 à 16:44
Merci, vos astuces m'ont été très utiles !
thomthom63
Messages postés2Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention 3 avril 2007 14 févr. 2008 à 11:04
Bonne source, le fastexpand est efficace.
Egyde
Messages postés158Date d'inscriptionlundi 17 mai 2004StatutMembreDernière intervention16 juillet 2007 20 juil. 2005 à 12:06
Contrairement à FastClear qui énumère chaque noeud du treeview, la fonction FastClean applique Expanded = False aux seuls noeuds de la racine. Cette astuce permet de gagner quelques dizaines de ms (c pas énorme mais bon, c toujours ça :-).
Egyde
Messages postés158Date d'inscriptionlundi 17 mai 2004StatutMembreDernière intervention16 juillet 2007 26 juin 2005 à 21:09
LockWindowUpdate ne fonctionnant pas (et étant déconseillé par Krosoft...), j'ai utilisé l'API SendMessage : FastClear est passé en dessous des 500ms. Merci beaucoup DARKSIDIOUS !
Si vous avez d'autres idées (ou des explications, notamment pour FastClear par exemple), n'hésitez pas.
Egyde
Messages postés158Date d'inscriptionlundi 17 mai 2004StatutMembreDernière intervention16 juillet 2007 26 juin 2005 à 20:32
Pour répondre à liquide, remplacer EnsureVisible par Expanded = true n'améliore pas les choses chez moi. Au contraire, le contrôle "clignote" avec expand, ce qui ralentit encore plus l'opération. Pour ce qui est de FastClear(), j'ai déjà essayé en rendant le contrôle insible avant d'appliquer la méthode .clear : c'est aussi lent que SlowClear()
Je vais aller piocher du côté de LockWindowUpdate, même si masquer le contrôle n'a rien d'inesthétique je pense puisque le contrôle n'a pas le temps de s'effacer.
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 26 juin 2005 à 19:43
J'ai rien contre, mais je trouve bizarre de chercher a le rendre lent, et encore plus lent que lent a voir le code. En général, on part d'une base de programmation pour augmenter la vitesse et non l'inverse, non ?
j'entend par la que tu forces ton treeview a ralentir, en general on a la base d'un code et on l'améliore. J'ai l'impression que tu as fait l'inverse pour nous montrer de l'efficacité de ton "fast" avec la méthode "ensurevisible", qui elle, et tout le monde le sait, force l'affichage du noeud a l'ecran. Cette méthode est employable quand l'oeil de l'utilisateur voit ce qui défile et lorsqu'il doit analyser une évolution des treeviews. En dehors de ca, personne ne programmera un ensurevisible sur 2000 noeud en meme temps par exemple( ou t'es l'homme qui valait 3 milliards :))
Par ailleur pour le fastexpand, n'est il pas mieux de faire un "expand" au lieu de faire un "ensurevisible" en appelant la méthode "slow", en somme tu ralentis encore ton "fastexpand". De meme, si tu rends ton controle invisible dans la méthode fastclear, est ce que le delai ne va pas diminuer en meme temps ?
Je ne dis pas que les testes ne valent rien, mais forcer un "expand" par la méthode "ensurevisible", n'est pas la solution idéale, puisque chacune de ses propriété ont leur particularité et sont dédiés a une utilisation bien différente.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 26 juin 2005 à 19:32
Une petite astuce qui est utile, mais pas très esthétique cependant de masquer le contrôle.
Je te conseillerai plutôt de locker le raffraichissement du contrôle lors de l'expansion ou la suppression, puis de l'unlocker après en utilisant la fonction de l'API Windows LockWindowUpdate.
Je n'ai pas essayé, mais ca devrait être autant optimisé, et ca éviterai de voir le contrôle clignoter à chaque expansion !
29 sept. 2008 à 16:47
Encore oublié la note.
29 sept. 2008 à 16:44
14 févr. 2008 à 11:04
20 juil. 2005 à 12:06
26 juin 2005 à 21:09
Si vous avez d'autres idées (ou des explications, notamment pour FastClear par exemple), n'hésitez pas.
26 juin 2005 à 20:32
Je vais aller piocher du côté de LockWindowUpdate, même si masquer le contrôle n'a rien d'inesthétique je pense puisque le contrôle n'a pas le temps de s'effacer.
26 juin 2005 à 19:43
j'entend par la que tu forces ton treeview a ralentir, en general on a la base d'un code et on l'améliore. J'ai l'impression que tu as fait l'inverse pour nous montrer de l'efficacité de ton "fast" avec la méthode "ensurevisible", qui elle, et tout le monde le sait, force l'affichage du noeud a l'ecran. Cette méthode est employable quand l'oeil de l'utilisateur voit ce qui défile et lorsqu'il doit analyser une évolution des treeviews. En dehors de ca, personne ne programmera un ensurevisible sur 2000 noeud en meme temps par exemple( ou t'es l'homme qui valait 3 milliards :))
Par ailleur pour le fastexpand, n'est il pas mieux de faire un "expand" au lieu de faire un "ensurevisible" en appelant la méthode "slow", en somme tu ralentis encore ton "fastexpand". De meme, si tu rends ton controle invisible dans la méthode fastclear, est ce que le delai ne va pas diminuer en meme temps ?
Je ne dis pas que les testes ne valent rien, mais forcer un "expand" par la méthode "ensurevisible", n'est pas la solution idéale, puisque chacune de ses propriété ont leur particularité et sont dédiés a une utilisation bien différente.
26 juin 2005 à 19:32
Je te conseillerai plutôt de locker le raffraichissement du contrôle lors de l'expansion ou la suppression, puis de l'unlocker après en utilisant la fonction de l'API Windows LockWindowUpdate.
Je n'ai pas essayé, mais ca devrait être autant optimisé, et ca éviterai de voir le contrôle clignoter à chaque expansion !
DarK Sidious