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

Composants VCL Delphi Discussion :

TEdit : Autoriser uniquement les chiffres (utilisation du OnKeyDown)


Sujet :

Composants VCL Delphi

  1. #1
    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 : 38
    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 TEdit : Autoriser uniquement les chiffres (utilisation du OnKeyDown)
    Bonsoir!

    Je dispose d'un TEdit sur ma Form. Je voudrais pouvoir effectuer une chose, c'est ne saisir uniquement les chiffres. En plus de celà, on doit pouvoir faire un copier coller d'un endroit vers mon Tedit (pareil, il faut que je puisse savoir si le contenu de ce qui est en mémoire est que des chiffres)
    J'ai bien une idée, c'est dans le OnKeyDown, vérifier si on a bien ssCtrl dans Shift, si oui, on récupère le contenu via le presse papier et on fait un TryStrToInt pour savoir si on a que des chiffres ou pas.
    Mais bon, c'est peut -être pas très propre comme solution
    De plus, j'ai remarqué que ce code ne fonctionné pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if Key=65 then
    begin
      Key:=0;
    end;
    J'ai mis celà dans le OnKeyDown! La valeur Key n'est pas modifiée!!! Normal ou pas ? Moi je trouve celà étrange.

    J'attends vos réponses en ce qui concerne donc la saisi via Ctrl+V et le OnKeyDown si vous avez une idée!

    Merci
    Cordialement

    PS: je suis tout à fait au courant de l'entrée dans la FAQ : Comment ne rentrer que des chiffres dans un TEdit ? Mais ça ne convient pas.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 996
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 996
    Points : 15 480
    Points
    15 480
    Par défaut
    Io, man !

    Jette donc un oeil ici
    Tchô,
    --
    jp

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 131
    Points : 106
    Points
    106
    Par défaut
    peut-etre l'a tu deja fait mais il faut passer la proriété keypeview à True pour prendre en compte les actions du clavier.
    Moi j'avais galéré juste a cause de ca donc on ne sait jamais ca arrive meme aux meilleurs

  4. #4
    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 : 38
    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,

    Citation Envoyé par kevinou55 Voir le message
    peut-etre l'a tu deja fait mais il faut passer la proriété keypeview à True pour prendre en compte les actions du clavier.
    Moi j'avais galéré juste a cause de ca donc on ne sait jamais ca arrive meme aux meilleurs
    Logiquement, non, il n'y a pas besoin de KeyPreview dans ce cas, je me place directement dans le contrôle

    Citation Envoyé par Aide Delphi
    Si la propriété KeyPreview a la valeur true, les événements du clavier ont lieu dans la fiche avant d'avoir lieu dans le contrôle actif. Le contrôle actif est spécifié par la propriété ActiveControl.

    Si KeyPreview a la valeur false, les événements clavier ne se produisent que dans le contrôle actif.
    A++ (et merci pour ta réponse tout de même)

  5. #5
    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 : 38
    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
    Citation Envoyé par Jipété Voir le message
    Io, man !

    Jette donc un oeil ici
    Tchô,
    --
    jp
    Hey! Avec ce que tu viens de poster, j'ai réussi à me confectionner mon petit truc

    Le code ci dessous ... Ne pas oublier de mettre l'unit Clipbrd ...

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    const
      CTRL_C = #3;
      CTRL_V = #22;
      CTRL_X = #24;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      Value:integer;
    begin
    if ((Key = CTRL_C) or (Key = CTRL_X)) then
      Edit1.CopyToClipboard
    else
    begin
      if Key = CTRL_V then
      begin
        if Clipboard.HasFormat(CF_TEXT) then
        begin
          if TryStrToInt(Trim(Clipboard.AsText),Value) then
          begin
            Key:=#0;
            Edit1.SelText:=IntToStr(Value);
          end
          else
            Key:=#0;
        end;
      end
      else
        if not (Key in ['0'..'9']) then
          Key:=#0;
      end;
    end;
    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    const
      CTRL_A  = #1;   //= ^A
      CTRL_B  = #2;   //= ^B 
      CTRL_C  = #3;   //= ^C
      //...       
      CTRL_Y  = #25;  //= ^Y
      CTRL_Z  = #26;  //= ^Z
      CTRL_SPACE = #127;
    Donc on peut faire ainsi également :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      Value:integer;
    begin
    if ((Key = ^C) or (Key = ^X)) then // ou (Key = #3) or (Key = #24)
      Edit1.CopyToClipboard
    else
    begin
      if Key = ^V then // ou Key = #22
      begin
        if Clipboard.HasFormat(CF_TEXT) then
        begin
          if TryStrToInt(Trim(Clipboard.AsText),Value) then
          begin
            Key:=#0;
            Edit1.SelText:=IntToStr(Value);
          end
          else
            Key:=#0;
        end;
      end
      else
        if not (Key in ['0'..'9']) then
          Key:=#0;
      end;
    end;
    Merci !
    @+

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

Discussions similaires

  1. extraire uniquement les chiffres d'une cellule
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/08/2017, 19h25
  2. autoriser juste les chiffres
    Par pigeon11 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 22/04/2009, 13h22
  3. Réponses: 8
    Dernier message: 07/12/2007, 21h48
  4. [Tedit]Saisir que les chiffres
    Par sofianoo dans le forum Delphi
    Réponses: 6
    Dernier message: 20/06/2007, 15h12
  5. autoriser que les chiffres dans un champ
    Par ph_anrys dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/08/2006, 17h17

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