Page 2 sur 2

Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 10:43
par Marc56
J'ai testé sous: Windows 10 x64, Windows 7, Vista, XP. Ça fonctionne partout :|

Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 12:39
par Ar-S
Mets ton OS, et ta/tes version(s) de PB dans ta signature, ça évitera de toujours poser la question.
Si on PC rame à afficher 10 miniatures dans un gadget, regarde dans le gestionnaire de tâche windows si tu n'as pas une appli qui te bouffe tout le processeur.
J'ai un gros PC, je confirme que l'affichage est instantané (PB5.60 x64)

Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 14:10
par SPH
Voici 3 photos representant 3 etapes :
Image

Image

Image

La premiere photo montre se qui s'affiche au lancement du code :

Code : Tout sélectionner

OpenWindow(0, 0, 0, 749, 470, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If LoadImage(0, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
     ImageGadget(0,  10, 10, 728, 53, ImageID(0))                      ; imagegadget standard
EndIf

CompilerIf #PB_Compiler_Version = 560
     ; Si PB 5.60 on a directement accès au répertoire image
     Repertoire$ = GetUserDirectory(#PB_Directory_Pictures)
CompilerEndIf

ExplorerTreeGadget(1, 11, 73, 360, 300, Repertoire$, #PB_Explorer_NoFiles)
ExplorerListGadget(2, 377,73,360,300, "*.jpg;*.jpeg;*.bmp;*.gif;*.png", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)

Procedure Afficher_fichiers()
     SetGadgetText(2, "")                    ; Vider la liste des fichiers
     Repertoire$ = GetGadgetText(1)          ; Voir quel est le répertoire sélectionné 
     SetGadgetText(2, Repertoire$)           ; Remplir la liste avec le répertoire
EndProcedure

; Si clic gauche sur l'arbre ou déplacement avec les flèches, alors afficher les fichiers dans la fenêtre liste fichiers
BindGadgetEvent(1, @Afficher_fichiers(), #PB_EventType_Change) ; #PB_EventType_LeftClick) 

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

End
Pas de fichiers image.
2eme photo : je clique sur l'arborescence (au hazard)
3eme photo : je reviens sur l'emplacement d'origine (meme emplacement que sur la 1ere photo) : et la, ca affiche le fichier image !

Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 15:29
par Zorro
peut etre comme ça :

note, que j'ai ajouté la possibilité d'afficher l'image choisie dans l'explorateur
donc choisi une image click dessus, elle apparaîtra dans le petit icone du haut ....:)

Code : Tout sélectionner

UseJPEGImageDecoder()
UsePNGImageDecoder()
Enumeration
		#Win 
		#Image 
		#image_gadget
		#tree_gadget
		#liste_gadget
Endenumeration

Declare afficher_fichiers()

OpenWindow(#win, 0, 0, 749, 470, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If LoadImage(#image, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image		
		ResizeImage(#image,728, 53)
		ImageGadget(#image_gadget,  10, 10, 728, 53, ImageID(#image),#PB_Image_Border )                      ; imagegadget standard
EndIf
CompilerIf #PB_Compiler_Version = 560
		; Si PB 5.60 on a directement accès au répertoire image
		Repertoire$ = GetUserDirectory(#PB_Directory_Pictures)
CompilerEndIf
ExplorerTreeGadget(#tree_gadget, 11, 73, 360, 300, Repertoire$, #PB_Explorer_NoFiles)
ExplorerListGadget(#liste_gadget, 377,73,360,300, "*.jpg;*.jpeg;*.bmp;*.gif;*.png", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)



Repeat 
		; Si clic gauche sur l'arbre ou déplacement avec les flèches, alors afficher les fichiers dans la fenêtre liste fichiers
		;	BindGadgetEvent(#tree_gadget, @Afficher_fichiers(), #PB_EventType_Change) ; #PB_EventType_LeftClick)
		Event=WaitWindowEvent(2) 
		Select Event
		Case #PB_Event_Gadget
				Select EventGadget()
				Case #tree_gadget
						SetGadgetText(#liste_gadget, "")                    ; Vider la liste des fichiers
						Repertoire$ = GetGadgetText(#tree_gadget)          ; Voir quel est le répertoire sélectionné
						SetGadgetText(#liste_gadget, Repertoire$)           ; Remplir la liste avec le répertoire
				Case #liste_gadget
						Path.s=GetGadgetText(#liste_gadget)
						Path.s=Path.s+GetGadgetItemText(#liste_gadget,  GetGadgetState(#liste_gadget) )
						If LoadImage(#image, Path.s)    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image	
								ResizeImage(#image,50,50)
								ImageGadget(#image_gadget,  10, 10, 50, 50, ImageID(#image),#PB_Image_Border )      
						EndIf
				EndSelect
		EndSelect
Until Event = #PB_Event_CloseWindow

End

;- ******* Zone Procedures ************
Procedure Afficher_fichiers()
EndProcedure

Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 15:53
par SPH
Pas mal zorro : j'adopte (le bug a disparu et en plus, on peux matter l'image)

EDIT : je ne reprendrais pas mot pour mot ton code mais je vais le decouper pour comprendre comment il marche 8)

Re: Cherche les bons gadgets

Publié : lun. 29/mai/2017 16:36
par Zorro
:)

Re: Cherche les bons gadgets

Publié : mar. 30/mai/2017 6:16
par Marc56
C'est intéressant comme résultat: cela montre que la méthode de gestion des évènements par callback n'est pas la panacée et que la méthode classique doit être conservée (et parfois préférée pour la compatibilité)
:arrow: Un ajout pourrait-être fait dans la doc si on arrive à isoler quels gadgets supportent mal les callback ?

:?: Le callback se ferait-il trop vite ou pas assez sur certains gadgets ?
(il est par contre intéressant pour redimensionner une fenêtre: les gadgets sont alors redimensionnés en temps réel plutôt qu'au relâché de la souris)

:wink:

Re: Cherche les bons gadgets

Publié : mar. 30/mai/2017 9:41
par Ar-S
Tout comme il faut préférer les callback pour les timers qui de "freezeront" pas au déplacement de la fenêtre.
Le mieux est de faire des tests.

Re: Cherche les bons gadgets

Publié : mar. 30/mai/2017 22:25
par falsam
@SPH : Suite à ta question sur le chatroom : http://www.purebasic.com/french/documen ... ester.html

Re: Cherche les bons gadgets

Publié : mar. 30/mai/2017 23:09
par SPH
En effet, c'etait simple. Danke :P

Re: Cherche les bons gadgets

Publié : mer. 31/mai/2017 17:12
par Zorro
je ne suis pas au courant de la conversation sur le chat mais si tu veux un gadget qui fasse de la couleur j'en avais fait un il y a quelques temps voir ici
http://www.purebasic.fr/french/viewtopi ... lor+gadget

Re: Cherche les bons gadgets

Publié : mer. 31/mai/2017 20:56
par falsam
Ha ben tu as bien fait de le citer ce topic. Je l'avais oublié et à la relecture et j'ai bien ri. :wink:

Re: Cherche les bons gadgets

Publié : mer. 31/mai/2017 22:57
par JohnJohnsonSHERMAN
Je l'ai de ce fait enregistré bien au chaud ce petit topic de type lol et intéressant ^ Et j'ai appris un truc sur Shadow :o :mrgreen:

Re: Cherche les bons gadgets

Publié : dim. 04/juin/2017 19:37
par SPH
Je me demandais si c'est possible de voir les vignettes des photos presentes sur le gadget de droite (au lieu de voir une liste de photos) ?? :idea:

Code : Tout sélectionner

OpenWindow(0, 0, 0, 749, 470, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If LoadImage(0, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
     ImageGadget(0,  10, 10, 728, 53, ImageID(0))                      ; imagegadget standard
EndIf

     Repertoire$ = ""


ExplorerTreeGadget(1, 10, 73, 360, 300, Repertoire$, #PB_Explorer_NoFiles)
ExplorerListGadget(2, 376,73,360,300, "*.jpg", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)

Procedure Afficher_fichiers()
     SetGadgetText(2, "")                    ; Vider la liste des fichiers
     Repertoire$ = GetGadgetText(1)          ; Voir quel est le répertoire sélectionné 
     SetGadgetText(2, Repertoire$)           ; Remplir la liste avec le répertoire
EndProcedure

; Si clic gauche sur l'arbre ou déplacement avec les flèches, alors afficher les fichiers dans la fenêtre liste fichiers
BindGadgetEvent(1, @Afficher_fichiers(), #PB_EventType_Change) ; #PB_EventType_LeftClick) 

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

End
Merci 8)


ps : voici ou j'en suis avec mes gadgets :

Code : Tout sélectionner

Enumeration
      #Win 
      #Image 
      #image_gadget
      #tree_gadget
      #liste_gadget
EndEnumeration


OpenWindow(#Win, 0, 0, 749, 486, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If LoadImage(0, "c:\SPH\PB\titre.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
     ImageGadget(0,  10, 10, 728, 53, ImageID(0))                      ; imagegadget standard
EndIf

; CompilerIf #PB_Compiler_Version = 560
;      ; Si PB 5.60 on a directement accès au répertoire image
;      ;Repertoire$ = GetUserDirectory(#PB_Directory_Pictures)
     Repertoire$ = ""
; CompilerEndIf

ExplorerTreeGadget(1, 11, 73, 360, 300, Repertoire$, #PB_Explorer_NoFiles)
ExplorerListGadget(2, 377,73,360,300, "*.jpg;*.jpeg;*.bmp;*.gif;*.png", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)

FrameGadget(3, 11,  380, 727,65, "", #PB_Frame_Single)

;titre
TextGadget(4, 20, 388,90,20,"Titre de la page :")
StringGadget(5, 20,  410, 150, 20, "")

;vignettes
CheckBoxGadget(6, 200,  388, 70, 20, " Vignettes :")
SetGadgetState(6, #PB_Checkbox_Checked)
TrackBarGadget(8, 200, 410, 180, 25, 0, 12, #PB_TrackBar_Ticks)
SetGadgetState(8, 6)
TextGadget(7, 285,  391, 95, 17, Str(37+GetGadgetState(8)*16)+" pixels de large")


;colonnes
TextGadget(9, 410, 388,50,20,"Colonnes :")
SpinGadget     (10, 410, 410, 45, 25, 1, 100)
SetGadgetState (10, 8) : SetGadgetText(10, "8")   ; définit la valeur initiale

;papier peint
CheckBoxGadget(11, 490,  388, 80, 20, " Papier peint :")
SetGadgetState(11, #PB_Checkbox_Checked)
;12 palette
;13 générer
ButtonGadget(13, 500,  412, 70, 18, "Couleur")
;14 image fong.gif
   If CreateImage(14, 32,32) And StartDrawing(ImageOutput(14))
      For x = 0 To 31
        For y = 0 To 31
          Plot(X, Y, RGB(255,255,255))
        Next y
      Next x
      StopDrawing() 
      ImageGadget(14, 580, 394, 32, 32, ImageID(14))
    EndIf


;visualiser
CheckBoxGadget(15, 650,  388, 80, 20, " Visualiser")
SetGadgetState(15, #PB_Checkbox_Checked)

;generer le html
ButtonGadget(16, 10,  450, 729, 28, "Générer la page")

;ImageGadget(0,  10, 10, 728, 53, ImageID(0))                      ; imagegadget standard

Procedure Afficher_fichiers()
     SetGadgetText(2, "")                    ; Vider la liste des fichiers
     Repertoire$ = GetGadgetText(1)          ; Voir quel est le répertoire sélectionné 
     SetGadgetText(2, Repertoire$)           ; Remplir la liste avec le répertoire
EndProcedure

; Si clic gauche sur l'arbre ou déplacement avec les flèches, alors afficher les fichiers dans la fenêtre liste fichiers
BindGadgetEvent(1, @Afficher_fichiers(), #PB_EventType_Change) ; #PB_EventType_LeftClick) 

;Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow



Repeat
   Evenement = WaitWindowEvent()
   If Evenement = #PB_Event_Gadget
    If EventGadget() = 10 ;Il faut indiquer le bon gadget
     SetGadgetText(10,Str(GetGadgetState(10))) ; là aussi
    EndIf
    If EventGadget() = 8 ;Il faut indiquer le bon gadget
      ;MessageRequester("",Str(GetGadgetState(8)))
      SetGadgetText(7, Str(37+GetGadgetState(8)*16)+" pixels de large")

      ;MessageRequester("",Str(GetGadgetState(10)))
     ;Debug (GetGadgetText(5))
    EndIf
    If EventGadget() = 13 ;Il faut indiquer le bon gadget
      couleur=ColorRequester()
      Restore fond
      
;       If CreateImage(14, 32,32) And StartDrawing(ImageOutput(14))
      If StartDrawing(ImageOutput(14))
      For u=0 To 31
        For i=0 To 31
          Read.b  c.b
          ;Debug Str(i)+"  "+Str(u)+"  "+Str(c)
          If c=1
            Plot(i,u,couleur)
          Else
            Plot(i,u,15)
          EndIf
        Next
      Next
      StopDrawing() 
      ImageGadget(14, 580, 394, 32, 32, ImageID(14))
    EndIf
      
      
;          If CreateImage(14, 32,32) And StartDrawing(ImageOutput(14))
;       For x = 0 To 31
;         For y = 0 To 31
;           Plot(X, Y, RGB(255,255,255))
;         Next y
;       Next x
;       StopDrawing() 
;       ImageGadget(14, 580, 394, 32, 32, ImageID(14))
;     EndIf

      ;MessageRequester("",Str(GetGadgetState(8)))
      ;MessageRequester("",Str(GetGadgetState(10)))
     ;Debug (GetGadgetText(5))
    EndIf
   EndIf
Until Evenement = #PB_Event_CloseWindow
End

;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;

DataSection
fond:
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data .b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
EndDataSection