Page 1 sur 1

MaxLength

Publié : sam. 05/févr./2005 15:08
par Dr. Dri
Bonjour,
je voudrais savoir comment limiter le nombre de caractères d'un StringGadget comme das d'autres langages... (en htaml/javascript, en vb et en java par exemple o trouve le maxlength).

Les api sont les bienvenues s'il n'y a pas de solution simple et efficace en PB...

Dri

PS. comment je met à jour mon PB sans internet ??

Publié : sam. 05/févr./2005 17:23
par Dr. Dri
au cas où ca interesserai quelqu'un de le savoir, j'ai trouvé ca :

Code : Tout sélectionner

SendMessage_(GadgetID(), #EM_LIMITTEXT, LongueurMax, 0)
Dri

Publié : sam. 05/févr./2005 19:45
par Dr. Dri
j'ai pas d'pô
sur une dizaine de StringGadget, ca ne marche que sur un seul.

Quelqu'un a une idée ??

Dri

Publié : sam. 05/févr./2005 19:51
par nico
Vu comme ça, je dirais que tu n'as pas de problème et que tu cherches à faire ce que la fonction ne peut t'apporter.

Publié : dim. 06/févr./2005 11:23
par Dr. Dri
bah pourtant je crée 8 StringGadget
je les limite tous entre 3 et 10 caractères
Mais un seul des gadget est limité...

Je vois pas ce que j'essaye de faire que la fonction ne fasse pas...
D'autant plus que ca fonctionne sur un des gadgets, c'est donc que
ca fonctionne sur le StringGadget, quand à savoir pourquoi pas sur
les autres... (appel identique pour gadget identique)

Dri

Publié : dim. 06/févr./2005 11:32
par Jacobus
:) Salut,

Essayes ça dans ta boucle Repeat sur chaque string
c'est peut-être pas ce que tu cherches, mais ça aide bien.

Code : Tout sélectionner

Case #String
      Chaine$ = GetGadgetText(#String)
       Longueur = Len(Chaine$)      
        If Longueur >=10          
           MessageRequester("ERREUR", "Trop de caractères ont été utilisés")
         SetGadgetText(#String, "")      
      EndIf

Publié : dim. 06/févr./2005 11:35
par Heis Spiter

Code : Tout sélectionner

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #String_0
  #String_1
  #String_2
  #String_3
  #String_4
  #String_5
  #String_6
  #String_7
  #String_8
  #String_9
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 247, 184, 160, 307,  #PB_Window_SystemMenu | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      StringGadget(#String_0, 10, 10, 140, 20, "")
      StringGadget(#String_1, 10, 40, 140, 20, "")
      StringGadget(#String_2, 10, 70, 140, 20, "")
      StringGadget(#String_3, 10, 100, 140, 20, "")
      StringGadget(#String_4, 10, 130, 140, 20, "")
      StringGadget(#String_5, 10, 160, 140, 20, "")
      StringGadget(#String_6, 10, 190, 140, 20, "")
      StringGadget(#String_7, 10, 220, 140, 20, "")
      StringGadget(#String_8, 10, 250, 140, 20, "")
      StringGadget(#String_9, 10, 280, 140, 20, "")
      SendMessage_(GadgetID(#String_0), #EM_LIMITTEXT, 1, 0)
      SendMessage_(GadgetID(#String_1), #EM_LIMITTEXT, 2, 0)
      SendMessage_(GadgetID(#String_2), #EM_LIMITTEXT, 3, 0)
      SendMessage_(GadgetID(#String_3), #EM_LIMITTEXT, 4, 0)
      SendMessage_(GadgetID(#String_4), #EM_LIMITTEXT, 5, 0)
      SendMessage_(GadgetID(#String_5), #EM_LIMITTEXT, 6, 0)
      SendMessage_(GadgetID(#String_6), #EM_LIMITTEXT, 7, 0)
      SendMessage_(GadgetID(#String_7), #EM_LIMITTEXT, 8, 0)
      SendMessage_(GadgetID(#String_8), #EM_LIMITTEXT, 9, 0)
      SendMessage_(GadgetID(#String_9), #EM_LIMITTEXT, 10, 0)
      
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat
  Event = WindowEvent()
  Delay(1)
Until Event = #PB_Event_CloseWindow
Chez moi, ce code fonctionne...

Publié : dim. 06/févr./2005 11:37
par Heis Spiter
On peux même simplifier de la sorte :

Code : Tout sélectionner

Enumeration
  #Window_0
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 247, 184, 160, 307,  #PB_Window_SystemMenu | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      StringGadget(1, 10, 10, 140, 20, "")
      StringGadget(2, 10, 40, 140, 20, "")
      StringGadget(3, 10, 70, 140, 20, "")
      StringGadget(4, 10, 100, 140, 20, "")
      StringGadget(5, 10, 130, 140, 20, "")
      StringGadget(6, 10, 160, 140, 20, "")
      StringGadget(7, 10, 190, 140, 20, "")
      StringGadget(8, 10, 220, 140, 20, "")
      StringGadget(9, 10, 250, 140, 20, "")
      StringGadget(10, 10, 280, 140, 20, "")
      For k = 1 To 10
        SendMessage_(GadgetID(k), #EM_LIMITTEXT, k, 0)
      Next k
      
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat
  Event = WindowEvent()
  Delay(1)
Until Event = #PB_Event_CloseWindow

Publié : dim. 06/févr./2005 12:01
par Anonyme2
Moi aussi je ne comprend pas pourquoi ça ne marche qu'avec 1 seule stringgagget :?:

Jai utilisé ça dans mon PureLoto contrôler sur environ 10 stringgagdget et tous sont correctement limités, rien de spécial à mettre

Publié : dim. 06/févr./2005 17:47
par Dr. Dri
bah moi non plus je e comprends pas...
d'autant lpus que maintenant ca marche sans problème...
sans que je ne change une ligne de code :silly:

désolé pour le dérangement :jesors:

Dri

Publié : dim. 06/févr./2005 18:46
par nico
Ou là là, il a fait une grosse bêtise et il veut pas le dire. :lol:

Publié : ven. 28/août/2009 11:44
par Ar-S
Dr. Dri a écrit :

Code : Tout sélectionner

SendMessage_(GadgetID(), #EM_LIMITTEXT, LongueurMax, 0)
Excellent ! :P :P :P

Encore de l'API qui devrait avoir son équivalent en natif dans PB !

Publié : ven. 28/août/2009 12:27
par Anonyme
Qu'est ce qui deviens Dr.Dri ?

Publié : ven. 28/août/2009 19:07
par Kwai chang caine
Bah j'sais pas..... :roll:
Il est bien repassé, il y a quelque temps car ses derniers messages sont de 2009...

Moi je lui ai parlé la derniere fois sur le projet MOEBIUS du grand PRODI :wink:
Il a dit qu'il n'avait plus de temps a donner a pure :cry:

http://www.purebasic.fr/french/viewtopi ... 3583#93583