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.
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.
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;
Merci
Je vais l'essayé et j'ai pensé que c'était difficile que ça.
Merci encours
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!
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 :
donc permet d'ecrire tout les prenoms et noms de famille dans la syntaxe :
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;
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!
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.
Joa,
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.
Et d'un autre coté, vous avez une fonction qui s'appelle IsCharAlpha à laquelle vous ajouterai le test du "-" et vous êtes bon .
...et puisqu'il s'agit de noms propres, pourquoi ne pas directement passer la première lettre de chaque mot en majuscule
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.
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;
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
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager