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

 Delphi Discussion :

Interdire le . dans un TEdit


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Points : 116
    Points
    116
    Par défaut Interdire le . dans un TEdit
    Avec le code suivant, je peux permettre seulement les chiffres de 0 à 9 ainsi que la touche Retour et Efface .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      if not (Key in ['0'..'9', Chr(VK_BACK), Chr(VK_DELETE)]) then
        Key := #0;
    Jusque l'à, aucun problème, toutes les touches d'écriture du clavier sont bloquées sauf le . qui me donne comme Erreur : 123. n'est pas une valeur entière correcte.
    Je dois préciser que la valeur est changée en Integer pour fin de calcul. Je veux toujours des nombres entiers, alors pas de . si possible.

    Merci de votre aide.

    Duan

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour
    Si on peut interdire la saisie du séparateur décimal, autant convertir le résultat en entier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    variable := trunc(StrToFloat(Edit1.Text));
    [édit] sinon ceci fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if not (Key in ['0'..'9', Chr(VK_BACK), Chr(VK_DELETE)])
        or(key = DecimalSeparator) then Key := #0 ;
    à+

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    non le problème est tout bête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     chr(VK_DELETE)  = '.'
    c'est dans le Keydown qu'on peut tester VK_DELETE, pas dans le Keypress

    attention cependant, un copier/coller dans le TEdit pourra introduire des caractères invalides malgré tout.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    @ Paul TOTH
    le code que j'ai donné plus haut (en édit) fonctionne correctement dans le KeyPress!

    et pour empecher le copier/coller sur un edit voir ici
    à+

  5. #5
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Points : 116
    Points
    116
    Par défaut
    @ banban54 : j'avais toujours une erreur avec ton code, probablement à cause du décimalséparator au Canada...
    @ Paul Thot : Je ne sais pas comment gérer ce OnKeyDown.

    J'ai résolu mon problème dans le onChange du Édit de la facon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      var
     
         long:Byte;
      begin
         long:=length(lundipmp.text);
         if copy(lundipmp.text,long,1)='.' then
         begin
           LundiPmp.Text:=copy(LundiPmp.Text,0,long-1);
           exit;
         end;
    Le . est ainsi détruit avant la conversion en integer. Je reviens alors à mon TEdit mais au début de celui-ci. Dans un autre post, je vais demander s'il est possible de positionner le curseur à la fin des nombres saisis ?

    Merci à vous deux de votre aide et je marque ce post comme résolu

    Duan

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

Discussions similaires

  1. Interdir saisie de tous les caracteres dans un Tedit
    Par fmr130 dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/06/2009, 13h44
  2. Réponses: 23
    Dernier message: 13/10/2005, 16h35
  3. Détection virgule dans un [TEdit]
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/08/2005, 12h15
  4. Position du curseur dans un TEdit
    Par Captain_JS dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/07/2005, 15h16
  5. Probleme collage dans un TEdit
    Par Zetmurin dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/10/2004, 13h19

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