juste savoir comme redimensionner un gadget svp ...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

juste savoir comme redimensionner un gadget svp ...

Message 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 

 
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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 

 
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

T'es dur avec lui... :|
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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
 
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

merci chris pourquoi mettre un WinCallback?
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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

Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message 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.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message 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 ...
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

gnozal

tu compte rendre compatible PureRESIZE avec la 4.20?
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

elle marche :D
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

Ar-S, tu l'utilise ?
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

ba oui
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ar-S a écrit :ba oui
t'es sur ? 8O
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message 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.
Répondre