Page 1 sur 1
Nombre à virgule dans un StringGadget
Publié : mer. 13/avr./2005 9:16
par gansta93
Bonjour,
Il serait bien que l'on puisse entrer des nombres à virgule dans un stringGadget avec le flag #PB_String_ReadOnly.
Si c'est faisable, comment on fait ?
Publié : mer. 13/avr./2005 10:55
par Le Soldat Inconnu
euh, avec l'option #PB_String_Numeric tu veux dire
le signe - serait également appréciable si c'est faisable
Publié : mer. 13/avr./2005 21:33
par gansta93
Oui DSL, je voulais bien parler de #PB_String_Numeric. Le signe qui serait bien serait le point pour pouvoir être réutilisé correctement avec des variables.
Publié : jeu. 14/avr./2005 12:28
par Patrick88
gansta93 a écrit :Oui DSL, je voulais bien parler de #PB_String_Numeric. Le signe qui serait bien serait le point pour pouvoir être réutilisé correctement avec des variables.
le point ou la virgule dépende du paramétrage de ton windows....
patrick
Publié : jeu. 14/avr./2005 12:43
par gansta93
J'ai essayé de saisire un nombre en mettant une virgule puis un point, rien ne marche.
Publié : jeu. 14/avr./2005 17:27
par nico
J'ai regardé dans les api et j'ai l'impression que c'est prévu fonctionner comme ça.
J'ai donc fait ce petit code:
Je l'ai codé de manière qu'il ne soit pas possible d'afficher deux fois la virgule et que le premier caractère ne puisse pas être une virgule. Une autre condition empêche la "," de s'afficher si on appuie sur cette touche lors d'une sélection du contenu avec la souris.
Code : Tout sélectionner
If OpenWindow(0,0,0,322,275,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"StringGadget Flags") And CreateGadgetList(WindowID(0))
StringGadget(1,8, 35,306,20,"1234567",#PB_String_Numeric)
ButtonGadget(2,8,100,306,20,"Voir le contenu")
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #WM_KEYDOWN
If GetFocus_()=GadgetID(1)
If EventwParam()=$6E
Texte$ = GetGadgetText(1)
If Texte$<>""
If FindString(Texte$, ",", 1)=0
SetClipboardText(","); le point ne se voit pas beaucoup, alors je met une ","
SendMessage_(GadgetID(1),#wm_paste,0,0)
If Len(GetGadgetText(1))=1
SetGadgetText(1,"")
EndIf
EndIf
EndIf
EndIf
EndIf
Case #PB_EventGadget
Select EventGadgetID()
Case 2
Texte$=GetGadgetText(1)
Debug Texte$
String$ = ReplaceString(Texte$, ",", "." , 1 )
Debug String$
EndSelect
Case #PB_Event_CloseWindow
Quit=1
EndSelect
Until Quit = 1
EndIf
Publié : jeu. 14/avr./2005 18:08
par nico
Un exemple plus adapté:
Code : Tout sélectionner
Procedure test(index.l)
If EventwParam()=$6E
Texte$ = GetGadgetText(index)
If Texte$<>""
If FindString(Texte$, ",", 1)=0
SetClipboardText(","); le point ne se voit pas beaucoup, alors je met une ","
SendMessage_(GadgetID(index),#wm_paste,0,0)
If Len(GetGadgetText(index))=1
SetGadgetText(index,"")
EndIf
EndIf
EndIf
EndIf
EndProcedure
If OpenWindow(0,0,0,322,275,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"StringGadget Flags") And CreateGadgetList(WindowID(0))
StringGadget(0,8, 5,306,20,"",#PB_String_Numeric)
StringGadget(1,8, 55,306,20,"",#PB_String_Numeric)
StringGadget(2,8, 105,306,20,"",#PB_String_ReadOnly )
ButtonGadget(3,8,160,306,20,"Voir le résultat de l'addition")
TextGadget(4,8,35,306,20,"+",#PB_Text_Center)
TextGadget(5,8,135,306,20,"=",#PB_Text_Center)
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #WM_KEYDOWN
Select GetFocus_()
Case GadgetID(0)
test(0)
Case GadgetID(1)
test(1)
EndSelect
Case #PB_EventGadget
Select EventGadgetID()
Case 3
Texte1$=GetGadgetText(0)
Texte2$=GetGadgetText(1)
Texte1$ = ReplaceString(Texte1$, ",", "." , 1 )
Texte2$ = ReplaceString(Texte2$, ",", "." , 1 )
number1.f=ValF(Texte1$)
number2.f=ValF(Texte2$)
total$=StrF(number1+number2)
SetGadgetText(2,total$)
EndSelect
Case #PB_Event_CloseWindow
Quit=1
EndSelect
Until Quit = 1
EndIf
Publié : ven. 15/avr./2005 11:22
par Le Soldat Inconnu
extra ce petit code

Publié : ven. 15/avr./2005 19:32
par gansta93
Cool !

Merci.