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 :

keypress sous delphi


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Points : 6
    Points
    6
    Par défaut keypress sous delphi
    bonjour,
    je suis débutante en delphi et je veut écrire évènement KeyPressed qui permet de controler la saisi d'un nombre entier positif et un nombre réel positif merci de me répondre

  2. #2
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    KeyPress et KeyPressed n'existe plus en delphi.


    s'agit il d'un programme console ou SDI/MDI ?
    [ 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!

  3. #3
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Peut-être le OnKeyPressed ?

    Cf : http://delphi.developpez.com/faq/ind...propri#numbers
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Points : 6
    Points
    6
    Par défaut evenement OnKeyPress_delphi
    Bjr,
    je veux savoir comment je peut faire un contrôle de la saisie d'un nombre entier positif et negatif ds edit.text avec delphi bien sur merci bien

  5. #5
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
     val(edit1.Text,valeur,code);
    end;
     
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
     if ((Key<#$30) or (Key>#$39)) and  (Key<>'-')and (Key<>#$8) then   Key:=chr(0);
    end;
    où valeur reçoit ton nombre...

  6. #6
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 119
    Points
    3 119
    Par défaut
    Bonjour,

    moi j'utilise une de ces 2 fonctions à appeler depuis le onKeyPress du champs de saisie :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    { ======================================================================= }
    procedure TF_Materiau2.MasqueSaisie(Sender: TObject; var Key: Char);
    { Filtre sur la saisie d'une valeur numérique dans un TEdit }
    var
     texte         : String;
    begin
       With Sender As  TEdit  Do
          Begin
             texte:=text;
             { La saisie d'une lettre n'est pas acceptée :  }
             if not (Key in ['0'..'9',',','.','-',#8,#13]) then Key := #15;
             {  Interdiction de la saisie de plusieurs virgules successives :
             en outre, la saisie d'un point est remplacée par une virgule :     }
             if (Key = ',') or (Key = '.') then
                if (Pos(',',Texte) > 0) or (Pos('.',Texte) > 0) then
                   Key := #15
                else
                   Key := DecimalSeparator;
             { un point (une virgule) sera toujours précédé de 0 :    }
             if (Key = ',') or (Key = '.') then
             if length(texte)<1  then
                Begin
                   text:='0,';
                   selstart:=2;
                   Key :=#0;
                end;
             if (Key = ',') or (Key = '.') then
             if ((length(texte)<2) And (copy(texte,1,1)='-'))  then
                Begin
                   text:='-0,';
                   selstart:=3;
                   Key :=#0;
                end;
             {  pas d'espace :     }
             if Key = #32 then Key := #15;
             {  ni de tiret :   }
             if Key = '-' then if ((length(Texte) > 0)And(SelStart >1)) then Key := #15;
             if Key <> #0 then inherited KeyPress(Key);
          End ;
       { Suppression de certaines touches qui sonnent dans le Edit des champs }
       If Ord(Key)=13 Then Key := Chr(0) ;
    end;
    { ======================================================================= }
    procedure TF_Materiau2.MasqueSaisieInt(Sender: TObject; var Key: Char);
    { Saisie d'une valeur numérique entiére positive }
    var
     texte         : String;
    begin
       With Sender As  TEdit  Do
          Begin
             texte:=text;
             { La saisie d'une lettre n'est pas acceptée :  }
             if not (Key in ['0'..'9',#8,#13]) then Key := #15;
             {  pas d'espace :     }
             if Key = #32 then Key := #15;
             {  ni de tiret :   }
             if Key = '-' then if (length(Texte) > 0) then Key := #15;
             { Pas de 0 en première position:    }
             if (Key = '0') then
             if length(texte)<1  then  Key := #15;
     
             if Key <> #0 then inherited KeyPress(Key);
          End ;
       { Suppression de certaines touches qui sonnent dans le Edit des champs }
        If Ord(Key)=13 Then Key := Chr(0) ;
    end;
    { ======================================================================= }
    On peut surement l'améliorer car c'est un peu "bricolé" mais cela fonctionne.

    A+

    Charly

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 679
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 679
    Points : 13 082
    Points
    13 082
    Par défaut
    Une autre variante en gérant les erreurs de conversion:

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      s   :string;
      i,j :integer;
     
    begin
      with TEdit(Sender) do
        case Key of
          chr(VK_BACK)   :;
     
          chr(VK_RETURN) : begin
                             Text := FloatToStr(StrToFloatDef(Text, 0));
                             SelectAll;
                           end;
     
          '-'            : if Length(Text) > 0 then
                           begin
                             s := Text;
                             i := SelStart;
                             j := SelLength;
     
                             if s[1] = Key then
                             begin
                               Delete(s, 1, 1);
                               Dec(i);
                             end
                             else
                             begin
                               Insert(Key, s, 1);
                               Inc(i);
                             end;
     
                             Text      := s;
                             SelStart  := i;
                             SelLength := j;
                             Key       := #0;
                           end;
     
          else             try
                             s := Text;
     
                             if SelLength > 0 then
                               Delete(s, SelStart +1, SelLength);
     
                             Insert(Key, s, SelStart +1);
     
                             StrToFloat(s);
                           except
                             Key := #0;
                           end;
       end;
    end;

Discussions similaires

  1. Corba sous Delphi et ORB alternatif
    Par Inpriser dans le forum CORBA
    Réponses: 4
    Dernier message: 18/08/2003, 18h42
  2. retrouver les compsants FASTNET sous Delphi 7
    Par fandor7 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/06/2003, 18h11
  3. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  4. calcul sous delphi
    Par djedje-08 dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2003, 17h39
  5. Réponses: 4
    Dernier message: 27/03/2002, 11h03

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