je viens de nouveau solliciter votre aide précieuse, car j'aimerais faire une routine qui n'accepte qu'un seul caractère parmi ceux qui sont autorisés.
En fait j'essaie de remplacer un ComboBoxGadget.
Je joins mon code de test et je vous remercie d'avance.
Code : Tout sélectionner
Enumeration
#Fenetre_principale
EndEnumeration
Enumeration
#Str_Genre
EndEnumeration
Enumeration
#Police
EndEnumeration
Global.l Evenement
LoadFont(#Police, "Arial Nova", 30, #PB_Font_Bold)
SetGadgetFont(#PB_Default, FontID(#Police))
Procedure Quitter()
CloseWindow(#Fenetre_principale)
End
EndProcedure
Procedure Definir_Genre()
Protected LngTxt = 0, Lettre
Select EventGadget()
Case #Str_Genre
Select EventType()
Case #PB_EventType_Change
LngTxt = Len(GetGadgetText(#Str_Genre))
Lettre =Asc(Mid(GetGadgetText(#Str_Genre),LngTxt ,1))
Select Lettre
Case 'f', 'm'
If Len(GetGadgetText(#Str_Genre)) = 1
SetGadgetText(#Str_Genre,UCase(GetGadgetText(#Str_Genre)))
EndIf
EndSelect
EndSelect
EndSelect
EndProcedure
Procedure Fenetre_principale()
If OpenWindow(#Fenetre_principale, 0, 0, 400, 400, "Test M/F", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
StringGadget(#Str_Genre, 20, 10, 70, 60, "", #ES_CENTER)
SetGadgetAttribute(#Str_Genre, #PB_String_MaximumLength, 1)
SetActiveGadget(#Str_Genre)
BindEvent(#PB_Event_CloseWindow, @Quitter())
BindGadgetEvent(#Str_Genre, @Definir_Genre())
EndIf
EndProcedure
Fenetre_principale()
;- Boucle
Repeat
Evenement = WaitWindowEvent()
ForEver