Panelgadget() et gadget dynamiques, possible?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Panelgadget() et gadget dynamiques, possible?

Message par Jacobus »

Hello, j'essaie un panel pouvant ajouter des onglets à la volée avec des gadgets dynamiques. le problème c'est pour redonner le focus aux gadgets des onglets précédents.

Explication : ajout de plusieurs onglets, au besoin. C'est toujours le dernier onglet ajouté (ou créé) qui conserve leurs fonctions aux gadgets. Dès que l'on veut retourner sur un onglet précédent, les fonctions restent sur le dernier onglet créé.

exemple: Cliquez plusieurs fois sur le bouton ONGLET ajoutera un onglet comportant les mêmes gadgets, mais en revenant à un onglet précédent, vous ne le pourrez plus.

Code : Tout sélectionner

;CODE EN PB V4
Enumeration 
#Win_
#PANEL
EndEnumeration
If OpenWindow(#Win_,0,0, 400, 200,"Panel dynamique test", #PB_Window_SystemMenu |#PB_Window_WindowCentered |#PB_Window_TitleBar)=0 Or CreateGadgetList(WindowID(#Win_))=0  
    End 
  EndIf 
  PanelGadget(#PANEL,0,30,400,150) 
    AddGadgetItem(#PANEL, -1, "Onglet")
      btnCreate = ButtonGadget(#PB_Any,40,85,100,25,"ONGLET")      
      btnClose  = ButtonGadget(#PB_Any,145,85,100,25,"FERMER")     
  CloseGadgetList()
Repeat
    Event = WaitWindowEvent() 
    If Event = #PB_Event_Gadget
      Select EventGadget() 
      
        Case btnCreate
         AddGadgetItem (#PANEL, -1, "Onglet")
          btnCreate = ButtonGadget(#PB_Any,40,85,100,25,"ONGLET")
          btnClose  = ButtonGadget(#PB_Any,145,85,100,25,"FERMER")
          
        Case btnClose
         RemoveGadgetItem(#PANEL, GetGadgetState(#PANEL))

      EndSelect  
    EndIf 
  Until Event= #PB_Event_CloseWindow         
End 
Ma question est comment rendre les fonctions aux onglets précédents en mode dynamique? car je n'y parviens pas même avec GetGadgetState()

Si je me suis bien fais comprendre, auriez-vous une idée? si la chose est réalisable...
@+
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.
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Que pense tu de cela :

Code : Tout sélectionner


;CODE EN PB V4
Enumeration
  #Win_
  #PANEL
EndEnumeration
Global Dim btnClose(100),Dim btnCreate(100),n

If OpenWindow(#Win_,0,0, 400, 200,"Panel dynamique test", #PB_Window_SystemMenu |#PB_Window_WindowCentered |#PB_Window_TitleBar)=0 Or CreateGadgetList(WindowID(#Win_))=0 
  End
EndIf
PanelGadget(#PANEL,0,30,400,150)
AddGadgetItem(#PANEL, -1, "Onglet")
btnCreate(n) = ButtonGadget(#PB_Any,40,85,100,25,"ONGLET")     
btnClose(n)  = ButtonGadget(#PB_Any,145,85,100,25,"FERMER")     
Debug Str(btnCreate(x))+"Cr"
Debug Str(btnClose(x))+"Cl"
n+1
Debug n
CloseGadgetList()
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget
    EvGadget=EventGadget()
    Debug Str(EvGadget) +"Ev"

    For x=0 To n-1

    Select EvGadget
      Case btnCreate(x)
        AddGadgetItem (#PANEL, -1, "Onglet"+Str(n))
        btnCreate(n) = ButtonGadget(#PB_Any,40,85,100,25,"ONGLET")
        btnClose(n)  = ButtonGadget(#PB_Any,145,85,100,25,"FERMER")
        n+1
      Case btnClose(x)
  RemoveGadgetItem(#PANEL, GetGadgetState(#PANEL))
        
    EndSelect

    Debug Str(btnCreate(x))+"Cr"
    Debug Str(btnClose(x))+"Cl"
    Debug x
    Next
  EndIf
Until Event= #PB_Event_CloseWindow         
End
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

:D Nickel, ça fonctionne très bien!
J'ai pu l'adapter facilement pour mon projet, quelques bricoles à régler et ça roule. Le dynamisme est très intéressant à ce niveau.

Merci encore et @+
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.
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Je suis content que tu es pu régler ton problème.
Denis

Bonne Jounée à tous
Répondre