PureBasic

Forums PureBasic
Nous sommes le Ven 06/Déc/2019 23:51

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: [Résolu] routine qui n'accepte qu'un caractère autorisé
MessagePosté: Mar 30/Oct/2018 8:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2208
Localisation: 50200 Coutances
Bonjour à tous,

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:
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

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Dernière édition par Micoute le Mar 30/Oct/2018 13:28, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: routine qui n'accepte qu'un caractère autorisé
MessagePosté: Mar 30/Oct/2018 11:23 
Hors ligne

Inscription: Lun 22/Oct/2018 19:34
Messages: 42
Localisation: Haisnes (62)
Bonjour Micoute

essai ça

Code:
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()
 
  Select EventwParam()
    Case #VK_M, #VK_F
      SetGadgetText(#Str_Genre, Chr(EventwParam()))
 
    Default
      SetGadgetText(#Str_Genre,"")
     
  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 | #PB_String_UpperCase)
    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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: routine qui n'accepte qu'un caractère autorisé
MessagePosté: Mar 30/Oct/2018 11:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8785
En gardant ton code

Code:
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

; ICI TU CREES TES FILTRES
Procedure Checkit(filtre1.s,filtre2.s)
 
  If GetGadgetText(#Str_Genre) = filtre1 Or GetGadgetText(#Str_Genre) = filtre2
    ProcedureReturn 1
    Else
      SetGadgetText(#Str_Genre,"")
      ProcedureReturn 0
  EndIf

EndProcedure


Procedure Definir_Genre()
  Protected LngTxt = 0, Lettre
  Select EventGadget()
    Case #Str_Genre
      Select EventType()
        Case #PB_EventType_Change
         
          ; VERIFICATION
          Checkit("M","F")
         
      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

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: routine qui n'accepte qu'un caractère autorisé
MessagePosté: Mar 30/Oct/2018 12:00 
Hors ligne

Inscription: Lun 22/Oct/2018 19:34
Messages: 42
Localisation: Haisnes (62)
@Ar-s

Tu devrais rajouter #PB_String_UpperCase au StringGadget car sinon il faut être obligatoirement en majuscule pour que ton code fonctionne


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye