[RESOLU]obtenir coin haut/gauche zone utilisable panelgadget
Publié : ven. 30/janv./2009 16:24
j'ai viré le post précédent parce que
-il n'y avait pas de réponse
-j'ai trouvé la solution, et c'était tout con
donc le problème était que lorsque l'on déplace le curseur de la souris sur les gadgets qui sont dans le panel, le rectangle rouge qui représente leur dimension et position en x,y dans le panel, se positionne en fait depuis le 0,0 de la fenetre et pas depuis la position x,y du panel gadget...
pas cool
ci-après, le code "qui marche pas", il faut être dans le coin haut/gauche du gadget pour qu'il soit détecté (pour augmenter le seuil de détection, changer la valeur de #TailleZoneRecherche
j'ai simplifier le code afin de ne garder que l'essentiel.
la solution est
1/ recaler le y du rectangle dessiné (donc le y du gadget dans le panel)
avec la fonction GetGadgetAttribute(#gadget_panel, #PB_Panel_TabHeight) qui renvoie la hauteur des boutons du panelgadget
2/ recaler le x avec gadgetx( du panelgadget...
la détection du panelgadget est volontairement désactivé par if h>0
petite remarque j'ai écrit cette fonction car le code "déplacement de gadget avec des poignées" dans astuce ne marche pas avec des container ou des panels, la fonction ne permet pas de "descendre" dans le gadget.... bon c'est surement possible, mais je sais pas faire....
je riposterai le code complet quand ça marchera...
Patrick
-il n'y avait pas de réponse
-j'ai trouvé la solution, et c'était tout con


donc le problème était que lorsque l'on déplace le curseur de la souris sur les gadgets qui sont dans le panel, le rectangle rouge qui représente leur dimension et position en x,y dans le panel, se positionne en fait depuis le 0,0 de la fenetre et pas depuis la position x,y du panel gadget...
pas cool
ci-après, le code "qui marche pas", il faut être dans le coin haut/gauche du gadget pour qu'il soit détecté (pour augmenter le seuil de détection, changer la valeur de #TailleZoneRecherche
Code : Tout sélectionner
#TailleZoneRecherche = 30
OpenWindow(0,0,0,400,300,"test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
PanelGadget(0,10,10,300,200)
AddGadgetItem(0,-1,"Onglet 1")
ButtonGadget(1,10,10,100,20,"bouton 1")
ButtonGadget(2,10,30,100,20,"bouton 2")
AddGadgetItem(0,-1,"Onglet 2")
ButtonGadget(3,110,10,100,20,"bouton 3")
ButtonGadget(4,110,30,100,20,"bouton 4")
CloseGadgetList()
Repeat
ev = WaitWindowEvent()
If ev=#WM_MOUSEMOVE
mx = WindowMouseX(0) ; coordonnées curseur souris
my = WindowMouseY(0)
For h = 0 To 4
gx = GadgetX(h)
gy = GadgetY(h)
gw = GadgetWidth(h)
gh = GadgetHeight(h)
If mx > gx-#TailleZoneRecherche And mx < gx+#TailleZoneRecherche
If my > gy-#TailleZoneRecherche And my < gy+#TailleZoneRecherche
;; okay - on est sur le coin haut gauche du gadget situé sous le curseur souris
result = h
If StartDrawing(WindowOutput(0))
DrawingMode(#PB_2DDrawing_Outlined)
Box(gx,gy,gw,gh,RGB(255,0,0))
StopDrawing()
EndIf
Debug "trouvé"
Break
EndIf
EndIf
Next
EndIf
Until ev =#PB_Event_CloseWindow
la solution est
1/ recaler le y du rectangle dessiné (donc le y du gadget dans le panel)
avec la fonction GetGadgetAttribute(#gadget_panel, #PB_Panel_TabHeight) qui renvoie la hauteur des boutons du panelgadget
2/ recaler le x avec gadgetx( du panelgadget...
la détection du panelgadget est volontairement désactivé par if h>0
Code : Tout sélectionner
#TailleZoneRecherche = 30
OpenWindow(0,0,0,400,300,"test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
PanelGadget(0,10,10,300,200)
AddGadgetItem(0,-1,"Onglet 1")
ButtonGadget(1,10,10,100,20,"bouton 1")
ButtonGadget(2,10,30,100,20,"bouton 2")
AddGadgetItem(0,-1,"Onglet 2")
ButtonGadget(3,110,10,100,20,"bouton 3")
ButtonGadget(4,110,30,100,20,"bouton 4")
CloseGadgetList()
Repeat
ev = WaitWindowEvent()
If ev=#WM_MOUSEMOVE
mx = WindowMouseX(0) ; coordonnées curseur souris
my = WindowMouseY(0)
For h = 0 To 4
gx = GadgetX(h)
gy = GadgetY(h)
gw = GadgetWidth(h)
gh = GadgetHeight(h)
If h>0
If mx > gx-#TailleZoneRecherche And mx < gx+#TailleZoneRecherche
If my > gy-#TailleZoneRecherche And my < gy+#TailleZoneRecherche
;; okay - on est sur le coin haut gauche du gadget situé sous le curseur souris
result = h
hauteur_bouton = GetGadgetAttribute(0, #PB_Panel_TabHeight)
gy = GadgetY(h)+GadgetY(0)+ hauteur_bouton
gx = GadgetX(h)+GadgetX(0)
If StartDrawing(WindowOutput(0))
DrawingMode(#PB_2DDrawing_Outlined)
Box(gx,gy,gw,gh,RGB(255,0,0))
StopDrawing()
EndIf
Debug "trouvé"
Break
EndIf
EndIf
EndIf
Next
EndIf
Until ev =#PB_Event_CloseWindow
je riposterai le code complet quand ça marchera...
Patrick