Mask pour StringGadget (windows seulement)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Mask pour StringGadget (windows seulement)

Message par microdevweb »

Il arrive quelque fois que l'on désire imposé un masque de saisie à un StringGadget

Voici une procédure avec sont code exemple pour faire ce type d'opération. (utilise les api donc ne fonctionne que pour windows)

MaskingString(Gadget,mask,NbDecimal=0,Ext$="")
  • Gadget --> le numéro de StringGadget
  • mask --> le type de masque souhaité
    • 0 --> Premier caractère en majuscule
    • 1 --> Tout en majuscule
    • 2 --> Tout en minuscule
    • 3 --> Numérique
  • NbDecimal (optionnel) --> Le nombre de décimales souhaitées
  • Ext$ (optionnel) --> Si vous désirez une extension exemple le signe euro

Code : Tout sélectionner

Procedure MaskingString(Gadget,mask,NbDecimal=0,Ext$="")
      Protected txt$,PosStart.i,PosEnd.i,N,Car$
      Protected number$="0123456789"
      Protected Dec=-1
      If EventType()=#PB_EventType_Change
            SendMessage_(GadgetID(Gadget),#EM_GETSEL,@PosStart,@PosEnd)
            Select mask
                  Case 0
                        txt$=UCase(Left(GetGadgetText(Gadget),1))+LCase(Right(GetGadgetText(Gadget),Len(GetGadgetText(Gadget))-1)) 
                  Case 1
                        txt$=UCase(GetGadgetText(Gadget))
                  Case 2
                        txt$=LCase(GetGadgetText(Gadget))
                  Case 3
                        For N=1 To Len(GetGadgetText(Gadget))
                              Car$=Mid(GetGadgetText(Gadget),N,1)
                              If FindString(number$,Car$)<>0
                                    If Dec=-1
                                          txt$+Car$
                                    Else
                                          If Dec<NbDecimal
                                                txt$+Car$
                                                Dec+1
                                          EndIf
                                    EndIf
                                    
                              EndIf
                              If NbDecimal>0
                                    If Car$="." And Dec=-1
                                          txt$+"."
                                          Dec=0
                                    EndIf
                              EndIf
                        Next
            EndSelect
            If Ext$<>""
                  txt$+Ext$
            EndIf
            SetGadgetText(Gadget,txt$)
            SendMessage_(GadgetID(Gadget),#EM_SETSEL,PosStart,PosEnd)
      EndIf
EndProcedure
Procedure Teste()
      Select GetActiveGadget()
            Case 1
                  MaskingString(1,0) 
            Case 3
                  MaskingString(3,1) 
            Case 5
                  MaskingString(5,2) 
            Case 7
                  MaskingString(7,3) 
            Case 9
                  MaskingString(9,3,2) 
            Case 11
                 MaskingString(11,3,2," "+Chr(128)) 
      EndSelect
     
EndProcedure
Define Y,H=30,M=10
OpenWindow(0,0,0,800,600,"teste",#PB_Window_SystemMenu)
TextGadget(0,M,Y,800,H,"Première lettre en majuscule")
Y+H
StringGadget(1,M,Y,300,H,"")
BindGadgetEvent(1,@Teste())
Y+H+M
TextGadget(2,M,Y,800,H,"Tout en majuscule")
Y+H
StringGadget(3,M,Y,300,H,"")
BindGadgetEvent(3,@Teste())
Y+H+M
TextGadget(4,M,Y,800,H,"Tout en miniscule")
Y+H
StringGadget(5,M,Y,300,H,"")
BindGadgetEvent(5,@Teste())
Y+H+M
TextGadget(6,M,Y,800,H,"Entier")
Y+H
StringGadget(7,M,Y,300,H,"")
BindGadgetEvent(7,@Teste())
Y+H+M
TextGadget(8,M,Y,800,H,"Float avec 2 décimales")
Y+H
StringGadget(9,M,Y,300,H,"")
BindGadgetEvent(9,@Teste())
Y+H+M
TextGadget(10,M,Y,800,H,"Float avec 2 décimales et signe euro")
Y+H
StringGadget(11,M,Y,300,H,"")
BindGadgetEvent(11,@Teste())
Repeat
      Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
End

Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Mask pour StringGadget (windows seulement)

Message par Kwai chang caine »

Merci MicroDevWeb...marche nickel 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre