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