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
Guimauve