Seulement des chiffres dans un edit.

Résolu
Becracker Messages postés 116 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 25 septembre 2005 - 28 juil. 2005 à 16:24
cs_neko Messages postés 135 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 12 octobre 2006 - 28 juil. 2005 à 21:16
Salut à tous,



Je voudra savoir si qqn d'entre vous sait comment faire pour qu'un edit n'accepte que des chiffres.



Merci à tous et désolé pour autant de questions suivies.

15 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
28 juil. 2005 à 17:01
salut

pour des nombres entiers j'utilise:

procedure Tform1.Edit1KeyPress(Sender: TObject; var Key: Char);

const Valid = #13, '0'..'9';

var buffer:string;

begin

with sender as Tedit do

if key ='-' then

begin

buffer:= Text;

if buffer='' then buffer:='0';

if buffer<>'0' then

begin

if pos('-',buffer) =0 then buffer:= '-'+buffer

else delete(buffer,1,1);

end;

Text: =buffer;key:= #0;

end ;

if not(key in valid) then key: =#0;

end;

procedure TFormi..Edit1Exit(Sender: TObject);

begin

with sender as Tedit do text:=inttostr(tag);// je place la valeur dans le tag



end;
3
cs_neko Messages postés 135 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 12 octobre 2006 1
28 juil. 2005 à 16:25
Tu as SpinEdit dans l'onglet "Exemples" qui fait ça déjà :)

bouh
0
Becracker Messages postés 116 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 25 septembre 2005
28 juil. 2005 à 16:30
J'ai pas ce composant dans mon delphi 7
0
cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
28 juil. 2005 à 16:38
Dans l'événement OnKeyPress de ton Edit tu met ceci:



Procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

If not (Key in ['0'..'9', DecimalSeparator]) then Key:=#7;

end;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 13
28 juil. 2005 à 16:53
Je conseille plutôt :

If not (Key in [#8, '0'
..'9', DecimalSeparator]) then Key:=#9;

ce qui laisse passer aussi la touche [retour arrière]

@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size="2" width="100%">
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
0
Becracker Messages postés 116 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 25 septembre 2005
28 juil. 2005 à 17:06
Question à [auteurdetail.aspx?ID=332111 CptPingu] et ni69, quand je mets la procédure que vous m'avez conseillé dans mon code, il me dit Edit1KeyPress non déclaré ...
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
28 juil. 2005 à 17:22
j'avais oublie pour eviter les plantages:

procedure TForm1.Edi1Change(Sender: TObject);

var valeur:integer;

var buffer:string;

begin

with sender as Tedit do

begin

valeur:= 0;

buffer:=text;

if pos('-',buffer) =2 then

begin delete(buffer,1,1);text:= buffer; end ;

if Text<>'' then valeur: =strtoint(Text);

Tag:=valeur;

end;

end;
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
28 juil. 2005 à 17:26
pour ton pb de Edit1KeyPress non déclaré as tu double clique sur l'evenement onkeypress de label1?
0
Becracker Messages postés 116 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 25 septembre 2005
28 juil. 2005 à 18:10
Ok, ca marche, merci à vous. Je voulais juste savoir à kel caractère corespondait #7 et #9 svp.



Merci pour tout.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
28 juil. 2005 à 18:14
le caractere #7 correspond a bell (sonnerie) et #9 au retour arriere
0
Becracker Messages postés 116 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 25 septembre 2005
28 juil. 2005 à 18:16
On appelle ca une écriture héxadécimale ou koi ?
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 13
28 juil. 2005 à 18:31
Petite correction jlen100 : #9 correspond à une tabulation (TAB), pas au retour arrière (qui lui est représenté par #8).

Au final, l'effet est le même car #7 et #9 déclenchent un bip



Becracker : ce sont les codes ASCII des caractères.


@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size="2" width="100%">
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
28 juil. 2005 à 19:33
effectivement j'ai fais une petite erreur quoique sur mon PC #9 ne fait rien --> equivalent au #0
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
28 juil. 2005 à 20:27
neko,

petite precision sur le composant SpinEdit;

il présente un defaut à l'utilisation:

quand on efface totalement la saisie et que l'on tente de lire la
propriete value on obtient une erreur d'execution et je n'ai pas reussi
a intercepter l'exception
0
cs_neko Messages postés 135 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 12 octobre 2006 1
28 juil. 2005 à 21:16
En effet, tu ne peux pas intercepter l'exception car celle-ci l'est déjà dans le code du Spin Edit.

Donc en session de deboggage l'exeption apparait mais en "utilisation réelle" c'est la valeur minimum qui sera renvoyée


bouh
0