Seulement des chiffres dans un edit.

Résolu
Signaler
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
25 septembre 2005
-
Messages postés
135
Date d'inscription
jeudi 14 août 2003
Statut
Membre
Dernière intervention
12 octobre 2006
-
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

Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
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;
Messages postés
135
Date d'inscription
jeudi 14 août 2003
Statut
Membre
Dernière intervention
12 octobre 2006
1
Tu as SpinEdit dans l'onglet "Exemples" qui fait ça déjà :)

bouh
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
25 septembre 2005

J'ai pas ce composant dans mon delphi 7
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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;
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
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 !
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
25 septembre 2005

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é ...
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
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;
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
pour ton pb de Edit1KeyPress non déclaré as tu double clique sur l'evenement onkeypress de label1?
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
25 septembre 2005

Ok, ca marche, merci à vous. Je voulais juste savoir à kel caractère corespondait #7 et #9 svp.



Merci pour tout.
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
le caractere #7 correspond a bell (sonnerie) et #9 au retour arriere
Messages postés
116
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
25 septembre 2005

On appelle ca une écriture héxadécimale ou koi ?
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
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 !
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
effectivement j'ai fais une petite erreur quoique sur mon PC #9 ne fait rien --> equivalent au #0
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
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
Messages postés
135
Date d'inscription
jeudi 14 août 2003
Statut
Membre
Dernière intervention
12 octobre 2006
1
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