Page 1 sur 1

Bug OptionGadget et Textgadget(4.40)

Publié : lun. 18/janv./2010 18:54
par Ar-S
Voilà ce que je considère comme un bug concernant les OptionGadget mélées aux TextGadget

Lorsque l'on ordonne son code dans l'ordre de ce qui apparait dans l'interface d'un logiciel, c'est plus clair, du coup lorsque je veux créer de multiples options
mais n'en sélectionner qu'une à chaque fois, je créés des "titres" puis les options. le soucis est que si je mets les titres dans l'ordre genre : Titre1 option1 option2 titre2 option 3 option4, et bien cela ne me permet plus de n'avoir qu'un choix possible..

Exemple qui sera plus parlant

Code : Tout sélectionner

Enumeration
  #Window_0: #Option_0: #Option_1: #Option_2: #Option_3: #text_4: #text_5: #String
EndEnumeration

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 485, 392, 135, 196, "Bug ?", #PB_Window_SystemMenu|#PB_Window_TitleBar)
    TextGadget(#text_4, 20, 20, 80, 15, "Option 1", #PB_Text_Center) ; Mon 1er titre 
    OptionGadget(#Option_0, 25, 45, 115, 15, "Gadget_0")
    OptionGadget(#Option_1, 25, 65, 115, 15, "Gadget_1")
    TextGadget(#text_5, 25, 95, 80, 15, "Option 2", #PB_Text_Center)  ; Mon second titre 
    OptionGadget(#Option_2, 25, 120, 115, 15, "Gadget_2")
    OptionGadget(#Option_3, 25, 140, 70, 20, "Gadget_3")
    SetGadgetState(#Option_0,1)
    StringGadget(#String, 10, 165, 110, 20, "", #PB_String_ReadOnly|#ES_CENTER)
    SetGadgetText(#String,GetGadgetText(#Option_0))
  EndIf
EndProcedure

OpenWindow_Window_0()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Option_0
          SetGadgetText(#String,GetGadgetText(#Option_0))
        Case #Option_1
          SetGadgetText(#String,GetGadgetText(#Option_1))
        Case #Option_2
          SetGadgetText(#String,GetGadgetText(#Option_2))
        Case #Option_3
          SetGadgetText(#String,GetGadgetText(#Option_3))
        Case #text_4
        Case #text_5
      EndSelect
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Break
      EndSelect
  EndSelect
ForEver
Ici si on choisi gadget2, on s'aperçoit que le 1er gadget reste aussi selectionné

alors que si on remplace la section openwindow... par

Code : Tout sélectionner

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 485, 392, 135, 196, "Bug ?", #PB_Window_SystemMenu|#PB_Window_TitleBar)
    
    OptionGadget(#Option_0, 25, 45, 115, 15, "Gadget_0")
    OptionGadget(#Option_1, 25, 65, 115, 15, "Gadget_1")
    OptionGadget(#Option_2, 25, 120, 115, 15, "Gadget_2")
    OptionGadget(#Option_3, 25, 140, 70, 20, "Gadget_3")
    TextGadget(#text_4, 20, 20, 80, 15, "Option 1", #PB_Text_Center) ; On place les textes groupés sous les options
    TextGadget(#text_5, 25, 95, 80, 15, "Option 2", #PB_Text_Center) ; On place les textes groupés sous les options
    SetGadgetState(#Option_0,1)
    StringGadget(#String, 10, 165, 110, 20, "", #PB_String_ReadOnly|#ES_CENTER)
    SetGadgetText(#String,GetGadgetText(#Option_0))
  EndIf
EndProcedure
On voit que cette fois ça marche..

Donc ma question.. Bug ou fait exprès ?
Si c'est fait exprés, il serait bon d'ajouter ce détail à la doc. J'ai mis qques minutes à comprendre pourquoi ça me faisait ça dans l'interface de mon soft.
Voilou

Re: Bug OptionGadget et Textgadget(4.40)

Publié : lun. 18/janv./2010 19:41
par Backup
la soluce consciste a grouper les gadgets par genre !!
pour reprendre ton exemple 1 :

Code : Tout sélectionner

Enumeration
    #Window_0: #Option_0: #Option_1: #Option_2: #Option_3: #text_4: #text_5: #String
    #Gadget
EndEnumeration

Procedure OpenWindow_Window_0()
    If OpenWindow(#Window_0, 485, 392, 135, 196, "Bug ?", #PB_Window_SystemMenu|#PB_Window_TitleBar)
          TextGadget(#text_4, 20, 20, 80, 15, "Option 1", #PB_Text_Center) ; Mon 1er titre
            TextGadget(#text_5, 25, 95, 80, 15, "Option 2", #PB_Text_Center)  ; Mon second titre
        OptionGadget(#Option_0, 25, 45, 115, 15, "Gadget_0")
        OptionGadget(#Option_1, 25, 65, 115, 15, "Gadget_1")
        
        OptionGadget(#Option_2, 25, 120, 115, 15, "Gadget_2")
        OptionGadget(#Option_3, 25, 140, 70, 20, "Gadget_3")
        SetGadgetState(#Option_0,1)
        StringGadget(#String, 10, 165, 110, 20, "", #PB_String_ReadOnly|#ES_CENTER)
        SetGadgetText(#String,GetGadgetText(#Option_0))
    EndIf
EndProcedure

OpenWindow_Window_0()

Repeat
    Select WaitWindowEvent()
        Case #PB_Event_Gadget
            Select EventGadget()
                  
                Case #Option_0
                    SetGadgetText(#String,GetGadgetText(#Option_0))
                Case #Option_1
                    SetGadgetText(#String,GetGadgetText(#Option_1))
                Case #Option_2
                    SetGadgetText(#String,GetGadgetText(#Option_2))
                Case #Option_3
                    SetGadgetText(#String,GetGadgetText(#Option_3))
                Case #text_4
                Case #text_5
            EndSelect
        Case #PB_Event_CloseWindow
            Select EventWindow()
                Case #Window_0
                    CloseWindow(#Window_0)
                    Break
            EndSelect
    EndSelect
ForEver

perso ton truc ne me serai pas arrivé , car j'ai tendance a grouper les gadgets par famille !

;)

toutefois, ils doit s'agir d'un bug, je pense :)
car ici le titre se comporte comme un containergadget
( en principe les option devrai etre toujour dans un container .... )

Re: Bug OptionGadget et Textgadget(4.40)

Publié : lun. 18/janv./2010 19:46
par Ar-S
oui oui, d'ou mon second exemple qui fonctionne aussi, mais c'est vrai que c'est génant, moi je prefères mettre mes gadgets de façon visuel...
Pour info dans un containergadget, le problème persiste. :?