IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Text]Comment empecher l'insertion des nombres


Sujet :

Langage Delphi

  1. #1
    Membre régulier Avatar de Bourak
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 231
    Points : 84
    Points
    84
    Par défaut [Text]Comment empecher l'insertion des nombres
    Bonjour les Développeurs.

    Je vient d'écrire un programme ou j'ai insérer un TEditText pour insertion des noms et prénom pour des personnels.
    Je voudrais donc insérer des caractère sans nombre, comment je procède?


    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Il faut filtrer la saisie en utilisant l'événement OnKeyPress du TEdit.
    Voici un code vite fait (pas testé) qui n'autorise pas les chiffres.
    A toi d'adapter si tu veux plus ou moins de choses à filtrer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if (Key in ['0'..'9']) then
        Key := #0;
    end;

  3. #3
    Membre régulier Avatar de Bourak
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 231
    Points : 84
    Points
    84
    Par défaut
    Merci

    Je vais l'essayé et j'ai pensé que c'était difficile que ça.

    Merci encours

  4. #4
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    je dirais plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    // ['A'..'Z','a'..'z','-','à','ã','â','ä','é','è','ê','ë','î','ï','ì','õ','ô','ö','û','ü','ù',#8]
      if not (Key in ['A'..'Z','a'..'z','-',#8]) then
        Key := #0;
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hoe,
    Citation Envoyé par Dr.Who Voir le message
    je dirais plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    // ['A'..'Z','a'..'z','-','à','ã','â','ä','é','è','ê','ë','î','ï','ì','õ','ô','ö','û','ü','ù',#8]
      if not (Key in ['A'..'Z','a'..'z','-',#8]) then
        Key := #0;
    end;
    La solution de ero-sennin est meilleure, car elle évite d'interdire tous les caractères avec accent, cédille ...
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    pour insertion des noms et prénom

    donc ma solution est meilleure puisqu'elle interdit tout les caractères spéciaux.

    d'ailleurs je corrige pour ajouter l'apostrophe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    // ['A'..'Z','a'..'z','-','à','ã','â','ä','é','è','ê','ë','î','ï','ì','õ','ô','ö','û','ü','ù','''',#8]
      if not (Key in ['A'..'Z','a'..'z','-','''',#8]) then
        Key := #0;
    end;
    donc permet d'ecrire tout les prenoms et noms de famille dans la syntaxe :
    jean martin
    Bertrand L'Arvilliers
    Jean-baptiste Poclin
    Sélena de la Vega


    le mieux serait encore de passer par une expression régulière pour valider les prénom et nom.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Bonsoir,

    La solution de Dr Who est intéressante, mais dans mon cas (et droggo l'a surement bien compris), je gère un maximum de cas (trop surement) sans faire de contrôle...
    Après, il faut accepter ou refuser telle ou telle lettre mais ça, c'est du cas par cas. Par exemple, le prénom François, avec la solution de Dr.Who, ça ne passe pas. Inversement, de mon côté, on peut tout saisir (les parenthèses, les : et autres), donc ce n'est pas vraiment super.
    Je penche donc plus vers la solution de Dr.Who, tout en ajoutant les caractères qui devront être gérés en plus des lettres déjà gérées par la solution de notre Dr.

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Joa,
    Citation Envoyé par Dr.Who Voir le message
    pour insertion des noms et prénom

    donc ma solution est meilleure puisqu'elle interdit tout les caractères spéciaux.
    Oui, mais tu refuses tous les caractères avec accent, cédille ou autres signes diacritiques. Il faudrait les mettre explicitement dans les caractères autorisés, ce qui alourdit nettement le code, avec le soucis supplémentaire de ne pas en oublier, et le code des caractères dépend de l'encodage utilisé, ce qui le rend non portable.

    Les expressions régulières seraient effectivement une meilleure solution, un peu plus lourde quand même.
    Si les cons volaient, il ferait nuit à midi.

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Et d'un autre coté, vous avez une fonction qui s'appelle IsCharAlpha à laquelle vous ajouterai le test du "-" et vous êtes bon .

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    ...et puisqu'il s'agit de noms propres, pourquoi ne pas directement passer la première lettre de chaque mot en majuscule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      with TEdit(Sender) do
        //Alpha ?
        if IsCharAlpha(Key) then
        begin
          //1ère lettre ou caractère précédent non alpha -> majuscule
          if (length(Text) = 0) or (not IsCharAlpha(Text[Length(Text)])) then
            CharUpper(@Key);
        end
     
        //Autre caractère valide ?
        else if not (Key in ['-', ' ', Chr(VK_BACK)]) then
          Key := #0;
    end;
    A noter que le texte n'est pas converti en minuscule. Si CapsLock ou Shift sont enfoncés, la lettre est majuscule. Ce qui permet d'écrire Société SA et non Société Sa.

  11. #11
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut Andnotor

    En effet, c'est une solution très pratique que tu nous proposes!
    Je n'aurai pas pensé à utilisé la fonction IsCharAlpha (en même temps, je ne la connaissais pas ).

    A la prochaine

  12. #12
    Membre régulier Avatar de Bourak
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 231
    Points : 84
    Points
    84
    Par défaut
    Salut les développeurs:

    Merci à tous pour votre aide et contribution.
    La solution du ero-sennin est parfaite pour mon cas car je n'ai pas précisé que j'utilise des prénoms et noms arabe pour la saisie.
    Même la solution du Dr.Who est parfaite mais il me faut que je saisie tous les caractères arabes.
    Je vais quand même testé la fonction IsCharAlpha(Key).


    Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une zone de texte qui n'accepte que des nombres
    Par boutheinanabeul dans le forum VB.NET
    Réponses: 26
    Dernier message: 30/03/2015, 15h42
  2. Comment tester la validité des nombres réels ?
    Par linda80 dans le forum Langage
    Réponses: 4
    Dernier message: 15/10/2007, 17h47
  3. [HTML][CSS] Comment empecher l'application des styles
    Par ardi dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 28/03/2006, 11h56
  4. Comment recuperer la liste des input text d'un formulaire.
    Par luimême dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/01/2006, 14h34
  5. Comment faire une insertion dans un fichier texte ?
    Par Isa31 dans le forum Langage
    Réponses: 10
    Dernier message: 28/12/2004, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo