http://www.purebasic.fr/french/viewtopi ... =6&t=16091
voici une application concrète de l'utilité de cette méthode
un prg pour avoir des Smileys sous la main ...
le prg va lire toutes les images se trouvant dans un dossier de mon site (ou de votre site si vous changez )
et ceux quelques soit le nombre d'images que j'ajouterai ou retirerai ..
sans qu'on ait besoin de modifier le prg

le prg affiche les images smiley qu'il trouve (une centaine)
avec un Scroll bar pour defiler en horizontal ....
si vous survolez une image avec la souris le BBcode est automatiquement inscrit dans le String
plus qu'a sélectionner et coller dans vos forums préféré !

ça tombe bien, le notre, manque sérieusement de smiley ....
le code utilise mon site, mais bien sur je vous enjoint a utiliser le votre

voici le source que vous pouvez utiliser tel quel ...
ps: la position de le fenetre est sauvegardé en quittant ...
Code : Tout sélectionner
;***********************************************
;Titre :*Pure_Smiley
;Auteur : Zorro
;Date :07/06/2016
;Heure :20:17:13
;Version Purebasic : PureBasic 5.42 LTS (Windows - x86)
;Version de l'editeur :EPB V2.62
; Libairies necessaire : Aucune
;***********************************************
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
Declare recup_image(adresse.s)
Enumeration
#win
#Scroll_area
#String
#compteur
EndEnumeration
#File2=2
Structure Gadget
Identity_gadget.i
BBcode.s
EndStructure
Global NewList Gadget.gadget()
if OpenFile(#file2,"Pure_Smiley.inf")
Win_x=Val(ReadString(#file2))
Win_y=Val(ReadString(#file2))
CloseFile(#file2)
Endif
If OpenWindow(#win, Win_x, Win_y, 800, 200, "Pure Smiley", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget )
StringGadget(#String, 10, 170, 700, 30, "")
TextGadget(#compteur,GadgetWidth(#String)+30,GadgetY(#String),50,50,"0")
ScrollAreaGadget(#Scroll_area, 10, 10, 800,150,80, 150, 30)
Recup_image("http://michel.dobro.free.fr/Pure_Smiley/file_dir.txt")
CloseGadgetList()
;-boucle
Repeat
EventID.l=WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
ForEach gadget()
if Gadget()\Identity_gadget.i=EventGadget()
SetGadgetText(#String, Gadget()\BBCode.s)
Break
Endif
Next
EndSelect
Until EventID.l= #PB_Event_CloseWindow
OpenFile(#file2,"Pure_Smiley.inf")
WriteStringN(#file2,Str(WindowX(#win)))
WriteStringN(#file2,Str(WindowY(#win)))
CloseFile(#file2)
EndIf
;-Zone Procedures
Procedure Recup_image(Adresse.s)
;By Zorro
;-recuperation du fichier "file_dir.txt"
InitNetwork()
If ReceiveHTTPFile(Adresse.s,"file_dir.txt")
Else
MessageRequester("Erreur","Le fichier n'as pas pu etre récuperé !")
Endif
#file=1
; initialisation position
x_im=0 :y_im=0
;-Lecture du contenu du fichier "file_dir.txt"
If ReadFile(#file, "file_dir.txt") ; Si le fichier peut être lu , on continue...
While Eof(#file) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
;Debug ReadString(#file) ; Affiche le nom du fichier image
Name_file.s=ReadString(#file) ;lit le nom des images dans le fichier
extension.s="."+GetExtensionPart(Name_file.s)
if extension.s =".gif" or extension.s =".bmp" or extension.s =".jpg" or extension.s =".jpeg" or extension.s =".tga" or extension.s =".png"
Adresse.s=GetPathPart(Adresse.s) ; on recup l'adresse ou se trouve les images
;-creation du webgadget avec l'adresse de l'image
id_web_gadget=WebGadget(#pb_any,x_im,y_im,128,128,Adresse.s+"img/"+Name_file.s) ; creer un Webgadet pour afficher l'image
;-ajout du numero du gadgetweb + adresse de l'image
AddElement(Gadget())
Gadget()\Identity_gadget.i = id_web_gadget
Gadget()\BBcode.s ="[img]"+Adresse.s+"img/"+Name_file.s+"[/img]"
x_im=x_im+130
SetGadgetAttribute(#scroll_area, #PB_ScrollArea_InnerWidth ,x_im) ; modifie l'Area de la fenetre
compteur=compteur+1 ; accessoirement compte les images trouvée
SetGadgetText(#compteur,str(compteur)) ; on l'affiche
Endif
Wend
CloseFile(#file) ; Ferme le fichier précédemment ouvert
Else
MessageRequester("Information","Impossible d'ouvrir le fichier!")
EndIf
EndProcedure
; Epb

VErsion 2 avec resize fenetre et smiley danbs l'interface
Code : Tout sélectionner
;***********************************************
;Titre :*Pure_Smiley
;Auteur : Zorro
;Date :07/06/2016
;Heure :20:17:13
;Version Purebasic : PureBasic 5.42 LTS (Windows - x86)
;Version de l'editeur :EPB V2.62
; Libairies necessaire : Aucune
;***********************************************
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
Taille_x=64 ; taille x du Smiley representé dans l'interface Max 128 ......Min 16
Taille_y=64 ; ; taille y du Smiley representé dans l'interface Max 128 ..... min 16
Declare recup_image(adresse.s,Taille_x,Taille_y)
Enumeration
#win
#Scroll_area
#String
#compteur
EndEnumeration
#File2=2
Structure Gadget
Identity_gadget.i
BBcode.s
EndStructure
Global NewList Gadget.gadget()
if OpenFile(#file2,"Pure_Smiley.inf")
Win_x=Val(ReadString(#file2))
Win_y=Val(ReadString(#file2))
CloseFile(#file2)
Endif
If OpenWindow(#win, Win_x, Win_y, 800, 200, "Pure Smiley", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget )
StringGadget(#String, 10, 170, 700, 30, "")
TextGadget(#compteur,GadgetWidth(#String)+30,GadgetY(#String),50,50,"0")
ScrollAreaGadget(#Scroll_area, 10, 10, 800,150,80, 150, 30)
Recup_image("http://michel.dobro.free.fr/Pure_Smiley/file_dir.txt",Taille_x,Taille_y)
ResizeWindow(#win,#PB_Ignore,#PB_Ignore,#PB_Ignore,50+Taille_y +20)
ResizeGadget(#Scroll_area,#pb_ignore,#PB_Ignore,#PB_Ignore,WindowHeight(#win)-50)
ResizeGadget(#string,#pb_ignore,WindowHeight(#win)-30,#PB_Ignore,#PB_Ignore)
ResizeGadget(#compteur,#pb_ignore,WindowHeight(#win)-30,#PB_Ignore,#PB_Ignore)
CloseGadgetList()
;-boucle
Repeat
EventID.l=WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
ForEach gadget()
if Gadget()\Identity_gadget.i=EventGadget()
SetGadgetText(#String, Gadget()\BBCode.s)
Break
Endif
Next
EndSelect
Until EventID.l= #PB_Event_CloseWindow
OpenFile(#file2,"Pure_Smiley.inf")
WriteStringN(#file2,Str(WindowX(#win)))
WriteStringN(#file2,Str(WindowY(#win)))
CloseFile(#file2)
EndIf
;-Zone Procedures
Procedure Recup_image(Adresse.s,Taille_x,Taille_y)
;By Zorro
;-recuperation du fichier "file_dir.txt"
InitNetwork()
If ReceiveHTTPFile(Adresse.s,"file_dir.txt")
Else
MessageRequester("Erreur","Le fichier n'as pas pu etre récuperé !")
Endif
#file=1
; initialisation position
x_im=0 :y_im=0
;-Lecture du contenu du fichier "file_dir.txt"
If ReadFile(#file, "file_dir.txt") ; Si le fichier peut être lu , on continue...
While Eof(#file) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
;Debug ReadString(#file) ; Affiche le nom du fichier image
Name_file.s=ReadString(#file) ;lit le nom des images dans le fichier
extension.s="."+GetExtensionPart(Name_file.s)
if extension.s =".gif" or extension.s =".bmp" or extension.s =".jpg" or extension.s =".jpeg" or extension.s =".tga" or extension.s =".png"
Adresse.s=GetPathPart(Adresse.s) ; on recup l'adresse ou se trouve les images
;-creation du webgadget avec l'adresse de l'image
; on creer une page Html pour pouvoir redimentionner les images, de sorte qu'elle restent
; compatible avec l'interface
; mais les images auront leur Vraie taille sur le Forum
adr$=""
Html$=""
adr$=Adresse.s+"img/"+Name_file.s
Html$+"<!DOCTYPE html>"+chr(10)
Html$+"<html>"+chr(10)
Html$+"<head>"+chr(10)
; <meta content="text/html; charset=UTF-8" http-equiv="content-type">
Html$+"<meta content="+chr(34)+"text/html; charset=UTF-8"+chr(34)+" http-equiv="+chr(34)+"content-type"+chr(34)+"> "+chr(10)
Html$+" <title></title> "+chr(10)
Html$+"</head>"+chr(10)
Html$+"<body>"+chr(10)
Html$+"<p><br>"+chr(10)
Html$+"<img style="+chr(34)+"POSITION: absolute; TOP: 0px; LEFT: 0px; border: 0 "+chr(34)+" src="+chr(34)+adr$+chr(34)+" align="+chr(34)+"top"+chr(34)+" height="+chr(34)+str(Taille_x)+chr(34)+" width="+chr(34)+str(Taille_y)+chr(34)+">"+chr(10)
Html$+"</p>" +chr(10)
Html$+"</body>"+chr(10)
Html$+"</html>"+chr(10)
id_web_gadget=WebGadget(#pb_any,x_im,y_im,Taille_x+16,Taille_y+16,"") ; creer un Webgadet pour afficher l'image
SetGadgetItemText(id_web_gadget, #PB_Web_HtmlCode ,html$)
;-ajout du numero du gadgetweb + adresse de l'image
AddElement(Gadget())
Gadget()\Identity_gadget.i = id_web_gadget
Gadget()\BBcode.s ="[img]"+Adresse.s+"img/"+Name_file.s+"[/img]"
x_im=x_im+130
SetGadgetAttribute(#scroll_area, #PB_ScrollArea_InnerWidth ,x_im) ; modifie l'Area de la fenetre
compteur=compteur+1 ; accessoirement compte les images trouvée
SetGadgetText(#compteur,str(compteur)) ; on l'affiche
Endif
Wend
CloseFile(#file) ; Ferme le fichier précédemment ouvert
Else
MessageRequester("Information","Impossible d'ouvrir le fichier!")
EndIf
EndProcedure
; Epb