ELCouz
Messages postés135Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention25 juillet 2008
-
29 sept. 2007 à 14:30
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 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....
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) )
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 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...
ELCouz
Messages postés135Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention25 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 !
ELCouz
Messages postés135Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention25 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)!
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 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