Page 1 sur 1

Suppression de l'option #PB_String_ReadOnly sur StringGadet

Publié : mer. 23/oct./2019 16:29
par Ulix
Bonjour a tous

Pour un formulaire de saisie, j'utilise des StringGadgets avec l'option #PB_String_ReadOnly.
Donc pas de modification intempestif !
Toutefois pour autoriser la saisie il me faut passe les StringGadget en mode normale...
D’où ma question : Comment supprimer l'option : #PB_String_ReadOnly. :oops:

Sur le coup, j'ai penser a utilisé : SetGadgetAttribute(#Gadget, Attribut, Valeur),
mais cette commande ne permet pas de repasser le StrinGadget en mode édition ! :twisted:

Merci de votre aide.

Re: Supprésion de l'option #PB_String_ReadOnly sur StringGa

Publié : mer. 23/oct./2019 16:34
par Ollivier
Tu crées 2 gadgets strictement identiques, à l'exception de cette option "read only", et tu "swapes" de l'un à l'autre (avec 2 HideGadget) avec une synchro du contenu. C'est la soluce fiable et cross plateforme qui me vient en tête en te lisant. Mais ça n'empêche pas une solution plus simple que je ne connaitrais pas...

Re: Supprésion de l'option #PB_String_ReadOnly sur StringGa

Publié : mer. 23/oct./2019 16:50
par Marc56
Tu peux aussi supprimer le gadget et le créer à nouveau (y compris avec le même ID)
Avec FreeGadget()

Code : Tout sélectionner

OpenWindow(0, 0, 0, 322, 205, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(1, 8,  60, 306, 20, "Gadget saisie de texte", #PB_String_ReadOnly)
ButtonGadget(2, 10, 10, 306, 30, "Changer mode édition")

Repeat 
    Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow
            End
            
        Case #PB_Event_Gadget 
            Select EventGadget()
                Case 2
                    FreeGadget(1)
                    StringGadget(1, 8,  60, 306, 20, "Gadget saisie de texte")
                    SetGadgetColor(1, #PB_Gadget_BackColor, #Yellow)
                    SetActiveGadget(1)
            EndSelect
    EndSelect
ForEver
Ce qui permet aussi de changer le texte et la couleur.
Et avec SetActiveGadget, tu replaces le curseur dessus.

:wink:

Re: Supprésion de l'option #PB_String_ReadOnly sur StringGa

Publié : mer. 23/oct./2019 17:29
par Ulix
Merci pour vos idées.

J'ai trouvé un post :
http://forums.purebasic.com/english/vie ... c0858e4e97

qui propose quelques autres pistes :

DisableGadget() et aussi SetActiveGadget(-1)

Je vais voir ce qui ira le mieux!


Merci a tous

Re: Supprésion de l'option #PB_String_ReadOnly sur StringGa

Publié : mer. 23/oct./2019 18:07
par Christophe
Une solution avec API

Code : Tout sélectionner

OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
StringGadget(1,10,50,480,20,"",#PB_String_ReadOnly)
ButtonGadget(2,100,100,100,50,"Sans ReadOnly")
ButtonGadget(3,300,100,100,50,"Avec ReadOnly")
TextGadget(4,10,30,100,20,"Avec ReadOnly")

Repeat
  e = WaitWindowEvent()
  Select e
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 2
          SendMessage_(GadgetID(1),#EM_SETREADONLY,0,0)
          SetGadgetText(4,"Sans ReadOnly")
        Case 3
          SendMessage_(GadgetID(1),#EM_SETREADONLY,1,0)
          SetGadgetText(4,"Avec ReadOnly")
      EndSelect
  EndSelect
  
  
Until e = #PB_Event_CloseWindow

Re: Supprésion de l'option #PB_String_ReadOnly sur StringGa

Publié : mer. 23/oct./2019 20:20
par Ollivier
Euh... Je crois que les API c'est pour Linux, avec Ulix !