ListBox OwnerDrawVariable

Résolu
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 - 8 déc. 2003 à 14:28
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 - 14 juin 2005 à 16:01
Bonjour à tous.

Je cherche à faire une ListBox gérant les retours à la ligne lorsque les items sont trop longs par rapport à la largeur de la ListBox, je me suis donc attelé à une ListBox en OwnerDrawVariable.

Mais le OnMeasureItem ne semble être appelé par Delphi que la première fois du rendu de l'item, les fois suivantes il semble appeler directement le OnDrawItem... Ce qui m'embête car si je change la largeur de la ListBox à l'exécution, j'aimerais qu'elle s'adapte à ses nouvelles dimensions, et son contenu avec !

M'y prendrais-je mal ou y'a t'il un petit truc à faire pour forcer le OnMeasureItem à chaque redimenssionement/changement de police ?

Petite précision : j'utilise Delphi 5.

Merci d'avance à ceux qui me répondront ;-)

Le savoir ne vaut quelque chose que s'il est partagé par tous.

3 réponses

cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
14 juin 2005 à 16:01
Si çà vous intéresse toujours, voici ma méthode.



Dans le OnDrawItem de la ListBox en lbOwnerDrawVariable, mettre ceci au tout début de la procédure :



Size := CheckItemSize(Index);

if Size <> ListBoxChat.Perform(LB_GETITEMHEIGHT, Index, 0)

then begin

ListBoxChat.Perform(LB_SETITEMHEIGHT, Index, Size);

ListBoxChat.Invalidate;

Exit;

end;



CheckItemSize étant une routine qui renvoie la taille occupée par
l'item (le Height dans OnMeasureItem). Il faut également appeler
ListBoxChat.Invalidate si la Form est redimensionnée (OnResize).



C'est tout ;-)
3
lychong Messages postés 5 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 18 mai 2004
18 mai 2004 à 17:22
Salut!
Je n'ai rien contre ton code ni rien de pour non plus car à mon sens il manque quelque chose pour ceci soit complet!
C de pouvoir redessiner aussi la partie du composant vide d'item, c à dire le bas du TListBox.

Cela fait 1an que je cherche comment le redessiner si quelqu'1 le sait je vous en prie aider moi!!!
0
atomefougere Messages postés 32 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 5 décembre 2005
23 févr. 2005 à 04:35
Si quelqu'un a une réponse, elle m'interesse aussi...
0
Rejoignez-nous