#PB_Web_Forward-#PB_Web_Back

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Programmes
Messages : 80
Inscription : mer. 24/mai/2006 12:12

#PB_Web_Forward-#PB_Web_Back

Message par Programmes »

Bonsoir à tous,

Je voulais savoir si on pouvait récupérer sous forme d'url #PB_Web_Back et #PB_Web_Forward?
Ce code ne marche pas:

Code : Tout sélectionner

url.s=GetGadgetText(#Web)
Merci
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: #PB_Web_Forward-#PB_Web_Back

Message par falsam »

Test ce code et tu vas comprendre qu'il y a un probleme de Time-Out entre le moment ou tu affiches la page et le moment ou tu récuperes la valeur de l'url

Code : Tout sélectionner

Enumeration
  #MainForm
  #Web
EndEnumeration


If OpenWindow(#Mainform,0,0,600,300,"WebGadget",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
    WebGadget(#Web,10,10,580,280,"http://www.google.com")
    
    Repeat 
     
      Debug GetGadgetText(#Web)
      
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
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%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: #PB_Web_Forward-#PB_Web_Back

Message par falsam »

Une façon de faire (J’espère académique :p), est de tester conjointement l’évènement sur le webgadget et le le type du dernier évènement survenu qui dans ton cas est l’évènement qui dit que la page est bien chargée (#PB_EventType_DownloadEnd)

Un code pour illustrer tout ça. Cliques sur les différents liens de la page.

Code : Tout sélectionner

Enumeration
  #MainForm
  #Web
EndEnumeration

If OpenWindow(#Mainform,0,0,600,300,"WebGadget",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
  WebGadget(#Web,10,10,580,280,"http://www.google.com")
  
  Repeat 
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        If EventGadget()=#Web And EventType()= #PB_EventType_DownloadEnd   
            Debug GetGadgetText(#Web) 
        EndIf
    EndSelect     
      
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
L'ensemble des évènement du WebGadget sont sur ce lien
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%
Programmes
Messages : 80
Inscription : mer. 24/mai/2006 12:12

Re: #PB_Web_Forward-#PB_Web_Back

Message par Programmes »

En me creusant un peu la tête j'ai trouvé.

Code : Tout sélectionner

;{
Enumeration
;{***** Fenetre *****
#Windows2
#Windows1
;}
;{***** Frame *****
#Frame1
#Frame2
#Frame3
;}
;{***** TextGadget *****
#Text1
#Text2
#Text3
#Text4
#Text5
#Text6
#Text7
;}
;{***** StringGadget *****
#String1
#String2
#String3
#String4
#String5
#String6
#Adresse
;}
;{***** ButtonGadget *****
#Button1
#Button2
#Back
#Next
;}
;{***** WebGadget *****
#Web;}
;{***** SpinGadget *****
#Spin;}
EndEnumeration
;}
Procedure EcrireIni(keyname.s,keyvalue.s)
  WritePrivateProfileString_("Menu",keyname,keyvalue,FichierIni) 
EndProcedure
Procedure.s LireIni(Key.s)
  a.s = Space(50) 
  GetPrivateProfileString_("Menu",Key,"",@a,Len(a),FichierIni) 
  ProcedureReturn a
EndProcedure
Procedure ResizeWebWindow()
  ResizeGadget(#Web,#PB_Ignore,#PB_Ignore,WindowWidth(0),WindowHeight(0)-52)
  ResizeGadget(#Back,(WindowWidth(#Windows2)+5)-WindowWidth(#Windows2),#PB_Ignore,#PB_Ignore,#PB_Ignore)
  ResizeGadget(#Next,GadgetX(#Back)+GadgetWidth(#Back)+5,#PB_Ignore,#PB_Ignore,#PB_Ignore)
  ResizeGadget(#Adresse,GadgetX(#Next)+GadgetWidth(#Next)+5,#PB_Ignore,(WindowWidth(#Windows2)-20)-GadgetX(#Adresse),#PB_Ignore)
  ResizeGadget(#Frame3,#PB_Ignore,#PB_Ignore,WindowWidth(#Windows2),#PB_Ignore)
EndProcedure
Procedure Menu()
  OpenWindow(#Windows2,100,200,500,300,"PureBasic MiniBrowser v1.0",#PB_Window_Maximize|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
  CreateStatusBar(#Windows2,WindowID(#Windows2))
  AddStatusBarField(#PB_Ignore)
  StatusBarText(#Windows2,0,"",0)
  ButtonGadget(#Back,0,0,50,25,"Back")
  ButtonGadget(#Next,50,0,50,25,"Next")
  StringGadget(#Adresse,100,5,WindowWidth(0)-185,20,"http://www.purebasic.com")
  Frame3DGadget(#Frame3,0,30,0,2,"",2)
  WebGadget(#Web,0,31,0,0,"http://www.purebasic.com")
  AddKeyboardShortcut(#Windows2,#PB_Shortcut_Return,1)
  ResizeWebWindow()
EndProcedure
InitNetwork()
Menu()
Repeat
  Event=WaitWindowEvent()
  Select Event
    Case #PB_Event_Menu ; We only have one shortcut
      Select EventMenu()
        Case 1:SetGadgetText(#Web,GetGadgetText(#Adresse))
      EndSelect            
    Case #PB_Event_Gadget 
      Select EventGadget()
        Case #Back:SetGadgetState(#Web,#PB_Web_Back):Delay(2000):While WindowEvent():Wend:SetGadgetText(#Adresse,GetGadgetText(#Web))
        Case #Next:SetGadgetState(#Web,#PB_Web_Forward):Delay(2000):While WindowEvent():Wend:SetGadgetText(#Adresse,GetGadgetText(#Web))
      EndSelect
  EndSelect
Until Event=#PB_Event_CloseWindow
Merci quand même et bonne soirée.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: #PB_Web_Forward-#PB_Web_Back

Message par falsam »

Tu pouvais éviter les Delay

Code : Tout sélectionner

If EventGadget()=#Web And EventType()= #PB_EventType_DownloadEnd   
   Debug GetGadgetText(#Web) 
 EndIf
Regardes le code que j'ai placé précédemment.
Dernière modification par falsam le jeu. 24/févr./2011 21:32, modifié 1 fois.
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%
Programmes
Messages : 80
Inscription : mer. 24/mai/2006 12:12

Re: #PB_Web_Forward-#PB_Web_Back

Message par Programmes »

Bonne info.Et comment?
Programmes
Messages : 80
Inscription : mer. 24/mai/2006 12:12

Re: #PB_Web_Forward-#PB_Web_Back

Message par Programmes »

J'ai été voir dans l'aide (Purebasic 4.51) EventType().
J'ai mis ce code mais sans succès:

Code : Tout sélectionner

;{
Enumeration
;{***** Fenetre *****
#Windows1
;}
;{***** Frame *****
#Frame1
;}
;{***** StringGadget *****
#Adresse
;}
;{***** ButtonGadget *****
#Back
#Next
;}
;{***** WebGadget *****
#Web;}
EndEnumeration
;}
Procedure ResizeWebWindow()
  ResizeGadget(#Web,#PB_Ignore,#PB_Ignore,WindowWidth(0),WindowHeight(0)-52)
  ResizeGadget(#Back,(WindowWidth(#Windows1)+5)-WindowWidth(#Windows1),#PB_Ignore,#PB_Ignore,#PB_Ignore)
  ResizeGadget(#Next,GadgetX(#Back)+GadgetWidth(#Back)+5,#PB_Ignore,#PB_Ignore,#PB_Ignore)
  ResizeGadget(#Adresse,GadgetX(#Next)+GadgetWidth(#Next)+5,#PB_Ignore,(WindowWidth(#Windows1)-20)-GadgetX(#Adresse),#PB_Ignore)
  ResizeGadget(#Frame1,#PB_Ignore,#PB_Ignore,WindowWidth(#Windows1),#PB_Ignore)
EndProcedure
Procedure Menu()
  OpenWindow(#Windows1,100,200,500,300,"PureBasic MiniBrowser v1.0",#PB_Window_Maximize|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
  CreateStatusBar(#Windows1,WindowID(#Windows1))
  AddStatusBarField(#PB_Ignore)
  StatusBarText(#Windows1,0,"",0)
  ButtonGadget(#Back,0,0,50,25,"Back")
  ButtonGadget(#Next,50,0,50,25,"Next")
  StringGadget(#Adresse,100,5,WindowWidth(0)-185,20,"http://www.purebasic.com")
  Frame3DGadget(#Frame1,0,30,0,2,"",2)
  WebGadget(#Web,0,31,0,0,"http://www.purebasic.com")
  AddKeyboardShortcut(#Windows1,#PB_Shortcut_Return,1)
  ResizeWebWindow()
EndProcedure
InitNetwork()
Menu()
Repeat
  Event=WaitWindowEvent()
  Select Event
    Case #PB_Event_Menu ; We only have one shortcut
      Select EventMenu()
        Case 1:SetGadgetText(#Web,GetGadgetText(#Adresse))
      EndSelect            
    Case #PB_Event_Gadget 
      Select EventGadget()
        Case #Back:SetGadgetState(#Web,#PB_Web_Back)
        Case #Next:SetGadgetState(#Web,#PB_Web_Forward)
        Case #Web
          Select EventType()
            Case #PB_EventType_Change:SetGadgetText(#Adresse,GetGadgetText(#Web))
          EndSelect
      EndSelect
  EndSelect
Until Event=#PB_Event_CloseWindow
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: #PB_Web_Forward-#PB_Web_Back

Message par falsam »

Remplace

Code : Tout sélectionner

Case #PB_EventType_Change:SetGadgetText(#Adresse,GetGadgetText(#Web))
par

Code : Tout sélectionner

Case #PB_EventType_DownloadEnd  :SetGadgetText(#Adresse,GetGadgetText(#Web))
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%
Programmes
Messages : 80
Inscription : mer. 24/mai/2006 12:12

Re: #PB_Web_Forward-#PB_Web_Back

Message par Programmes »

Je viens de tester et c'est nickel! Merci beaucoup et bonne soirée.
Répondre