Ajouter un icon dans un listbox

Résolu
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008 - 29 sept. 2007 à 14:30
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 29 sept. 2007 à 21:06
Bonjour,

je suis entrain de faire un logiciel avec un log ou je peu voir tout les avertissements et erreurs dans un listbox (cest facile a gerer car on a juste a faire listbox1.additem pour ajouter un item (dans scas si un message avec timestamp))

jaimerais ajouter un icone sur chaque ligne ex: icone derreur (16x16) pour un message derreur etc...

jai vu des tonnes et des tonnes de code soit avec un listview (pas bon car tout les examples que jai vu extrait leur icone du systeme ex: lister des fichiers etc cest pas bon dans scas ci ! ) ou avec une combobox ( cest bon pour listbox aussi ) MAIS....

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
ComboBox1.Canvas.Fillrect(Rect);
ImageList1.Draw(ComboBox1.Canvas,Rect.Left,Rect.Top,Index);
ComboBox1.Canvas.Textout(rect.left+Imagelist1.width+2,rect.Top,ComboBox1.Items[index]);
end;

sa marche bien sauf que le probleme cest que je ne peu decider de licone que je met ... il assigne les icons seulon lindex de litem combobox example ... item 1 = imagelist icon avec index 1

moi je dispose dune imagelist avec 3 icones ...

donc jaimerais assigner a un item dans la listbox a un index dune icone dans imagelist que je choisie

(pour ensuite me faire une fonction du genre addmessage('bob',0) qui ferais automatiquement un nouveau item + avec licone 0 (exclamation) )

Merci beaucoup de l'aide !

Laurent belanger
A voir également:

11 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
29 sept. 2007 à 17:25
Salut,

Le truc simplet, mais ça marche :

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  IcoIndex: Integer;
  ItemText: string;
begin
  with ListBox1 do
  begin
    IcoIndex := StrToIntDef(Items[Index][1], 0);
    ItemText := Items[Index];
    Delete(ItemText, 1, 1);
    Canvas.Fillrect(Rect);
    ImageList1.Draw(Canvas, Rect.Left, Rect.Top, IcoIndex);
    Canvas.Textout(Rect.Left + ImageList1.Width + 2, Rect.Top, ItemText);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var TextItem: string;
begin
  TextItem := edTextItem.Text; // <- texte de l'item
  ListBox1.Items.Add(Format('%d%s', [seIndex.Value, TextItem])); // valeur d'index de l'icone dans la liste
end;

N' oublie pas de mettre la propriété Style de la ListBox à  lbOwnerDrawVariable.

Pour tester ce code :
- une ListBox,
- un Edit,
- un SpinEdit,
- un Button,
- et évidemment une ImageList avec ses icones 16x16...

Bonne prog'
3
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008
29 sept. 2007 à 18:19
listbox1.itemheight ! LOL jme repond moi meme :P

a quand un edit button ici ?

merci beaucoup !
3
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
29 sept. 2007 à 16:02
Bj Elcouz
   Moi j'utiliserai les possibilités d'une stringliste!
Bonne prog!

Jean_Jean
0
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008
29 sept. 2007 à 17:06
merci davoir pris le temps de repondre,

>> Moi j'utiliserai les possibilités d'une stringliste!

tu peux me donner un example , je suis debutant

merci !
0

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

Posez votre question
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008
29 sept. 2007 à 17:20
pour vous guider cest exactement ce que je veux faire ...

quand je vous parlais dicone et log ... cest exactement se que je veut faire ... une listbox comme sa! (photo ImgBurn)

merci beaucoup !
0
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008
29 sept. 2007 à 17:24
dsl pour les messages repetitif (ou les le EDIT button lol ) ,,, je tien a preciser que je sais comment manipuler le texte ,, jveut dire cest pas un problem ,,, le seul cest les icones que je ne sais pas comment les ajouter dans la listbox !

merci !
0
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008
29 sept. 2007 à 17:53
Merci japee !!!

un seul probleme regarde:

dapres toi cest un probleme de dimension dicones (16x16 pourtant) ou de code ?

merci

je vais assayer de les reduire genre 14x14 meme si cest pas standard normalement cest 16x16,32x32,48x48 etc
0
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008
29 sept. 2007 à 18:08
jai tenter dagrandir la police ... cest pire !!

jai verifier la dimension de licone dans imgburn log ,,, cest effectivement 16x16

et les miens aussi jai mesurer ...

alors je ne comprend plus

merci beaucoup de votre aide !!

Laurent
0
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008
29 sept. 2007 à 18:16
cest encore moi.... pour resoudre le probleme i faudrais trouver un moyen davoir le fameux rectangle , 4 pixel de plus en hauteur car il est plus petit que 16  (il fait 12 pixel de haut)!
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
29 sept. 2007 à 20:55
Bon exemple Japee!
j'arrive après la course, mais je n'aurai pas fait aussi bien!
Par contre, qu'est-ce qu'un spinEdit? je n'ai pas ce composant en D7? Est-ce un edit?
Jean_Jean
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
29 sept. 2007 à 21:06
Autant pour moi!
SpinEdit, Oui bien sûr!
Bon, je couche tôt ce soir!
Jean_Jean
0
Rejoignez-nous