liste de bouton / icon | |
sebastien | 11-Jun-2007/13:52:07+2:00 |
JE desire créer un explorateur pour les fichiers images et je desire afficher les images dans des boutons je voudrais savoir si il est possible de creer un boucle qui crée le même nombre de bouton que d image pour les afficher | |
guest2 | 11-Jun-2007/15:56:08+2:00 |
ben tu peux utiliser le style 'list pour gérér une liste d'images:REBOL [] ;repertoire des images path: %./ image-list: [] ; construction de la liste foreach image read path [ if find ["png" "bmp" "gif" "jpeg"] last parse image "." [ append/only image-list reduce [image form image] ] ] view layout [ vh2 "Images:" list 54x450 [ origin 0 space 0 below image 50x50 [print txt/text] txt: text blue 50 ] data image-list ] halt | |
Didec | 11-Jun-2007/16:31:17+2:00 |
Evidemment, c'est même une force de Rebol. Code et données étant la même chose, il suffit de construire un bloc d'instructions VID que tu fera interpréter par LAYOUT ensuite. Voilà un bon début à étudier et améliorer (attention : mangeur de mémoire si beaucoup et grosses images) rebol [] dir: request-file/only if none? dir [quit] dir: first split-path dir ; Est-ce une image ? Oui si l'extension est bonne image?: func [file [file!]] [ found? find [%.jpg %.gif %.png %.bmp] find/last file #"." ] cpt: 0 make-button-panel: func [dir /local lay dir-f emit] [ ; le block que l'on créé, avec le style de bouton par défaut lay: copy [ origin 4x4 space 4x4 across style but button 70x50 ] ; petite fonction utilitaire pour ajouter au layout emit: func [blk] [ append lay compose/deep blk ] ; parcours des fichiers foreach f read dir [ dir-f: join dir f ; c'est un répertoire : récursion dans une nouvelle fenêtre si on clic either dir? dir-f [ emit [but (form f) [view/new layout make-button-panel (dir-f)]] ] [ ; c'est une image either image? f [ emit [but (form f) (dir-f) [print (dir-f)]] ] [ ; c'est autre chose emit [but (form f)] ] ] ; on met pas plus de 10 boutons par ligne cpt: cpt + 1 if 0 = (cpt // 10) [emit [return]] ] lay ] view layout make-button-panel dir | |
guest2 | 11-Jun-2007/17:07:13+2:00 |
Une solution pour ne pas manger de la mémoire, c'est de réduire les images avant de les passer au layout.... ; c'est une image either image? f [ ; réduction de l'image au format icone (pour sauver de la mémoire) img: to-image make get-style 'image [offset: 0x0 image: load dir-f size: 70x50] emit [but (form f) (img) [print (dir-f)]] ] [ ; c'est autre chose emit [but (form f)] ] ... | |
Didec | 11-Jun-2007/17:21:10+2:00 |
Je laissais cet exercice au lecteur | |
guest2 | 11-Jun-2007/17:23:31+2:00 |
c'est ton côté prof ça | |
guest2 | 15-Jun-2007/23:20:03+2:00 |
Pas de nouvelles, bonnes nouvelles. Enfin, il parait... | |
Login required to Post. |