L'option #PB_String_Numéric ne permet pas l'écriture de nombres décimaux.
Pourtant il est parfois nécéssaire dans un stringGadget d'écrire uniquement des chiffres, mais décimaux
Voici une solution. Si il y a plus court je suis preneur.

Code : Tout sélectionner
;MLD le 4/7/2010 Entrer dans un StringGaget uniquement des chiffres , mais décimaux
Procedure String_NumericD(Gadget)
If Len(GetGadgetText(Gadget)) <>0
SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position)
a$ = Mid(GetGadgetText(Gadget),Debut_position,1)
ValeurASCII = Asc(a$)
If ValeurASCII = 46
Else
If ValeurASCII <48 Or ValeurASCII > 57
y = Debut_Position
Texte.s = GetGadgetText(Gadget)
x = Len(Texte)
If Mid(Texte,y,1) = "," ; modification d'une virgule en point
Texte2.s = Left(Texte,y -1) + "." + Right(Texte,x-y)
SetGadgetText(Gadget,Texte2)
SendMessage_(GadgetID(Gadget), #EM_SETSEL, x + 1, x + 1)
Else
Texte2.s = Left(Texte,y -1) + Right(Texte,x-y)
SetGadgetText(Gadget,Texte2)
SendMessage_(GadgetID(Gadget), #EM_SETSEL, x-1, x-1)
EndIf
EndIf
EndIf
EndIf
EndProcedure
OpenWindow(1 , 0, 0, 300, 145, "")
StringGadget(2,100, 50, 90, 20, "",#ES_CENTER )
SetActiveGadget(2)
Repeat
Event = WaitWindowEvent()
Select EventGadget()
Case 2
String_NumericD(2)
EndSelect
Until event = #PB_Event_CloseWindow
End