Suppression de l'option #PB_String_ReadOnly sur StringGadet

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Suppression de l'option #PB_String_ReadOnly sur StringGadet

Message 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.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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...
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

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

Message 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:
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

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

Message 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
Christophe
Messages : 43
Inscription : lun. 22/oct./2018 19:34
Localisation : Haisnes (62)

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

Message 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
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message par Ollivier »

Euh... Je crois que les API c'est pour Linux, avec Ulix !
Répondre