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
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
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!
Peut-être le OnKeyPressed ?
Cf : http://delphi.developpez.com/faq/ind...propri#numbers
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
où valeur reçoit ton nombre...
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;
Bonjour,
moi j'utilise une de ces 2 fonctions à appeler depuis le onKeyPress du champs de saisie :
On peut surement l'améliorer car c'est un peu "bricolé" mais cela fonctionne.
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; { ======================================================================= }
A+
Charly
Mon site : http://lapaille.byethost24.com/index.htm
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;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager