Page 1 sur 1

WebGadget Et Delay() [Freez]

Publié : lun. 28/mars/2016 17:55
par digital
Bonjour voila normalement via ce code la logique serai d'aller sur un site web via le webgadget, de le charger et laisser visionner son contenu et au bout de quelque seconde changer de page.

Hors le delay bloque le controle completement.

Code : Tout sélectionner

   MainFormShow() ; Procedure ou on crée le webgadjet 
urltoview$ = "http://www.google.fr" 

;C'est la que sa commence à merder 
    SetGadgetText(#Webgadget, urltoview$) 

   While GetGadgetAttribute(#Webgadget, #PB_Web_Busy)
    WaitWindowEvent(1)
    SetGadgetText(#Webgadget, "Page loading... Please wait.")
  Wend

Delay(4000) ;On souhaite rester sur la page sans bloquer l'appli 
Debug GetGadgetText(#Webgadget) ; Dans la logique je devrai avoir http://www.google.fr mais sa sera pas le cas

urltoview$ = "http://www.falsam.com" ; 

SetGadgetText(#Webgadget, urltoview$) ; On change sur un autre site.

Debug GetGadgetText(#Webgadget) 


;Au final l'appli se lance, patiente bien mais saute l'étape de rester sur
;google pendant quelque seconde et va directement sur falsam.com mvoila.
  

Re: WebGadget Et Delay() [Freez]

Publié : lun. 28/mars/2016 18:13
par digital
Bon bah via un createthread() en mettant le delay et l'action de changer d'adresse au gadget ça fonctionne.
C'est surement pas le plus opti/propre/meilleur moyen de le faire mais bon.

Re: WebGadget Et Delay() [Freez]

Publié : lun. 28/mars/2016 18:24
par venom
Personnellement je t'aurais conseillé un thread.






@++

Re: WebGadget Et Delay() [Freez]

Publié : lun. 28/mars/2016 19:04
par Ar-S
Regarde du coté des timers :wink:
Tu peux aussi matter l'exemple de la doc du coté de NavigationCallback()

Re: WebGadget Et Delay() [Freez]

Publié : lun. 28/mars/2016 19:23
par falsam
Ar-s ne lui donne pas de conseil. Son code est pourri :mrgreen:

Faire ça pendant que la page charge, bien sur que la page bloque

Code : Tout sélectionner

While GetGadgetAttribute(#Webgadget, #PB_Web_Busy)
    WaitWindowEvent(1)
    SetGadgetText(#Webgadget, "Page loading... Please wait.")
  Wend

Code : Tout sélectionner

Delay(4000) ;On souhaite rester sur la page sans bloquer l'appli 
Pas de commentaire :wink:

Code : Tout sélectionner

urltoview$ = "http://www.falsam.com" ; 

SetGadgetText(#Webgadget, urltoview$) ; On change sur un autre site.
digital a écrit :Au final l'appli se lance, patiente bien mais saute l'étape de rester sur
google pendant quelque seconde et va directement sur falsam.com mvoila.
Et oui forcément. Tu n'es qu'un noob !! Hahaha

Ar-s a raison. Passe par le callback de navigation et utilise un timer si tu veux changer d'url au bout d'un certain temps.


Petit exemple juste pour répondre le callback de navigation et la maniere de traiter les évenement du webgadget

Code : Tout sélectionner

Enumeration
  #MainForm
  #Webgadget
EndEnumeration

Global urltoview$

Procedure NavigationCallback(Gadget, Url$) 
  Debug Url$  
    
  ProcedureReturn #True 
EndProcedure 

Procedure MainFormShow()
  If OpenWindow(#MainForm, 0, 0, 800, 600, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    WebGadget(#Webgadget, 10, 10, 780, 580, "")  
    SetGadgetAttribute(#Webgadget, #PB_Web_NavigationCallback, @NavigationCallback())
  EndIf
EndProcedure

MainFormShow() ; Procedure ou on crée le webgadjet 

urltoview$ = "http://google.fr" 

SetGadgetText(#Webgadget, urltoview$) 

Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Webgadget
          Select EventType()
            Case #PB_EventType_StatusChange
              Debug "#PB_EventType_StatusChange"

            Case #PB_EventType_DownloadStart
              Debug "#PB_EventType_DownloadStart" 
              
            Case #PB_EventType_DownloadProgress
              Debug "#PB_EventType_DownloadProgress"
              
            Case #PB_EventType_DownloadEnd     
              Debug "#PB_EventType_DownloadEnd"
              
          EndSelect
      EndSelect
  EndSelect
  
Until Event = #PB_Event_CloseWindow

Re: WebGadget Et Delay() [Freez]

Publié : lun. 28/mars/2016 19:34
par digital
@venom
Oué c'est ce que j'ai fait.

@Ar-S
Pas con pour le timer c'est surement plus pratique à manipuler.

@Falsam
Oué en gros l'alternative c'est le timer quoi.
Ca l'avantage d'être plus simple à manipuler oui.
Mais pour les besoins que j'ai y'a pas grand chose à traiter.


Merci pour les réponses.
Intéressant ces alternatif.

Re: WebGadget Et Delay() [Freez]

Publié : mar. 29/mars/2016 10:09
par falsam
A bientôt pour une prochaine discussion sur FreeChat et sur le forum bien sur :wink: