Page 1 sur 2

ListIconGadget : Inserer des Images

Publié : jeu. 29/nov./2012 11:34
par falsam
AddGadgetItem() permet de gérer des images sur chaque ligne d'un ListIconGadget, mais on parlera dans ce cas d’icônes d'une taille de 16x16 de préférence.

Le code ci-dessous ne fonctionne que sous Windows et permet d'afficher des images de plus grandes tailles grâce à l'utilisation conjointe des API:
ImageList_Create() pour créer une liste d'images.

Code : Tout sélectionner

ListImages = ImageList_Create_(460, 100 ,#ILC_MASK|#ILC_COLOR32, 0, 30)
dans cet exemple chaque image a une taille de 460x100.

ImageList_Add() pour ajouter une image à la liste d'images.

Code : Tout sélectionner

IndexImage = ImageList_Add_(ListImages, ImageID(#Image), 0)
#Image est une image que vous avez crée ou chargé préalablement.

La procédure AddGadgetItemImage(Gadget.l, Row.l, Col.i, Text$, ImageIndex.l) permet de mettre à jour le ListIconGadget.

le code complet.

Code : Tout sélectionner

EnableExplicit

Enumeration
  #FontApp
  #FontTitle

  #Mainform
  #ProducLlist  
  #Image
EndEnumeration

Global WindowStyle.i=#PB_Window_SystemMenu|#PB_Window_ScreenCentered

Global ListImages.l

Declare Start()
Declare MainFormOpen()
Declare OnProductSelect()
Declare OnClose()
Declare AddGadgetItemImage(Gadget.l, Row.l, Col.i, Text$, ImageIndex.l)

Start()

Procedure Start()
  LoadFont(#FontApp, "Arial", 10)
  LoadFont(#FontTitle, "Arial", 12, #PB_Font_Bold)
  
  SetGadgetFont(#PB_Default, FontID(#FontApp))     
  MainFormOpen()
  
  BindGadgetEvent(#ProducLlist, @OnProductSelect(), #PB_EventType_LeftClick)
  BindEvent(#PB_Event_CloseWindow, @OnClose())
  
  Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndProcedure

Procedure MainFormOpen()
  Protected IndexImage.l, N.i, Produit.s, PuTtc.s, MemPuTtc.d, Stock.s, Pair.b
  
  OpenWindow(#Mainform, 0, 0, 530, 600, "Catalogue", WindowStyle)
  ListIconGadget(#ProducLlist, 20, 30, 500, 550,"Info produits", 470, #PB_ListIcon_GridLines)
    
  ;Association d'une liste d'images à la ListIconGadget
  ;On crée la liste d'image avec l'API ImageList_Create
  ListImages = ImageList_Create_(460, 100 ,#ILC_MASK|#ILC_COLOR32, 0, 30)
    
  ;On assigne la liste d'image à la ListIconGadget
  SendMessage_(GadgetID(#ProducLlist), #LVM_SETIMAGELIST, #LVSIL_SMALL, ListImages) 
  
  ;Sélection de la liste produits (En l'absence de la base de données, la liste est en datasection)
  Restore Catalogue
  For N=1 To 10
    Read.s Produit
    Read.s PuTtc
    Read.s Stock
    CreateImage(#Image, 460, 100)
    StartDrawing(ImageOutput(#Image))
    
    ;Fond de l'image
    If Pair
      Box(0, 0, 460, 100, RGB(255, 255, 255))
      Pair = #False
    Else
      Box(0, 0, 460, 100, RGB(210, 180, 140))
      Pair = #True
    EndIf
    
    DrawingMode(#PB_2DDrawing_Outlined)
    Box(0, 0, 460, 100, RGB(0, 0, 0))
    DrawingMode(#PB_2DDrawing_Default)
    
    ;Image produit
    Box(10, 10, 80, 80, RGB(255, 215, 0))
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawingFont(FontID(#FontApp))
    DrawRotatedText(20, 10, "Image "+Produit, -45, RGB(169, 169, 169))
    
    ;Info produit
    DrawingFont(FontID(#FontTitle))
    DrawText(110, 10, Produit, RGB(105, 105, 105))
    DrawingFont(FontID(#FontApp))
    DrawText(110, 45, "P.u. Ttc", RGB(0, 0, 0))
    DrawText(220, 45, PuTtc + " €", RGB(0, 0, 0))
    
    DrawText(110, 70, "En stock", RGB(0, 0, 0))
    If Stock="1"
      DrawText(220, 70, "Oui", RGB(50, 205, 50))
    Else
      DrawText(220, 70, "Non", RGB(255, 0, 0))
    EndIf
    
    StopDrawing()
    
    ;On ajoute cette nouvelle image à la liste d'images à l'aide de l'API ImageList_AddIcon
    IndexImage = ImageList_Add_(ListImages, ImageID(#Image), 0)
    FreeImage(#image)

    AddGadgetItemImage(#ProducLlist, N-1, 0, "", IndexImage)
  Next
EndProcedure

Procedure OnProductSelect()
  Debug "Vous avez sélectionner l'item " + Str(GetGadgetState(#ProducLlist))
EndProcedure

Procedure OnClose()
  ImageList_Destroy_(ListImages)
  End
EndProcedure

Procedure AddGadgetItemImage(Gadget.l, Row.l, Col.i, Text$, ImageIndex.l)
  Protected var.LVITEM

  var\Mask = #LVIF_IMAGE | #LVIF_TEXT
  var\iItem = Row         
  var\iSubItem = Col      
  var\pszText = @Text$    
  var\iImage = ImageIndex 

  If Col<>0
    SendMessage_(GadgetID(gadget), #LVM_SETITEM, 0, @var)
  Else
    SendMessage_(GadgetID(gadget), #LVM_INSERTITEM, 0, @var)
  EndIf  
EndProcedure


DataSection
  Catalogue:
  Data.s "Produit 1", " 10.00","1"
  Data.s "Produit 2", " 15.19","0"
  Data.s "Produit 3", " 10.55","1"
  Data.s "Produit 4", " 36.50","1"
  Data.s "Produit 5", "120.50","1"
  Data.s "Produit 6", " 11.50","1"
  Data.s "Produit 7", "  0.50","1"
  Data.s "Produit 8", " 10.50","0"
  Data.s "Produit 9", " 20.65","1"
  Data.s "Produit 10", "  1.50","1"
EndDataSection
PS : j'ai l'impression qu'on ne peut pas placer une image sur une colonne autre que la première.

PS : Ce sujet a déjà été développé sur ce forum (2004), je le remet juste au gout du jour avec les fonctionnalité récentes de PureBasic.

Re: ListIconGadget : Inserer des Images

Publié : ven. 30/nov./2012 20:05
par Kwai chang caine
Merci FALSAM, je crois que ça va m'etre utile 8)

Re: ListIconGadget : Inserer des Images

Publié : ven. 30/nov./2012 22:40
par SPH
Kwai chang caine a écrit :je crois que ça va m'etre utile
Tu dis tout le temps ca :mrgreen:

Re: ListIconGadget : Inserer des Images

Publié : sam. 01/déc./2012 22:40
par Kwai chang caine
Non, tu te trompe, je dis tout le temps merci, lorsque je prend un code, c'est la difference.
Je pense que c'est la moindre des choses et des politesses, lorsque quelqu'un a la générosité de le donner. 8)
Car je les teste tous, enfin quand je les comprends :oops:
Comme cela, il sait que son code marche, et si ce n'est pas le cas de le lui dire cela peut aussi l'aider.

Mais pour le coups, si je l'ai dit, c'est que c'etait vrai, j'avais commencé un petit gestionnaire de vente.
Et j'etais justement tombé sur le probleme de l'inclusion des images...c'est pourquoi j'ai di ça :mrgreen:

Maintenant c'est vrai que dire merci, n'apporte pas grand chose au schmilblick si ce n'est aussi, outre ce que j'ai dit plus haut, que le "donateur" se sente moins seul ..

Re: ListIconGadget : Inserer des Images

Publié : dim. 02/déc./2012 6:55
par SPH
Kwai chang caine a écrit : Maintenant c'est vrai que dire merci, n'apporte pas grand chose au schmilblick si ce n'est aussi, outre ce que j'ai dit plus haut, que le "donateur" se sente moins seul ..
+1 :idea:

Re: ListIconGadget : Inserer des Images

Publié : dim. 02/déc./2012 15:49
par falsam
Sur les forum américains, une contribution se termine par un merci voir même , "Whaouuuuu, This is amazing". En france c'est tout juste si tu ne te fais pas engueuler. ça me rappelle un sketch de l'humoriste Le Comte de Bouderbala mais je ne suis pas arrivé à le retrouver sur youtube. J'aime bien Kwai chang caine pour son cotés toujours enthousiaste.

Re: ListIconGadget : Inserer des Images

Publié : dim. 02/déc./2012 17:27
par Mindphazer
falsam a écrit :Sur les forum américains, une contribution se termine par un merci voir même , "Whaouuuuu, This is amazing". En france c'est tout juste si tu ne te fais pas engueuler. ça me rappelle un sketch de l'humoriste Le Comte de Bouderbala mais je ne suis pas arrivé à le retrouver sur youtube. J'aime bien Kwai chang caine pour son cotés toujours enthousiaste.
Whaoooooo, this is amazing !!!
WTF, it doesn't work on OS X ???

(humour au 4ème degré, bien sûr)

Re: ListIconGadget : Inserer des Images

Publié : dim. 02/déc./2012 17:53
par Kwai chang caine
En france c'est tout juste si tu ne te fais pas engueuler. ça me rappelle un sketch de l'humoriste Le Comte de Bouderbala mais je ne suis pas arrivé à le retrouver sur youtube.
Je vois qu'on a les mêmes références, j'ai adoré ce sketch (Vive rire et chanson !!) :P
http://www.youtube.com/watch?v=7JqKW0R0yVk
Falsam a écrit :J'aime bien Kwai chang caine pour son cotés toujours enthousiaste.
Je te remercie beaucoup 8)
Et je peux te jurer que malgré mes nombreux défauts, à faire pâlir un mille pattes qui tenterait de les compter, et que j'essaie depuis des années d'assumer difficilement :oops:
Le "fauxjetonisme" et le "PompeCirisme" n'en font pas partie, malgré ce qu'en pensent certains :(
Je ne me suis jamais cacher d’être un LAMER depuis le début, en profitant des codes des autres gentillement offert pour progresser, bien que je me surprennnes de jours en jours à devenir de plus en plus indépendant. 8O

Ce n'est pas encore the Image mais ça commence à venir...alors je ne change pas de main :lol:
Ce qui en d'autres termes veut dire, que je ne pose plus qu'une seule question par semaine ou quinze jours, contre quinze questions par jour lors de mon arrivée sur ces forums bénits des dieux 8)

Tout ça pour dire que cet enthousiasme n'est jamais feint, bien que depuis quelques temps j'ai perdu ma joie, et une grande partie de ce dernier, il a toujours été sincère, peut être trop sincère, trop franc, trop divulgué :oops:
C'est un de mes problèmes, je perds pas mal de mes amis et connaissances par ma sincérité, mon coté psycho-rigide, ma recherche de la perfection, de la performance permanente.
J'y peut quelque chose moi, si lorsque je vois des gars comme toi, et certains de ce forum ou des deux autres, verdir des pages de hieroglyphes qui lorsque je clic droit de ma souris à deux reprises, se transforme en une fonction qui en appuyant sur la petite roue crantée m'emmerveille 8O

L'on dit que c'est le propre des imbeciles d'etre toujours heureux, je revendique dans ce cas le bonheur de l'etre, car il ne se passe pas un jour ou je lance le splendide code d'un copain et que je ne fasse pas Waaaooohhh !!! tout seul devant mon bureau.
Le fait de ne rien connaitre à la programmation, m'a peut etre laissé ces yeux d'enfant qui à l'approche de noël, espère qu'il aura encore aujourd'hui un plaisir de la part de ces "ligne vertes" qu'il pourra ranger et nommer, et peut etre un jour avoir le temps d'utiliser.
Pour certains c'est la cigarette, pour moi c'est le plaisir de côtoyer des gens a qui je voudrais tant ressembler qui me fait triper...chacun sa dope non ????

Pas mal de gens de mon entourage, me disent que je vais me tuer a bosser 10h/jours devant un ecran...moi je me rends compte que plus j'avance, et plus je n'y connais pas grand chose. :(
En fin de compte... je crois que c'est la destinée de la ligne verte de mener jusqu'à la fin :mrgreen:
Image


Donc non, contrairement à ce que pensent beaucoup de gens qui n'ont rien compris à mes nombreuses démarches pour m'approcher d'eux, que ce soit sur ce forum ou sur l'anglais d'ailleurs...
Je ne le fait pas expres d'etre nul, tout comme ne le faisait pas expres DAYVID :cry:
En fin de compte, on m'a comparé au début à lui, et je doit dire que cela m'a véxé....mais ces personnes avaient raison dans un sens....
Cet enthousiasme que peu a peu je perds, à force de certaines deception, reste et restera sincere.

Et quoi qu'en disent les "Bien-Pensants", lorsque je dit à quelqu'un que je l'aime, que je l'admire, que je suis fier de le connaitre c'est vrai...
Et ce n'est pas pour qu'il me donne plus de code, bien que lorsque je suis dans la "oumpha", seul dans mon bureau, je pense à mes héros en me disant que j'aimerais bien qu'il soient dans la piece à coté :(
Tout comme je peut pousser un coups de gueule contre une personne que j'admire et qui est mon idole comme FRED ou d'autres, car quand on aime, on attend toujours de ne pas se sentir délaissé, trahi ou tout autre comportement qui pourraient paraître négatif à notre égard.
Le plus drôle, si on peut utiliser cet adjectif, c'est que la plupart du temps, cela me fait plus de mal, qu'à la personne à qui je désire en faire :|
Falsam a écrit :Sur les forum américains, une contribution se termine par un merci voir même , "Whaouuuuu, This is amazing".
Je te remercie beaucoups de cette parole, car tu as dit en quelques mots ce que je n'arriverais jamais à dire en trois pages.
La mentalité française est bien différente de celle de l'autre forum, l'on voit des gens comme SPARKIE, NETMAESTRO, SROD ou autres dire "super", remercier, etre "enjoy" devant un petit code, alors qu'ils sont quotidiennement à l'origine de codes du niveau de FRED ou presque 8O

Deprosges disait "plus je connais les hommes, plus j'aime mon chien" quand j'etais jeune cela m'avait fait rire....comme beaucoups de choses qui me faisaient rire..mais plus je m'approche de la fin, plus je m'apperçois avec douleur que cette expression et bien d'autres du même acabit sont de plus en plus tristement vraies :cry:

Donc je te remercie encore de cette parole, qui me remonte légèrement le moral. 8)
Tu codes tres bien, très vite, un niveau impréssionant, dans beaucoups de sujets, tes réalisations sont belles, classes, tu donnes, tu aides, tu t’améliores toujours, de jours en jours et à vue d'oeil comme GRom....tu es plein d'idée, et pour tout ça, bien que je ne soit pas "généreux" de nature, je ne peux que dire comme jean-marc "J'acheeeeeeeete !!!!" 8)
Je m’aperçois par la force des choses et au fil de l'eau que tu possèdes tout ce que je n'ai pas.
Bien que je ne soit pas tout à fait toujours d'accord avec toi sur certains petits sujets, tu risques forcément, et tant pis pour toi, de faire partie de ma liste de héros que je chérie bien malgré moi, et ceci même si personne ne me comprend.

Tu es une richesse pour ce forum, et au risque de passer pour ce que je suis déjà...
Je te remercie encore du fond du coeur de tout ces codes de dingues, précis, performants et toute la peine que tu te donnes pour réhausser le niveau de ce forum.
Et bien évidemment de toutes ces petites paroles gentilles à mon égard que tu écris de temps à autres 8)
Un peu de gentillesse dans un monde de brute.....







Donc je persiste et signe....pour mon copain SPH :wink: :D Image






Merci FALSAM, je crois que ça va m'etre utile 8)

Re: ListIconGadget : Inserer des Images

Publié : dim. 02/déc./2012 20:14
par Micoute
Lu et approuvé

Re: ListIconGadget : Inserer des Images

Publié : lun. 03/déc./2012 9:24
par MLD
@ KCC

Si j'ai bien compris ta philosophie: Plus tu avance et moins tu recule :oops: :wink: :mrgreen:

Re: ListIconGadget : Inserer des Images

Publié : lun. 03/déc./2012 10:47
par Micoute
MLD a écrit :@ KCC

Si j'ai bien compris ta philosophie: Plus tu avance et moins tu recule :oops: :wink: :mrgreen:
Oui, car qui n'avance pas recule vu que le progrès avance toujours ! :mrgreen:

Re: ListIconGadget : Inserer des Images

Publié : lun. 03/déc./2012 14:41
par Kwai chang caine
:lol: :lol:
Oui, micoute a raison, c'est un peu le principe de la nage a contre-courant dans une piscine
Tu patauges comme un malade, et cet enf... de pompe elle te rapproche les narpions du bord qu'il avaient poussé 1/4 d'heure auparavant :mrgreen:
Et ben la pompe, c'est le progres...il avance plus vite que je ne peux suivre, je me foutais de la pomme de mon pere en son temps pour le même sujet...et ben ça m'apprendra :? bien fait, je repense a lui quand je me trouve comme une poule devant une fourchette, avec un nouveau programme, OS, telephone, etc... :oops:

Et si vous rajoutez ce que j'ai appellé, "les labyrinthes a portes" pour imager le phénomene a quelqu'un qui ne connait pas l'informatique.
C'est un labyrinthe constitué d'immenses pieces qui ont noirs de portes.
Tu arrives au bout de la piece, tout plein de sueur, apres X jours d'apprentissage, tu ouvres la porte en te disant que le bol de sangria (Bigard) est juste derriere et que tu va enfin pouvoir ralentir et te dire que tu es a l'aise dans le sujet.
Et qu'est ce que tu "t'apperçois-je ????", y'a le même style gymnase avec ses portes derrieres 8O
Des fois...j'en pleurerais tellement ça me gonfle :lol:

Alors ce phénomene auquel tu rajoutes que les gymnases s'agrandisent au fur et a mesure que j'avance, et si on y rajoute quelque chose qui me tire en arriere, comme si j'avais coincé mes bretelles dans la derniere porte passée (Correspondant a la perte de memoire quotidienne), voila mon bonheur de tous les jours dans ce merveilleux monde de la technologie, tres souvent, je me dit que j'aurais du tomber amoureux de la boulangerie :D

Re: ListIconGadget : Inserer des Images

Publié : lun. 03/déc./2012 17:09
par MLD
@ KCC

8O 8O :lol: :lol:
Put.. Quelle vie , mais la boulange c'est hors du lit a 3 h du mat tous les jours, alors pour moi non merci.

Re: ListIconGadget : Inserer des Images

Publié : lun. 03/déc./2012 18:02
par Micoute
Oui, mais pour équilibrer les choses, on a ses après-midis de libres !

Re: ListIconGadget : Inserer des Images

Publié : mar. 04/déc./2012 22:15
par Kwai chang caine
Travailler quand les autres se reposent, et dormir debout toute la journée :lol: