Hauteur d'une Item dans une ListBox

divadav Messages postés 94 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 22 janvier 2009 - 30 mai 2005 à 09:19
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 4 juin 2005 à 16:41
Bonjour tout le monde !!

Je suis confronté à un petit problème... Dans un composant TListBox, je veux dessiner des images... J'utilise donc bien les événements onMeasureItem et onDrawItem pour définir la hauteur d'une ligne puis dessiner l'image et le texte...

Le problème est que les item ne sont malgré tout pas aussi grande que je le voudrais... a priori, il semblerait qu'il y ait une limite de hauteur fixée à 315px (oui, je sais, c'est con, ça correspond à rien comme valeur...), ce qui occasionne de gros bugs d'affichages...

Quelqu'un a-t-il déjà entendu parler de ça ? Je n'arrive pas à trouver d'infos là-dessus...
Autrement, y aurait-il un autre composant qui me permettent d'fficher des images sous forme de liste ?? En fait, je cherche à obtenir un affichage de mes images ressemblant à un affichage "miniatures" sous windows...

Merci d'avance !!

Keep Cool & Be Wild
Divad

4 réponses

moldov Messages postés 165 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 10 novembre 2008
30 mai 2005 à 10:08
Salut,



Pour modifier la hauteur des Items tu modifie l'integer de la propriété ItemHeigh

Mais pour pouvoir modifier cette propriété il faut mettre la prorpiété style a lbOwnerDrawFixed



Ex :



ListBox1.Style := lbOwnerDrawFixed;

ListBox1.ItemHeigh := 30;



Voila

Bonne Prog
0
divadav Messages postés 94 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 22 janvier 2009 2
30 mai 2005 à 10:43
Je ne peux pas me contenter de cela : mes images n'ont pas toutes la même taille...
Le style de ma ListBox est à lbOwnerDrawVariable, et pour modifier la hauteur de mon item je ne peux donc plus utiliser ItemHeight...
Je suis obligé de passer par l'évenement onMeasureItem et de renseigner le paramètre Height ce l'événement :

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
begin
Height := TailleImgEnCours;
end;

Keep Cool & Be Wild
Divad
0
divadav Messages postés 94 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 22 janvier 2009 2
31 mai 2005 à 16:58
Personne pour m'aider ??

Ou alors un composant qui me permette d'arriver à cet affichage "miniature" ??

Keep Cool & Be Wild
Divad
0
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
4 juin 2005 à 16:41
TCanvas.CopyMode:=...
TCanvas.CopyRect(Rect1,Canvas,Rect2);
TCanvas.Rect(XYZ);
OnDrawItem(..

const LB_GetItemHeight
const LB_SetItemHeightRésultat :SendMessage(ListBox.Handle, LB_*, Hauteur, 0);
Validez les réponses si ok...

ViewVite : HTML
0
Rejoignez-nous