Controle de saisie [Résolu]

Signaler
Messages postés
114
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
11 février 2009
-
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
-
Bonjour,
comment empêcher les utilisateurs de saisir 2 fois ou plus la virgule dans un tedit pour faire rentrer une valeur monetaire.a savoir que dans l'evenement onkeypress je n'autorise que la virgule et les chiffres.

3 réponses

Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut tu peux faire ça

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

var buffer:string;

begin

with sender as Tedit do

if key=',' then

begin

buffer:= Text;

if pos(',',buffer)<>0 then key:=#0;

end;

end;

bonne prog
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
pour le controle des chiffres tu peux rajouter

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 pos(',',buffer)<>0 then key: =#0;

end;

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

end;

bonne prog
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Salut, on peut simplifier le code comme ceci :

if ((key DecimalSeparator) and (Pos(DecimalSeparator,(Sender <gras>as TEdit).Text) <> 0)) or (not (key in #13,DecimalSeparator,'0'..'9')) then key :</gras> #9; // provoque un bip d'erreur si un mauvais caractère est tapé


On remarquera l'utilisation de DecimalSeparator qui renvoie le séparateur décimal en vigueur sur l'ordinateur, afin de s'adapter à un plus grand nombre de situations


@+

Nico { http://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 !