WebGadget Et Delay() [Freez]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
digital
Messages : 25
Inscription : mar. 02/févr./2016 0:34

WebGadget Et Delay() [Freez]

Message 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.
  
digital
Messages : 25
Inscription : mar. 02/févr./2016 0:34

Re: WebGadget Et Delay() [Freez]

Message 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.
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: WebGadget Et Delay() [Freez]

Message par venom »

Personnellement je t'aurais conseillé un thread.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: WebGadget Et Delay() [Freez]

Message par Ar-S »

Regarde du coté des timers :wink:
Tu peux aussi matter l'exemple de la doc du coté de NavigationCallback()
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: WebGadget Et Delay() [Freez]

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
digital
Messages : 25
Inscription : mar. 02/févr./2016 0:34

Re: WebGadget Et Delay() [Freez]

Message 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.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: WebGadget Et Delay() [Freez]

Message par falsam »

A bientôt pour une prochaine discussion sur FreeChat et sur le forum bien sur :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre