ListIconGadget : Inserer des Images

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

ListIconGadget : Inserer des Images

Message 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.
Dernière modification par falsam le mer. 23/sept./2015 15:51, modifié 2 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: ListIconGadget : Inserer des Images

Message par Kwai chang caine »

Merci FALSAM, je crois que ça va m'etre utile 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: ListIconGadget : Inserer des Images

Message par SPH »

Kwai chang caine a écrit :je crois que ça va m'etre utile
Tu dis tout le temps ca :mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: ListIconGadget : Inserer des Images

Message 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 ..
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: ListIconGadget : Inserer des Images

Message 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:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: ListIconGadget : Inserer des Images

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

Re: ListIconGadget : Inserer des Images

Message 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)
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: ListIconGadget : Inserer des Images

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: ListIconGadget : Inserer des Images

Message par Micoute »

Lu et approuvé
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: ListIconGadget : Inserer des Images

Message par MLD »

@ KCC

Si j'ai bien compris ta philosophie: Plus tu avance et moins tu recule :oops: :wink: :mrgreen:
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: ListIconGadget : Inserer des Images

Message 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:
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: ListIconGadget : Inserer des Images

Message 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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: ListIconGadget : Inserer des Images

Message 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.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: ListIconGadget : Inserer des Images

Message par Micoute »

Oui, mais pour équilibrer les choses, on a ses après-midis de libres !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: ListIconGadget : Inserer des Images

Message par Kwai chang caine »

Travailler quand les autres se reposent, et dormir debout toute la journée :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre