PureBasic

Forums PureBasic
Nous sommes le Mer 17/Oct/2018 14:58

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 16 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Problème avec ProgressBarGadget
MessagePosté: Mer 07/Juin/2017 0:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 3842
Chez moi, ce code fini pas bugguer tot ou tard(- de 1 minute)
Egalement, il buggue quand il perd le focus et le retrouve
Le beep_() est la pour prouver que la routine continue a boucler et que c'est les ProgressBarGadget qui s'arretent de se dessiner...
Code:
If OpenWindow(0, 0, 0, 320, 160, "ProgressBarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 
Repeat
    i+1
    i%100
    ProgressBarGadget(0,  10, 30, 250,  30, 0, 100)
    SetGadgetState   (0, i)   ;  change la valeur de la 1ère barre de progression (ID = 0) à 50 sur 100
    j+1
    j%182
    ProgressBarGadget(1,  10, 90, 250,  30, 0, 182, #PB_ProgressBar_Smooth)
    SetGadgetState   (1, j)   ;  change la valeur de la 2ème barre de progression (ID = 1) à 50 sur 200
    k+1
    k%217
    ProgressBarGadget(2, 270, 10,  30, 120, 0, 217, #PB_ProgressBar_Vertical)
    SetGadgetState   (2, k)   ; change la valeur de la 3ème barre de progression (ID = 2) à 100 sur 300
   
    If i=0
      Beep_(1500,50)
    EndIf
   
    Delay(5)
ForEver

EndIf

_________________
http://xmas.free.fr/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.60 - 32 bits


Dernière édition par SPH le Sam 10/Juin/2017 14:28, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Mer 07/Juin/2017 0:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6736
Localisation: IDF (Yvelines)
Avec des gadgets en dehors de la boucle événementielle et une gestion des événements, ça ira mieux
Code:
If OpenWindow(0, 0, 0, 320, 160, "ProgressBarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ProgressBarGadget(0,  10, 30, 250,  30, 0, 100)
  ProgressBarGadget(1,  10, 90, 250,  30, 0, 182, #PB_ProgressBar_Smooth)
  ProgressBarGadget(2, 270, 10,  30, 120, 0, 217, #PB_ProgressBar_Vertical)
 
  Repeat
    Event = WaitWindowEvent(5)
   
    i+1
    i%100
   
    SetGadgetState   (0, i)   ;  change la valeur de la 1ère barre de progression (ID = 0) à 50 sur 100
    j+1
    j%182
    SetGadgetState   (1, j)   ;  change la valeur de la 2ème barre de progression (ID = 1) à 50 sur 200
    k+1
    k%217
    SetGadgetState   (2, k)   ; change la valeur de la 3ème barre de progression (ID = 2) à 100 sur 300
   
    If i=0
      Beep_(1500,50)
    EndIf
   
    If Event = #PB_Event_CloseWindow
      Quit = 1
    EndIf
   
  Until Quit = 1
EndIf

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.45 LTS & PB 5.62
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Restez informé Image Pure Basic Francophone Community

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Mer 07/Juin/2017 0:38 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 10/Sep/2007 11:13
Messages: 1291
tu ne dois pas recréer les barres dans la boucle principale

Code:
If OpenWindow(0, 0, 0, 320, 160, "ProgressBarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ProgressBarGadget(0,  10, 30, 250,  30, 0, 100)
    ProgressBarGadget(1,  10, 90, 250,  30, 0, 182, #PB_ProgressBar_Smooth)
    ProgressBarGadget(2, 270, 10,  30, 120, 0, 217, #PB_ProgressBar_Vertical)

Repeat
    i+1
    i%100
    SetGadgetState   (0, i)   ;  change la valeur de la 1ère barre de progression (ID = 0) à 50 sur 100
    j+1
    j%182
    SetGadgetState   (1, j)   ;  change la valeur de la 2ème barre de progression (ID = 1) à 50 sur 200
    k+1
    k%217
    SetGadgetState   (2, k)   ; change la valeur de la 3ème barre de progression (ID = 2) à 100 sur 300
   
    If i=0
      Beep_(1500,50)
    EndIf
    Delay(1)
    WaitWindowEvent(1)
ForEver

EndIf


_________________
ImageImage


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Mer 07/Juin/2017 0:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 3842
falsam, ton code a l'air de fonctionner sans bug.
Mon code etait la version ultra light de mon logiciel HTML Pictures Maker :
Code:
UseJPEGImageEncoder()
UseJPEGImageDecoder()
UseGIFImageDecoder()
UsePNGImageDecoder()


OpenWindow(0, 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

Global Repertoire$
calcul=0

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)
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
      SetGadgetText(10,Str(GetGadgetState(10)))
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If EventGadget() = 8 ;Il faut indiquer le bon gadget
      SetGadgetText(7, Str(37+GetGadgetState(8)*16)+" pixels de large")
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If EventGadget() = 13
      couleur=ColorRequester()
      r=Red(couleur)
      v=Green(couleur)
      b=Blue(couleur)
      Restore fond
      If StartDrawing(ImageOutput(14)); And couleur>=0
        For u=0 To 31
          For i=0 To 31
            Read.b  c.b
           
            If c=1
             
              If r=255
                rr=r-Random(50)
              Else
                rr=r+Random(50)
              EndIf
              If v=255
                vv=v-Random(50)
              Else
                vv=v+Random(50)
              EndIf
              If b=255
                bb=b-Random(50)
              Else
                bb=b+Random(50)
              EndIf
              Plot(i,u,RGB(rr,vv,bb))
             
            Else
             
              If r>235
                rr=r-10-Random(50)
              Else
                rr=r+10+Random(50)
              EndIf
              If v>235
                vv=v-10-Random(50)
              Else
                vv=v+10+Random(50)
              EndIf
              If b>235
                bb=b-10-Random(50)
              Else
                bb=b+10+Random(50)
              EndIf
              Plot(i,u,RGB(rr,vv,bb))
            EndIf
          Next
        Next
        StopDrawing()
        ImageGadget(14, 580, 394, 32, 32, ImageID(14))
      EndIf
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If EventGadget() = 16 And calcul=0
     
      calcul=1
      cmb=0
     
      If ExamineDirectory(0, Repertoire$, "*.*") 
       
        If CreateFile(0, Repertoire$+"index.html")
        Else
          MessageRequester("Erreur","Fabrication HTML impossible") : End
        EndIf
       
        WriteStringN(0,"<!doctype html>")
        WriteStringN(0,"<html lang="+Chr(34)+"fr"+Chr(34)+">")
        WriteStringN(0,"<head>")
        WriteStringN(0,"<title>"+GetGadgetText(5)+"</title>")
        WriteStringN(0,"<meta http-equiv="+Chr(34)+"X-UA-Compatible"+Chr(34)+" content="+Chr(34)+"IE=edge"+Chr(34)+">")
        WriteStringN(0,"<meta charset="+Chr(34)+"utf-8"+Chr(34)+" />")
        WriteStringN(0,"</head>")
        WriteStringN(0,"<body background="+Chr(34)+"fond.gif"+Chr(34)+">")
        WriteStringN(0,"<center>")
       
       
        nombre=0
        While NextDirectoryEntry(0)
           If DirectoryEntryType(0) = #PB_DirectoryEntry_File
             file$= DirectoryEntryName(0)
             Debug file$
            a$=Right(file$,5)
            Position = FindString(a$,".")
            If position<>0
              type$=Right(a$,5-position)
              Debug type$
             
              If (LCase(type$)="jpg" Or LCase(type$)="jpeg" Or LCase(type$)="bmp" Or LCase(type$)="gif" Or LCase(type$)="png") And LCase(file$)<>"fond.gif"
                nombre+1
              EndIf
            EndIf
          EndIf
        Wend
        FinishDirectory(0)
        Debug nombre
       
       
        ProgressBarGadget(16,  110, 453, 529,  22, 0, nombre)
;        ProgressBarGadget(16,  110, 453, 529,  22, 0, nombre, #PB_ProgressBar_Smooth)
        nombre2=0
                 
        ;;;;;;;;;;;;
       
        ExamineDirectory(0, Repertoire$, "*.*")
       
         While NextDirectoryEntry(0)
          If DirectoryEntryType(0) = #PB_DirectoryEntry_File
            file$= DirectoryEntryName(0)
            Debug file$
            ;;;
            TextGadget(0,250,20,  391, 40, file$);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;;
           
            a$=Right(file$,5)
            Position = FindString(a$,".")
            If position<>0
              type$=Right(a$,5-position)
              Debug type$
             
              gadgetX=37+GetGadgetState(8)*16
             
              If (LCase(type$)="jpg" Or LCase(type$)="jpeg" Or LCase(type$)="bmp" Or LCase(type$)="gif" Or LCase(type$)="png") And LCase(file$)<>"fond.gif"
               
                If GetGadgetState(6)<>0
                  If wwww=0
                    CreateDirectory(Repertoire$+"mini")
                    wwww=1
                  EndIf
                  LoadImage(0,Repertoire$+file$)
                  CopyImage(0,1)
                  ;;;;;;;;;;;
                  imagex=ImageWidth(0)
                  imagey=ImageHeight(0)
                  If imagex>imagey
                    imx=gadgetX
                    imy=imagey*imx/imagex
                   
                  Else
                    imy=gadgetX
                    imx=imagex*imy/imagey
                   
                  EndIf
                  ;;;;;;;;;;;
                  ResizeImage(1, imx,imy)
                  SaveImage(1,Repertoire$+"mini/"+file$,#PB_ImagePlugin_JPEG)
                  FreeImage(1)
                EndIf
               
                WriteStringN(0,"<td align=center valign=center>")
                WriteStringN(0,"<a href="+Chr(34)+file$+Chr(34)+" target="+Chr(34)+"_blank"+Chr(34)+">")
                WriteStringN(0,"<img src="+Chr(34)+"mini/"+file$+Chr(34)+" border=1></a>")
                WriteStringN(0,"</td>")
               
                nombre2+1
                SetGadgetState (16,nombre2)
               
                cmb+1
                If cmb>=GetGadgetState(10)
                  cmb=0
                  WriteStringN(0,"<br />")
                EndIf
               
              EndIf
             
            EndIf
           
          EndIf
         
        Wend
        FinishDirectory(0)
       
        WriteStringN(0,"<br />")
        WriteStringN(0,"</body>")
        WriteStringN(0,"</html>")
        CloseFile(0)
       
      EndIf
     
      SaveImage(14, Repertoire$+"fond.gif")
      If GetGadgetState(15)<>0
        RunProgram( Repertoire$+"index.html")
      EndIf
     
      ButtonGadget(16, 10,  450, 729, 28, "Générer la page")
      calcul=0
    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

_________________
http://xmas.free.fr/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.60 - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Mer 07/Juin/2017 20:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 3842
J'insiste : il y a un bug !

Je vais poster sur le fofo anglois :|

_________________
http://xmas.free.fr/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.60 - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Mer 07/Juin/2017 22:22 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 10/Sep/2007 11:13
Messages: 1291
t'es sur que c'est pas ton code ? car j'ai du mal a comprendre ton code a première vue :)
t'aimes les spaghettis :)
comment reproduire le bug avec ton code ?

_________________
ImageImage


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Mer 07/Juin/2017 22:46 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 3842
case a écrit:
t'es sur que c'est pas ton code ? car j'ai du mal a comprendre ton code a première vue :)
t'aimes les spaghettis :)
comment reproduire le bug avec ton code ?


il suffit de lister un gros repertoire rempli d'images puis de cliquer sur GENERER LA PAGE (decoche 'visualisé')
J'ai un repertoire de 240 photos et j'ai le bug presque systematiquement... :x

_________________
http://xmas.free.fr/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.60 - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Mer 07/Juin/2017 23:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6736
Localisation: IDF (Yvelines)
Si tes dires se basent sur le dernier code publié alors soulage la boucle événementielle en remplaçant
Code:
Evenement = WaitWindowEvent()
par
Code:
Evenement = WaitWindowEvent(10)
et dit nous si ça va mieux.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.45 LTS & PB 5.62
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Restez informé Image Pure Basic Francophone Community

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Jeu 08/Juin/2017 10:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 3842
falsam a écrit:
Si tes dires se basent sur le dernier code publié alors soulage la boucle événementielle en remplaçant
Code:
Evenement = WaitWindowEvent()
par
Code:
Evenement = WaitWindowEvent(10)
et dit nous si ça va mieux.

ca plante peut etre moins mais ca plante
:? :|

_________________
http://xmas.free.fr/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.60 - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Jeu 08/Juin/2017 12:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 27/Oct/2006 12:19
Messages: 1204
Localisation: Calvados (14)
Regarde ce topic de Typhoon qui n'est pas si loin de ce que tu veux faire. Lui se sert des threads pour "charger" ses images.

_________________
Image

Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Jeu 08/Juin/2017 17:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 3842
Je viens de passer l'apres midi a bidouiller mon code. J'ai enlevé le ProgressBarGadget et j'en ai fabriqué un 100% pb.
Et bien, ca plante quand je m'attaque a des dossiers bien fournis en image.
J'ai meme viré toute la partie html pour voir si ca ne venait pas de la. Non, ca bggue quand meme.
J'ai mis Evenement = WaitWindowEvent(1000) mais rien n'y fait.

Donc, il y a un bug mais je ne sais pas ou. Un truc interessant : quand je perd le focus et que je le remet, la barre de progression (que j'ai codé moi meme je le rappelle) bloque mais le calcul des mini images se fait quand meme !

J'en appelle a César (Fred)


Code:
UseJPEGImageEncoder()
UseJPEGImageDecoder()
UseGIFImageDecoder()
UsePNGImageDecoder()


OpenWindow(0, 0, 0, 749, 486+12, "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

Global Repertoire$
calcul=0

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)
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+15, 729, 28, "Générer la page")

;progressbar
;ProgressBarGadget(17,  110, 453, 529,  8, 0, 100)
CreateImage(17, 329,8)
      StartDrawing(ImageOutput(17))
      ;Debug Str(z)+"   "+Str(nombre2*328/nombre)
      For x = 0 To 328
        For y = 0 To 7
          Plot(x, Y, RGB(100+Random(50),40+Random(20),40+Random(20)))
        Next y
      Next x
      StopDrawing()
ImageGadget(17,  210, 453, 329, 8, ImageID(17))


;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(1000)
  If Evenement = #PB_Event_Gadget And calcul=0
   
CreateImage(17, 329,8)
      StartDrawing(ImageOutput(17))
      For x = 0 To 328
        For y = 0 To 7
          Plot(x, Y, RGB(100+Random(50),40+Random(20),40+Random(20)))
        Next y
      Next x
      StopDrawing()
ImageGadget(17,  210, 453, 329, 8, ImageID(17))

   
    If EventGadget() = 10 And calcul=0
      SetGadgetText(10,Str(GetGadgetState(10)))
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If EventGadget() = 8 And calcul=0
      SetGadgetText(7, Str(37+GetGadgetState(8)*16)+" pixels de large")
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If EventGadget() = 13 And calcul=0
      couleur=ColorRequester()
      r=Red(couleur)
      v=Green(couleur)
      b=Blue(couleur)
      Restore fond
      If StartDrawing(ImageOutput(14)); And couleur>=0
        For u=0 To 31
          For i=0 To 31
            Read.b  c.b
           
            If c=1
             
              If r=255
                rr=r-Random(50)
              Else
                rr=r+Random(50)
              EndIf
              If v=255
                vv=v-Random(50)
              Else
                vv=v+Random(50)
              EndIf
              If b=255
                bb=b-Random(50)
              Else
                bb=b+Random(50)
              EndIf
              Plot(i,u,RGB(rr,vv,bb))
             
            Else
             
              If r>235
                rr=r-10-Random(50)
              Else
                rr=r+10+Random(50)
              EndIf
              If v>235
                vv=v-10-Random(50)
              Else
                vv=v+10+Random(50)
              EndIf
              If b>235
                bb=b-10-Random(50)
              Else
                bb=b+10+Random(50)
              EndIf
              Plot(i,u,RGB(rr,vv,bb))
            EndIf
          Next
        Next
        StopDrawing()
        ImageGadget(14, 580, 394, 32, 32, ImageID(14))
      EndIf
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If EventGadget() = 16 And calcul=0
     
      calcul=1
      cmb=0
      z=0
     
      If ExamineDirectory(0, Repertoire$, "*.*") 
       
        If CreateFile(0, Repertoire$+"index.html")
        Else
          MessageRequester("Erreur","Fabrication HTML impossible") : End
        EndIf
       
        WriteStringN(0,"<!doctype html>")
        WriteStringN(0,"<html lang="+Chr(34)+"fr"+Chr(34)+">")
        WriteStringN(0,"<head>")
        WriteStringN(0,"<title>"+GetGadgetText(5)+"</title>")
        WriteStringN(0,"<meta http-equiv="+Chr(34)+"X-UA-Compatible"+Chr(34)+" content="+Chr(34)+"IE=edge"+Chr(34)+">")
        WriteStringN(0,"<meta charset="+Chr(34)+"utf-8"+Chr(34)+" />")
        WriteStringN(0,"</head>")
        WriteStringN(0,"<body background="+Chr(34)+"fond.gif"+Chr(34)+">")
        WriteStringN(0,"<center>")
       
       
        nombre=0
        While NextDirectoryEntry(0)
           If DirectoryEntryType(0) = #PB_DirectoryEntry_File
             file$= DirectoryEntryName(0)
             ; debug file$
            a$=Right(file$,5)
            Position = FindString(a$,".")
            If position<>0
              type$=Right(a$,5-position)
              ; debug type$
             
              If (LCase(type$)="jpg" Or LCase(type$)="jpeg" Or LCase(type$)="bmp" Or LCase(type$)="gif" Or LCase(type$)="png") And LCase(file$)<>"fond.gif"
                nombre+1
              EndIf
            EndIf
          EndIf
        Wend
        FinishDirectory(0)
        ; debug nombre
       
       
;        ProgressBarGadget(16,  110, 453, 529,  22, 0, nombre)
;        ProgressBarGadget(16,  110, 453, 529,  22, 0, nombre, #PB_ProgressBar_Smooth)
        nombre2=0
                 
        ;;;;;;;;;;;;
       
        ExamineDirectory(0, Repertoire$, "*.*")
       
         While NextDirectoryEntry(0)
          If DirectoryEntryType(0) = #PB_DirectoryEntry_File
            file$= DirectoryEntryName(0)
            ; debug file$
            ;;;
            TextGadget(0,250,20,  391, 40, file$);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;;
           
            a$=Right(file$,5)
            Position = FindString(a$,".")
            If position<>0
              type$=Right(a$,5-position)
              ; debug type$
             
              gadgetX=37+GetGadgetState(8)*16
             
              If (LCase(type$)="jpg" Or LCase(type$)="jpeg" Or LCase(type$)="bmp" Or LCase(type$)="gif" Or LCase(type$)="png") And LCase(file$)<>"fond.gif"
               
                If GetGadgetState(6)<>0
                  If wwww=0
                    CreateDirectory(Repertoire$+"mini")
                    wwww=1
                  EndIf
                  LoadImage(0,Repertoire$+file$)
                  CopyImage(0,1)
                  ;;;;;;;;;;;
                  imagex=ImageWidth(0)
                  imagey=ImageHeight(0)
                  If imagex>imagey
                    imx=gadgetX
                    imy=imagey*imx/imagex
                   
                  Else
                    imy=gadgetX
                    imx=imagex*imy/imagey
                   
                  EndIf
                  ;;;;;;;;;;;
                  ResizeImage(1, imx,imy)
                  SaveImage(1,Repertoire$+"mini/"+file$,#PB_ImagePlugin_JPEG)
                  FreeImage(1)
                EndIf
               
                WriteStringN(0,"<td align=center valign=center>")
                WriteStringN(0,"<a href="+Chr(34)+file$+Chr(34)+" target="+Chr(34)+"_blank"+Chr(34)+">")
                WriteStringN(0,"<img src="+Chr(34)+"mini/"+file$+Chr(34)+" border=1></a>")
                WriteStringN(0,"</td>")
               
                nombre2+1
                ;SetGadgetState (17,nombre2*100/nombre)
               
      StartDrawing(ImageOutput(17))
      ;Debug Str(z)+"   "+Str(nombre2*328/nombre)
      For x = z To nombre2*328/nombre
        For y = 0 To 7
          Plot(x, Y, RGB(20+Random(30),200+Random(55),20+Random(30)))
        Next y
      Next x
      z=nombre2*328/nombre
      StopDrawing()
     
      ;ImageGadget(0, 0, 0, 200, 200, ImageID(0))
      ImageGadget(17,  210, 453, 329, 8, ImageID(17))
      ;ProgressBarGadget(17,  110, 453, 529,  8, 0, 100)
               
               
                cmb+1
                If cmb>=GetGadgetState(10)
                  cmb=0
                  WriteStringN(0,"<br />")
                EndIf
               
              EndIf
             
            EndIf
           
          EndIf
         
        Wend
        FinishDirectory(0)
       
        WriteStringN(0,"<br />")
        WriteStringN(0,"</body>")
        WriteStringN(0,"</html>")
        CloseFile(0)
       
      EndIf
     
      SaveImage(14, Repertoire$+"fond.gif")
      If GetGadgetState(15)<>0
        RunProgram( Repertoire$+"index.html")
      EndIf
     
      ;ButtonGadget(16, 10,  450, 729, 28, "Générer la page")
      calcul=0
    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

_________________
http://xmas.free.fr/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.60 - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Jeu 08/Juin/2017 22:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6736
Localisation: IDF (Yvelines)
Ca me parait normal. Tant que tu es dans ta boucle While ... Wend dans lequel ta variable nombre est incrémentée, tu n'as pas accès à ta jauge. Donc pas de mise à jour.

Apparemment tu n'es pas encore au point avec les gadgets. Dans ta boucle événementielle tu crées x fois ImageGadget(17, 210, 453, 329, 8, ImageID(17))

Quand à ta façon de coder. héhé. Mais bon ça ne me regarde pas :wink:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.45 LTS & PB 5.62
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Restez informé Image Pure Basic Francophone Community

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Jeu 08/Juin/2017 23:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6736
Localisation: IDF (Yvelines)
j'ai regardé ton code en profondeur. Tu n'as pas d'autres solutions que de passer par un thread

Qu'est ce qu'un thread ?
Un thread est une partie de ton code qui peut être lancée en arrière plan du programme sans bloquer le reste de ton code. Quand tu quitte ton application, le ou les threads sont détruits.

Dans le code qui va suivre, on va lire 10000 fichiers et mettre à jour la jauge de progression.

:idea: ATTENTION : Ce code est à compiler avec l'option Thread dans les directives de compilation.

Menu Compilateur => Option du compilateur => Activer la gestion des threads

Code:
;ATTENTION : Ce code est à compiler avec l'option Thread dans les directives de compilation
;
;Menu Compilateur => Option du compilateur => Activer la gestion des threads

;Travailler avec des constantes c'est plus lisibles que des numéros
Enumeration Window
  #mf
EndEnumeration

Enumeration Gadget
  #mfOnOff
  #mfListFolder
  #mfCountFiles
  #mfProgress
EndEnumeration

;Déclaration des variables
Global OnOff.b        ;Interupteur OnOff (#True, #False)
Global CountFiles.i   ;Compteur de fichiers

;Plan application
Declare   Start()
Declare   OnOff()
Declare   StartThread(*Value)
Declare.s ParseDirectory(folder.s, id.l = 0)
Declare   Resize()
Declare   Exit()

;Appel de la procédure Start
Start()

;Affichage de l'application
Procedure Start()
 
  ;Creation de la fenetre
  OpenWindow(#mf, 0, 0, 400, 320,"Lecture d'un dossier(Thread)",#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget)
 
  ;On evite le chevauchements des gadgets en donnant une taille minimum à la fenetre
  WindowBounds(#mf, 300, 320, #PB_Ignore, #PB_Ignore)
   
  ;Création des gadgets
  TextGadget(#PB_Any, 5, 10, 120, 20, "Nombre de fichiers lus")
  TextGadget(#mfCountFiles, 130, 10, 80, 20, "0", #PB_Text_Right)
  ListIconGadget(#mfListFolder, 5, 30, 390,250, "Dossier", 200)
  AddGadgetColumn(#mfListFolder, 1, "Fichiers",200)
  ProgressBarGadget(#mfProgress, 5, 290, 200, 24, 0, 10000)
  ButtonGadget(#mfOnOff, 325, 290, 70, 24, "On/Off")
 
  ;Gestion des evenements
  BindGadgetEvent(#mfOnOff, @OnOff())        ;Si clique sur le bouton OnOff, appel de la procedure OnOff
  BindEvent(#PB_Event_SizeWindow, @Resize()) ;Redimentionner les gadgets de la fenêtre
  BindEvent(#PB_Event_CloseWindow, @Exit())  ;Si fermeture alors appel à la procedure Exit()
 
  Repeat : WaitWindowEvent(10) : ForEver
EndProcedure

;Procédure appelée quand on clique sur le bouton
Procedure OnOff()
  Static Thread
 
  If OnOff = #False
    ClearGadgetItems(#mfListFolder)
    CountFiles=0
    OnOff = #True
    Thread = CreateThread(@StartThread(), 0)
  Else
    OnOff = #False
  EndIf
EndProcedure

Procedure StartThread(*Value)
  ;On lance la lecture des fichiers
  ParseDirectory(GetEnvironmentVariable("USERPROFILE"))
 
  ;Une boucle d'attente quand que la variable OnOff reste à #True
  While OnOff = #True : Wend
EndProcedure

;Parcourir un dossier (Fonction recurssive by Flype il me semble)
Procedure.s ParseDirectory(folder.s, id.l = 0)
  If Right(folder, 1) <> "\"
    folder + "\"
  EndIf
 
  If ExamineDirectory(id, folder, "*.*")
    While NextDirectoryEntry(id) And OnOff = #True
      If DirectoryEntryName(id) <> "." And DirectoryEntryName(id) <> ".."
        AddGadgetItem(#mfListFolder,-1, folder + Chr(10) + DirectoryEntryName(id))
       
        ;Mise à jour du compteur de fichier lu (On s'arrete à 10 000 fichiers
        countFiles + 1
       
        ;Mettre à jour le ProgressBar (Inutile de le créer à nouveau)
        SetGadgetState(#mfProgress, countFiles)
        If CountFiles >= 10000
          OnOff()
        EndIf
       
        ;Affichage du coompteur de fichiers (Inutile de le créer à nouveau)
        SetGadgetText(#mfCountFiles, Str(CountFiles))
       
        If DirectoryEntryType(id) = #PB_DirectoryEntry_Directory
          ParseDirectory(folder + DirectoryEntryName(id), id + 1)
        EndIf
      EndIf
    Wend
    FinishDirectory(id)
  EndIf
EndProcedure

Procedure Resize()
  Protected WWidth=WindowWidth(#mf)
  Protected Wheight=WindowHeight(#mf)
  ResizeGadget(#mfListFolder, #PB_Ignore, #PB_Ignore , WWidth-10, Wheight-75)
  ResizeGadget(#mfProgress, #PB_Ignore, Wheight-30 , #PB_Ignore, #PB_Ignore) 
  ResizeGadget(#mfOnOff, WWidth - 75, Wheight-30 , #PB_Ignore, #PB_Ignore)
EndProcedure

Procedure Exit()
  End 
EndProcedure
10.000 Fichiers lus et pas un bug avec la jauge. :wink:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.45 LTS & PB 5.62
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Restez informé Image Pure Basic Francophone Community

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Ven 09/Juin/2017 7:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 1990
Localisation: 50200 Coutances
Merci falsam pour le partage, car c'est une pratique que j'utiliserai plus souvent désormais.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ProgressBarGadget buggue
MessagePosté: Ven 09/Juin/2017 23:16 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 3842
G-Rom a trouvé ce qui clochait.
Les elements qu'il a rajouté sont :
Code:
         While NextDirectoryEntry(0)
          WindowEvent()
          SmartWindowRefresh(0,1)

et un delay(10)

_________________
http://xmas.free.fr/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.60 - 32 bits


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 16 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye