Page 1 sur 1

juste savoir comme redimensionner un gadget svp ...

Publié : mer. 04/juin/2008 16:51
par bernard13
bonjour
je me rappelle plus comment on redimensionne les gadgets par rapport à la fenetre j'ai perdu le code que j'avais ecrit , je sais qu'on utilise :
ResizeGadget(#Gadget, x, y, Largeur, Hauteur)
mais je sais plus comment on l'emploi pour que le gadget sois agrandis avec la fenetre.

j'ai ecris un bout de code pour exemple si quelqu'un peux m'expliquer:

Code : Tout sélectionner


; Navigateur Web 

; Constantes 
Enumeration 
 #Web
EndEnumeration

Enumeration 
 #internet 
 #Bouton_go
 #string_Url
EndEnumeration 





;Les Procedures 
Procedure Main()
If OpenWindow(#Web,0,0,640,480,"Navigateur Web 2008",#PB_Window_SystemMenu|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
 If CreateGadgetList(WindowID(#Web))
  WebGadget(#internet,10,10,620,400,"")
  StringGadget(#string_Url,10,420,520,20,"")
  ButtonGadget(#Bouton_go,550,420,80,20,"GO",#PB_Text_Border)
  EndIf
  
 
 EndIf

EndProcedure 
 
 
 
;Boucle du programme 

main()
Repeat 
 Select WaitWindowEvent()
  Case #PB_Event_CloseWindow
 Select EventWindow()
  Case #web
  Quitter=#True
  EndSelect   
   EndSelect 
  Until Quitter 
  End 

 

Publié : mer. 04/juin/2008 18:12
par Ollivier
Salut Bernard13,

Tu peux faire un redimensionnement avec des SplitterGadget(). C'est pratique (parfois un peu trop même...). ça consiste à accoupler les gadgets les uns après les autres :
>> La barre d'adresse avec le bouton Go donne le splitter #GadgetCtrl (j'ai appelé ça gadget de contrôle)
>> Le gadget internet avec le gadget de contrôle donne le splitter #GadgetPere

En gros, tu crées tes gadgets gadgets puis tu les assemble par 2 pour obtenir un seul gadget qui gère la taille de tous les autres.

Code : Tout sélectionner

; Navigateur Web 

; Constantes 
Enumeration 
 #Web 
EndEnumeration 

Enumeration
  #GadgetPere
  #GadgetCtrl
  #internet 
  #Bouton_go 
  #string_Url 
EndEnumeration 

#FenStandEtat = $CF0001

Global HauteurCtrl.L
Global GOBoutonLargeur.L

HauteurCtrl = 24 ; Hauteur en pixel de la zone de contrôle
                 ; (Barre d'adresse + Bouton «GO»)
GOBoutonLargeur = 80

;Les Procedures 
Procedure Main() 

  If OpenWindow(#Web,0,0,640,480,"Navigateur Web 2008",#FenStandEtat)

    FenLargeur = WindowWidth(#Web) 
    FenHauteur = WindowHeight(#Web) 

    If CreateGadgetList(WindowID(#Web))

      WebGadget(#internet,10,10,620,400,"") 
      StringGadget(#string_Url,10,420,520,20,"") 
      ButtonGadget(#Bouton_go,550,420,GOBoutonLargeur,20,"GO",#PB_Text_Border)
      SplitterGadget(#GadgetCtrl, 0, FenHauteur - HauteurCtrl, FenLargeur, HauteurCtrl, #string_Url, #Bouton_go, #PB_Splitter_SecondFixed | #PB_Splitter_Vertical)      
      SplitterGadget(#GadgetPere, 0, 0, FenLargeur, FenHauteur, #internet, #GadgetCtrl, #PB_Splitter_SecondFixed)
      SetGadgetState(#GadgetCtrl, FenLargeur - GOBoutonLargeur)
      SetGadgetState(#GadgetPere, FenHauteur - HauteurCtrl)
    EndIf  
  EndIf 
EndProcedure 
  

  
;Boucle du programme 

  main() 

Repeat

  Select WaitWindowEvent() 

    Case #PB_Event_CloseWindow 
      Select EventWindow() 
        Case #web 
          Quitter = #True 
      EndSelect
    Case #PB_Event_SizeWindow
      Select EventWindow()
        Case #Web
          FenLargeur = WindowWidth(#Web) 
          FenHauteur = WindowHeight(#Web) 
          ResizeGadget(#GadgetPere, 0, 0, FenLargeur, FenHauteur)
      EndSelect    
  EndSelect 

Until Quitter 

End 

 

Publié : mer. 04/juin/2008 18:51
par Jacobus
T'es dur avec lui... :|

Publié : mer. 04/juin/2008 19:38
par Chris
Comme ça.

Par contre, j'explique rien parce que j'ai pas le courage et parce que ça a déjà été expliqué en long, en large, et en travers dans le forum.

Alors lis le code, et essaye de le comprendre au lieu de copier bêtement comme d'habitude

Code : Tout sélectionner


; Navigateur Web

; Constantes
Enumeration
 #Web
EndEnumeration

Enumeration
 #internet
 #Bouton_go
 #string_Url
EndEnumeration


Procedure WinCallback(hWin, Msge, wparam, lparam)
Select hwin
Case WindowID(#web)
Select msge
Case #PB_Event_SizeWindow
ResizeGadget(#internet, #PB_Ignore, #PB_Ignore, WindowWidth(#web) - 20, WindowHeight(#web) - 80)
ResizeGadget(#string_url, #PB_Ignore, WindowHeight(#web)-60, WindowWidth(#web) - 120, #PB_Ignore)
ResizeGadget(#bouton_go, WindowWidth(#web) - 90, WindowHeight(#web) - 60, #PB_Ignore, #PB_Ignore)
EndSelect
EndSelect


ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure



;Les Procedures
Procedure Main()
If OpenWindow(#Web,0,0,640,480,"Navigateur Web 2008",#PB_Window_SystemMenu|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
 If CreateGadgetList(WindowID(#Web))
  WebGadget(#internet,10,10,620,400,"")
  StringGadget(#string_Url,10,420,520,20,"")
  ButtonGadget(#Bouton_go,550,420,80,20,"GO",#PB_Text_Border)
  EndIf
 
 
 EndIf

EndProcedure
 
 
 
;Boucle du programme

main()
SetWindowCallback(@WinCallback())

Repeat
 Select WaitWindowEvent()
  Case #PB_Event_CloseWindow
 Select EventWindow()
  Case #web
  Quitter=#True
  EndSelect   
   EndSelect
  Until Quitter
  End
 

Publié : mer. 04/juin/2008 20:20
par bernard13
merci chris pourquoi mettre un WinCallback?

Publié : mer. 04/juin/2008 20:29
par Oliv
Pour programmeurs expérimentés. Cette fonction est seulement disponible sous Microsoft Windows. Les évènements classiques devraient toujours être gérés avec les commandes WaitWindowEvent() ou WindowEvent(). Cette commande permet d'accéder directement à la callback utilisée par Windows pour gérer les évènements reçus par l'application. Cela permet d'avoir un contrôle total sur ces derniers. Attention, c'est relativement bas niveau pour du BASIC et peut interférer avec les évènements PureBasic si elle est incorrectement utilisée.

Le paramètre optionnel permet d'affecter la commande SetWindowCallback() seulement à la '#Fenetre' spécifiée.

Pour annuler une Callback (fonction de rappel) il suffit d'appeler SetWindowCallback(0 [, #Fenetre]).

La procédure qui servira de callback doit avoir 4 paramètres et se présente sous la forme suivante:
Procedure MaProcedureCallback(WindowID, Message, wParam, lParam)
Resultat = #PB_ProcessPureBasicEvents
;
; entrez votre code ici
;
ProcedureReturn Resultat
EndProcedure

L'exemple qui suit montre comment tester quelques paramètres d'une fenêtre. (En utilisant les constantes de l' API Windows):
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
; Nous pouvons tester dans la callback les paramètres renseignés automatiquement par windows

If uMsg = #WM_SIZE
Select wParam
Case #SIZE_MINIMIZED
Debug "La fenêtre est minimisée"
Case #SIZE_RESTORED
Debug "La fenêtre est rétablie"
Case #SIZE_MAXIMIZED
Debug "La fenêtre est agrandie"
EndSelect
EndIf

ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure


If OpenWindow(0, 0, 0, 200, 100, "Messages", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)

SetWindowCallback(@WinCallback()) ; active la callback

Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver

EndIf


Publié : jeu. 05/juin/2008 1:48
par Ar-S
Ou tu utilises PureResize de Gnozal (mon bienfaiteur pour plus d'une lib :P) qui est très pratique. il te suffit de cliquer sur "Pureresize" dans PureForm lorsque tu crées ton interface.
ensutie la gestion de ce qui se re-dimensionne est expliqué dans l'aide de PureResize (et c'est pas sorcier).

Voilou

Publié : jeu. 05/juin/2008 7:05
par bernard13
merci AR-S

mais PureRESIZE marche t'elle avedc la 4.20? car sur le site de gnozal il ecris que 4.10 pour PureRESIZE.

Publié : jeu. 05/juin/2008 8:43
par gnozal
bernard13 a écrit :mais PureRESIZE marche t'elle avedc la 4.20? car sur le site de gnozal il ecris que 4.10 pour PureRESIZE.
Elle devrait ...

Publié : jeu. 05/juin/2008 8:54
par bernard13
gnozal

tu compte rendre compatible PureRESIZE avec la 4.20?

Publié : jeu. 05/juin/2008 9:35
par Ar-S
elle marche :D

Publié : jeu. 05/juin/2008 9:37
par bernard13
Ar-S, tu l'utilise ?

Publié : jeu. 05/juin/2008 9:38
par Ar-S
ba oui

Publié : jeu. 05/juin/2008 10:54
par Backup
Ar-S a écrit :ba oui
t'es sur ? 8O

Publié : jeu. 05/juin/2008 15:16
par gnozal
Oui, comme dit plus haut, il ne devrait pas y avoir de problèmes (pas dans mes tests en tout cas).

Dans le cas contraire, il suffit de me signaler le problème lié à PB4.20 et je compile une version spécifique.