PanelGadget et position

Sujets variés concernant le développement en PureBasic
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

PanelGadget et position

Message par Guimauve »

Bonjour à tous,

Lorsque l'on ajoute des gadgets sur un onglet dans un PanelGadget(), si on positionne un bouton à (5,5), la position est calculé par rapport au PanelGadget() et non par rapport à la fenêtre.
La commande GadgetY() retourne toujours la position Y d'un Gadget présent sur un PanelGadget() par rapport à quoi ?

1. À la fenêtre ?
2. À l'origine (0,0) de la surface de dessin d'un PanelGadget ?

Dans le code ci-dessous, sur un PanelGadget et un Container Gadget, la commande GadgetY() ne retourne pas la même valeur (5 pixels). Est-ce un bogue ou c'est normal ?

Code : Tout sélectionner

Macro GadgetDown(GadgetID)
  
  GadgetY(GadgetID) + GadgetHeight(GadgetID)
  
EndMacro

Macro GadgetRight(GadgetID)

  GadgetX(GadgetID) + GadgetWidth(GadgetID)
  
EndMacro

If OpenWindow(0, 0, 0, 515, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  
  PanelGadget(0, 8, 8, 200, 203)
    
    AddGadgetItem(0, -1,"Onglet 1")
    
    ; Ici je veux que les boutons 1 et 2 soient
    ; collés l'un au-dessus de l'autre. La Macro
    ; GadgetDown() prend la position Y et Ajoute 
    ; la hauteur du Gadget spécifié.
    
    ButtonGadget(2, 5, 5, 80, 24,"Bouton 1")
    ButtonGadget(3, 5, GadgetDown(2), 80, 24,"Bouton 2")
    
    Debug "GadgetY(2) = " + Str(GadgetY(2))
    Debug GetGadgetAttribute(0, #PB_Panel_TabHeight)
    Debug GadgetY(2) - GetGadgetAttribute(0, #PB_Panel_TabHeight)
    
    ; Ici je veux que les boutons 3 et 4 soient
    ; collés l'un au-dessus de l'autre. En utilisant
    ; la macro et en enlevant la hauteur d'un onglet
    ; ça marche.
    
    ButtonGadget(4, GadgetRight(2), 5, 80, 24,"Bouton 3")
    ButtonGadget(5, GadgetRight(2), GadgetDown(4) - GetGadgetAttribute(0, #PB_Panel_TabHeight), 80, 24, "Bouton 4")    
    
  CloseGadgetList()
  
  ; Alors que si les boutons sont sur la 
  ; fenêtre, ça fonctionne nickel.
  
  ButtonGadget(6, GadgetRight(0)+5, 5, 80, 24,"Bouton 5")
  ButtonGadget(7, GadgetRight(0)+5, GadgetDown(6), 80, 24,"Bouton 6")
  ButtonGadget(8, GadgetRight(0)+5, GadgetDown(7), 80, 24,"Bouton 7")
  
  ; Ou sur un autre gadget contenant des gadgets, ça fonctionne nickel aussi.
  
  ContainerGadget(50, GadgetRight(6)+5, 10, 200, 203, #PB_Container_Raised)
    
    ButtonGadget(52, 5, 5, 80, 24,"Bouton 8")
    ButtonGadget(53, 5, GadgetDown(52), 80, 24,"Bouton 9")
    
    Debug "GadgetY(52) = " + Str(GadgetY(52))
    
    ButtonGadget(54, 100, 5, 80, 24,"Bouton 10")   
    ButtonGadget(55, 100, GadgetDown(54), 80, 24,"Bouton 11") 
    
  CloseGadgetList()
  
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Merci à l'avance
Guimauve
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: PanelGadget et position

Message par Ar-S »

Bizarre en effet.

En plus ça fonctionne si on stock la hauteur dans une variable
Hpanel = GetGadgetAttribute(0, #PB_Panel_TabHeight)

et en utilisant Hpanel ensuite plutôt que le GetGadgetAttribute

Code : Tout sélectionner

Macro GadgetDown(GadgetID)
	
	GadgetY(GadgetID) + GadgetHeight(GadgetID)
	
EndMacro

Macro GadgetRight(GadgetID)
  
	GadgetX(GadgetID) + GadgetWidth(GadgetID)
	
EndMacro


If OpenWindow(0, 0, 0, 515, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
	
	PanelGadget(0, 8, 8, 200, 203)
		
    Hpanel = GetGadgetAttribute(0, #PB_Panel_TabHeight)
    
		AddGadgetItem(0, -1,"Onglet 1")
		
		; Ici je veux que les boutons 1 et 2 soient
		; collés l'un au-dessus de l'autre. La Macro
		; GadgetDown() prend la position Y et Ajoute 
		; la hauteur du Gadget spécifié.
		
		ButtonGadget(2, 5, 5, 80, 24,"Bouton 1",#PB_Button_Default)
		ButtonGadget(3, 5, GadgetDown(2), 80, 24,"Bouton 2",#PB_Button_Default)
		
		Debug "GadgetY(2) = " + Str(GadgetY(2))
	
		Debug GadgetY(2) - GetGadgetAttribute(0, #PB_Panel_TabHeight)
		
		; Ici je veux que les boutons 3 et 4 soient
		; collés l'un au-dessus de l'autre. En utilisant
		; la macro et en enlevant la hauteur d'un onglet
		; ça marche.
		
		ButtonGadget(4, GadgetRight(2), 5, 80, 24,"Bouton 3",#PB_Button_Default)
		ButtonGadget(5, GadgetRight(2), GadgetDown(4) - Hpanel, 80, 24, "Bouton 4",#PB_Button_Default)    
	  Debug GetGadgetAttribute(0, #PB_Panel_TabHeight)
    Debug Hpanel
		Debug GadgetY(4) - Hpanel
    
  CloseGadgetList()
	
	; Alors que si les boutons sont sur la 
	; fenêtre, ça fonctionne nickel.
	
	ButtonGadget(6, GadgetRight(0)+5, 5, 80, 24,"Bouton 5")
	ButtonGadget(7, GadgetRight(0)+5, GadgetDown(6), 80, 24,"Bouton 6")
	ButtonGadget(8, GadgetRight(0)+5, GadgetDown(7), 80, 24,"Bouton 7")
	
	; Ou sur un autre gadget contenant des gadgets, ça fonctionne nickel aussi.
	
	ContainerGadget(50, GadgetRight(6)+5, 10, 200, 203, #PB_Container_Raised)
		
		ButtonGadget(52, 5, 5, 80, 24,"Bouton 8")
		ButtonGadget(53, 5, GadgetDown(52), 80, 24,"Bouton 9")
		
		Debug "GadgetY(52) = " + Str(GadgetY(52))
		
		ButtonGadget(54, 100, 5, 80, 24,"Bouton 10")   
		ButtonGadget(55, 100, GadgetDown(54), 80, 24,"Bouton 11") 
		
  CloseGadgetList()
	
	Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
~~~~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
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: PanelGadget et position

Message par Guimauve »

Ar-S a écrit :Bizarre en effet.

En plus ça fonctionne si on stock la hauteur dans une variable
Hpanel = GetGadgetAttribute(0, #PB_Panel_TabHeight)

et en utilisant Hpanel ensuite plutôt que le GetGadgetAttribute
Il ne s'agit que d'un exemple ici, faire plusieurs fois l'appel d'une même commande c'est pas très logique. Mais la démonstration du problème reste la même.

J'ai oublié de mentionner, j'ai testé le truc avec PureBasic 4.60 Final x64 sous Linux Mint 11 x64.

A+
Guimauve
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: PanelGadget et position

Message par Le Soldat Inconnu »

Aucun bug chez moi sous Windows, le problème doit venir de Linux

Un gadget placé à la coordonné 5,5 dans un panel gadget renvoie la position 5,5 avec GadgetX() GadgetY()
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre