Saisie d'une valeur monetaire

cs_kam81 Messages postés 114 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 11 février 2009 - 5 oct. 2005 à 21:51
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 - 6 oct. 2005 à 07:53
bonjour,
comment empêcher les utilisateurs de saisir plus de 2 chiffres apres la virgule dans un tedit pour entrer une valeur monetaire?

4 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
5 oct. 2005 à 22:56
salut,

dans le Tedit tu rajoute dans l'evement on change:

procedure TForm1.Edit1Change(Sender: TObject);

var carcourant:integer;

begin

with sender as Tedit do

begin

if (pos(',',text)<>0)and (length(text)>pos(decimalseparator,text)+2) then

begin

carcourant:=selstart;

selstart:=carcourant-1; sellength:=1;ClearSelection;

end;

end;

end;

bonne prog;
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
5 oct. 2005 à 23:14
on peut ameliorer cette fonction en faisant:

procedure TForm1.Edit1Change(Sender: TObject);

var carcourant:integer;

begin

with sender as Tedit do

begin

if (pos(',',text)<>0)and (length(text)>pos(decimalseparator,text)+2) then

begin

carcourant:= selstart;

if carcourant = length(text) then selstart:= carcourant-1

else selstart: =length(text)-1;

sellength:=1;ClearSelection;//

end;

end;

end;

en gros la partie rajoutée permet l'insertion d'un chiffre lorsque le curseur est situé apres la virgule.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
5 oct. 2005 à 23:18
derniere amelioration:

procedure TForm1.Edit1Change(Sender: TObject);

var carcourant:integer;

begin

with sender as Tedit do

begin

if (pos(',',text)<>0)and (length(text)>pos(decimalseparator,text)+2) then

begin

carcourant:= selstart;

if carcourant = length(text) then selstart:= carcourant-1
else selstart: =length(text)-1;
sellength:=1;ClearSelection;

selstart:=length(text)-1;// repostionne le curseur

end;

end;

end;
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 oct. 2005 à 07:53
excuse moi il faut remplacer:

selstart:= length(text)-1; // repostionne le curseur

par

selstart: =carcourant;// repostionne le curseur
0
Rejoignez-nous