Comment savoir a quelle fenetre appartient un bouton

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Comment savoir a quelle fenetre appartient un bouton

Message par olivier »

Bien le bonjour messieur et mesdames

Bon ben tout est dit dans le titre, je balance un code qui donne rien mais qui sert de base a vos réponses...merci d'avance.

Code : Tout sélectionner

Enumeration 
   #fenetre_1   
   #fenetre_2
   #btn_1
   #btn_2
   
EndEnumeration

   
OpenWindow (#fenetre_1,10,10,200,200, "ess", #PB_Window_SystemMenu  )
CreateGadgetList ( WindowID (#fenetre_1))
ButtonGadget(#btn_1,5,5,80,20,"button fenetre 1")

OpenWindow (#fenetre_2,210,10,200,200, "ess", #PB_Window_SystemMenu  ,WindowID(0))
CreateGadgetList ( WindowID (#fenetre_2))
ButtonGadget(#btn_2,5,35,80,20,"button fenetre 2")

For idgadget=0 To #PB_Compiler_EnumerationValue
   If IsGadget(idgadget)
      Debug "id gadget : "+Str(idgadget)
      Debug "gadgettype : "+Str(GadgetType(idgadget))
      Debug "gadget_windows : ????"
   EndIf
Next

Repeat
   event= WaitWindowEvent ()
   Select event
      Case #PB_Event_Gadget ; *****************Choix d'un bouton
         idgadget=EventGadget()
         Select idgadget

         EndSelect
   EndSelect
Until event=#WM_CLOSE
Vive le temps libre !
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ben tu connais déjà EventType(), EventGadget(), et bien il y a aussi EventWindow() :D
Image
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Merci pour ta réponse.

Mais ça c'est quand tu récupère les évenements, mais la ce n'est pas le cas...regarde bien mon exemple. :D ...ou je n'ai pas compris ta réponse.... :?
Vive le temps libre !
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

Tu peux facilement récuperer le handle de la fenêtre (son "windowid()"), grâce à GetParent_(GadgetId(idgadget)), mais si tu veux son identifiant (0, 1, 2, etc..), là je ne sais pas.
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

GetParent() retourne le handle du parent direct. Si le gadget est sur un ContainerGagdet, c'est le handle du ContainerGadget qui est retourné.

Pour avoir le handle de la fenêtre qui supporte les gadgets, il faut utiliser

Code : Tout sélectionner

GetAncestor_(GadgetId(#Gadget), #GA_ROOT) ; #GA_ROOT vaut 2
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Merci à vous deux. :D
En plus il me fallait les deux !

Code : Tout sélectionner

Enumeration
   #fenetre_1   
   #fenetre_2
   #btn_1
   #btn_2
   
EndEnumeration

   
OpenWindow (#fenetre_1,10,10,200,200, "ess", #PB_Window_SystemMenu  )
CreateGadgetList ( WindowID (#fenetre_1))
ButtonGadget(#btn_1,5,5,80,20,"button fenetre 1")

OpenWindow (#fenetre_2,210,10,200,200, "ess", #PB_Window_SystemMenu  ,WindowID(0))
CreateGadgetList ( WindowID (#fenetre_2))
ButtonGadget(#btn_2,5,35,80,20,"button fenetre 2")

For idgadget=0 To #PB_Compiler_EnumerationValue
   If IsGadget(idgadget)
      Debug "id gadget : "+Str(idgadget)
      Debug "gadgettype : "+Str(GadgetType(idgadget))
      Debug "gadget_windows : " + Str (GetParent_(GadgetID(idgadget))) +"normalement "+Str(WindowID(#fenetre_1))+" ou "+Str(WindowID(#fenetre_2))
      Debug "ou alors : " + Str (GetAncestor_(GadgetID(idgadget), 2)) +"normalement "+Str(WindowID(#fenetre_1))+" ou "+Str(WindowID(#fenetre_2))
   EndIf
Next

Repeat
   event= WaitWindowEvent ()
   Select event
      Case #PB_Event_Gadget ; *****************Choix d'un bouton
         idgadget=EventGadget()
         Select idgadget
            
         EndSelect
   EndSelect
Until event=#WM_CLOSE 
Vive le temps libre !
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

...Suite.....
Et pour avoir l'onglet du panel dans lequel est un bouton ? :?
Vive le temps libre !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

olivier a écrit :...Suite.....
Et pour avoir l'onglet du panel dans lequel est un bouton ? :?
Alors là.... 8O
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Et voilà, j'ai trouvé. :D

Code : Tout sélectionner

Procedure GetGadgetTab(Id_gadget)
   retour=-1
   tab.tc_item
   tab\MASK=12 ; j'ai mis cela presque au hazard et ça marche mais je ne sais pas pourquoi ???? et si on change la valeur cela ne donne pas la même chose.....
   
   id_panel=GetParent_(GetParent_(GadgetID(Id_gadget)))
   nb_panel=SendMessage_(id_panel,#TCM_GETITEMCOUNT,0,0)
   
   For i=0 To nb_panel-1
      SendMessage_(id_panel,#TCM_GETITEM,i,@tab) 
      If tab\lParam=GetParent_(GadgetID(Id_gadget))
         retour=i
         i=nb_panel-1
      EndIf
      
   Next
   ProcedureReturn retour
EndProcedure
Vive le temps libre !
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

bravo pour ta persévérence :D
olivier a écrit :tab\MASK=12 ; j'ai mis cela presque au hazard et ça marche mais je ne sais pas pourquoi ???? et si on change la valeur cela ne donne pas la même chose.....
j'ai cherché un peu et d'après msdn, mask devrait etre 8 ( #TCIF_PARAM )

Code : Tout sélectionner

Procedure GetGadgetTab(gadget) 
  
  Protected hParent.l, hPanel.l, nPanel.l
  Protected tab.TC_ITEM\mask = #TCIF_PARAM
  
  hParent = GetParent_(GadgetID(gadget))
  hPanel  = GetParent_(hParent)
  nPanel  = SendMessage_(hPanel, #TCM_GETITEMCOUNT, 0, 0)
  
  For item = 0 To nPanel - 1
    If SendMessage_(hPanel, #TCM_GETITEM, item, @tab) And tab\lParam = hParent
      ProcedureReturn item
    EndIf 
  Next
  
  ProcedureReturn -1
  
EndProcedure
Image
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Ha oui c'est plus jolie comme cela !

Meci Flype
Vive le temps libre !
Répondre