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

Soyez le premier à donner votre avis sur cette source.

Vue 5 402 fois - Téléchargée 427 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

Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020
4
Salut, Delphiprog.
Superbe...
Pourquoi faire compliqué quand ont peut faire simple ;)
Merci pour ta méthode, je l'adopte !
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
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)

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.