Saisie d'un chiffre (et d'un seul) dans un tedit

Soyez le premier à donner votre avis sur cette source.

Vue 5 252 fois - Téléchargée 395 fois

Description

Ce bout de code permet de limiter la saisie dans un TEdit à un seul chiffre.

La première partie du code est relativement connue dans son principe.
Elle se contente de filtrer les caractères autorisés.
La deuxième m'a donné un peu plus de mal...
En réponse à une question posée récemment sur le forum.

Ce code filtre la saisie selon 4 critères :

- la boîte de saisie n'accepte que les chiffres, ainsi que deux touches autorisées, ici : retour arrière (#8) et Entrée (#13);

- elle n'accepte qu'un seul caractère (propriété Edit1.MaxLength := 1, qu'on peut déterminer par l'intermédiaire de l'Inspecteur d'Objets);

- si un caractère non autorisé est entré, le caractère valide déjà affiché dans la boîte de saisie est conservé.

- les caractères autorisés, mais autres que des chiffres, ne sont pas affichés.

Source / Exemple :


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  Edit1.MaxLength := 1;                     // 1
  if not (Key in #13, '0'..'9') then  // 2
  begin
    Key := #0;                              // 3
    Exit;                                   // 4
  end
  else
  if not (Key in #13) then            // 5
    Edit1.Text := Key;                      // 6
  // Traitement éventuel ici                // 7
end;

{
1 on peut utiliser l'inspecteur d'objets
2 autorisé : retour, entrée, chiffres (adapter selon nécessité)
3 la touche pressée est nulle
4 sortie
5 touches autorisées mais qui ne sont pas des chiffres
6 affiche le chiffre saisi
7 traitement du contenu de la boîte de saisie
}

Un petit zip ci-joint, bien qu'il me paraisse peu utile...

Conclusion :


Si vous avez une autre méthode, n'hésitez pas à nous la faire partager !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24 -
Ca peut aussi se résumer en :
case key of
'0'..'9' : Edit1.Text := Key; //remplace le contenu éventuel
#8, #13 : exit; //traitement normal
else
Key := #0; //annuler la touche frappée
end;
Un seul test réalisé au lieu de 2. C'est toujours quelques nanosecondes de gagnées ! ;o)
japee
Messages postés
1708
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
5 octobre 2019
1 -
Salut, Delphiprog.
Superbe...
Pourquoi faire compliqué quand ont peut faire simple ;)
Merci pour ta méthode, je l'adopte !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.