Bonjour,
Je voudrais savoir pourquoi lorsque je mets une condition, l'affichage de mon listbox ne se reinitialise pas ? L'erreur doit etre enorme, mais je ne la vois pas. J'ai meme essayé avec un listbox1.repaint, ca me fait n'importe quoi !!!
Puis, si je mets comme ceci, le listbox s'affiche correctement !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var marge:integer; begin //on dessine le fond des lignes en alternant les couleurs if index mod 2<>1 then begin ListBox1.canvas.brush.color:=clwhite; ListBox1.canvas.fillrect(rect); end else begin ListBox1.canvas.brush.color:=$00F4F3EE; ListBox1.canvas.fillrect(rect); end; //on affiche le texte ListBox1.canvas.textout(rect.left+30,rect.top+2,ListBox1.items[index]); //affichage lorsque la ligne est sélectionnée if (odSelected in state) then begin // ListBox1.canvas.brush.color:=$00F8D1C5; ListBox1.canvas.fillrect(rect); ListBox1.canvas.font.color:=clblue; ListBox1.canvas.font.style:=ListBox1.canvas.font.style +[fsbold]+[fsitalic]; ListBox1.canvas.textout(rect.left+30,rect.top+2,ListBox1.items[index]); end; {Dessin des icônes}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 marge:=(Rect.Bottom-Rect.Top-DM.imageList1.Height) div 2; DM.imageList1.Draw(ListBox1.canvas, Rect.Left+4, Rect.Top+marge, 13); end;
Le problème vient d'ici. Lorsque je remplace mes deux dernieres lignes de code par une condition, le premier affichage est parfait, mais lorsqu'une fenetre s'affiche par dessus mon listbox et que je la referme, les icones sont soient effacées ou tronquées !!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 {Dessin des icônes} if Tableau_Icone[DessinIcone]<>'' then begin // Dessin de l'icône avec "cadenas" marge:=(Rect.Bottom-Rect.Top-DM.imageList1.Height) div 2; DM.imageList1.Draw(ListBox1.canvas, Rect.Left+4, Rect.Top+marge, 13); end else begin // Dessin de l'icône "vide" marge:=(Rect.Bottom-Rect.Top-DM.imageList1.Height) div 2; DM.imageList1.Draw(ListBox1.canvas, Rect.Left+4, Rect.Top+marge, 0); end; inc(DessinIcone); end;
Partager