UN TEDIT UNIQUEMENT NUMÉRIQUE

Signaler
Messages postés
5
Date d'inscription
mardi 20 août 2002
Statut
Membre
Dernière intervention
18 avril 2007
-
Messages postés
63
Date d'inscription
samedi 18 janvier 2003
Statut
Membre
Dernière intervention
15 décembre 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20231-un-tedit-uniquement-numerique

Messages postés
63
Date d'inscription
samedi 18 janvier 2003
Statut
Membre
Dernière intervention
15 décembre 2009

Petite précision pour le commentaire ajouté par Pag...
Au lieu d'écrire :
deci := AnsiPos(',',test);
...
Key := ',';

Il est plus judicieux d'écrire
deci := AnsiPos(DecimalSeparator, test);
Key := DecimalSeparator;

Pour que ce soit compatible sur tous les systèmes (en fonction des paramètres régionaux locaux à la machine)...

Séparateur décimal : le point (1.00) ou la virgule (1,00)

J'ai pas encore testé ce composant... Donc pour le reste on verra plus tard. Mais il a l'air sympa...
Messages postés
5
Date d'inscription
mardi 20 août 2002
Statut
Membre
Dernière intervention
18 avril 2007

Il ne faut pas oublier que c'est de la programmation orientée objet.

ObjetParant ---> TEdit ---> TEditNombre
Messages postés
205
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
2 juin 2005
1
Attends, moi je te parle d'un nouveau composant avec ces fonctionnalités et non d'un composant (TEdit) surchargé.

La différence est loin d'etre négligeable ! C'est ce qui fait tout d'ailleurs !
Messages postés
5
Date d'inscription
mardi 20 août 2002
Statut
Membre
Dernière intervention
18 avril 2007

IL y a plus simple

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

begin
if not (key in '9') then key := #0;
end
end;

ou pour une calculatrice

procedure TForm1.CalcKeyPress(Sender: TObject; var Key: Char);
begin
test := (Sender as TEdit).Text;
deci := AnsiPos(',',test);
if cl = 1 then Calc.Clear;
cl := 0;

case key of

#44,#46 : if deci = 0
then Begin
key := ',';
deci :=1;
end
else key := #0;

'*': begin Button15Click(Sender); key := #0; end;

'/': begin Button16Click(Sender); key := #0; end;

'-': begin Button17Click(Sender); key := #0; end;

'+': begin Button18Click(Sender); key := #0; end;

#13: begin Button6Click(Sender); key := #0; end;

else if not (key in '9')
then key := #0;

end;

OU tout ce qu'on veux....