Restreindre une saisie [Résolu]

Signaler
Messages postés
3
Date d'inscription
dimanche 20 juin 2021
Statut
Membre
Dernière intervention
21 juin 2021
-
Messages postés
3
Date d'inscription
dimanche 20 juin 2021
Statut
Membre
Dernière intervention
21 juin 2021
-
Bonjour,
Je suis très débutant en Delphi C++ Builder. J'ai exposé mon problème dans d'autres forums sans réponse.
J'ai un TEdit nommé BandeEdit. Je désire autoriser la saisie seulement des chiffres et du . (point).
La propriété NumbersOnly du TEdit n'autorise pas le point.
A noter que j'ai codé ceci sans problème en Pascal.
Merci de me répondre pour me débloquer.
Cordialement

3 réponses

Messages postés
16120
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 juillet 2021
723
Si tu peux intercepter un évènement qui se déclenche au moment de la frappe de la touche mais avant que le texte soit modifié (en C++ .Net ce serait KeyDown).
Tu peux tester s'il s'agit d'un nombre, de la virgule ou du point et autoriser ou interdire la poursuite de l'action (toujours en C++ .Net ce serait passer la propriété Handle de l'argument e à true).

Je ne sais pas si et comment cela est transposable avec des objets Delphi.
Messages postés
3
Date d'inscription
dimanche 20 juin 2021
Statut
Membre
Dernière intervention
21 juin 2021

Bonjour à tous,
Merci pour toutes vos réponses mais je vais rester au Pascal de Delphi. J'ai voulu faire une incursion dans le C++ mais sans succès à ce jour car je bloque déjà sur un problème simple.
Cordialement
Messages postés
16120
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 juillet 2021
723
Bonjour

J’ai jamais fait de c++ sur delphi… Mais au cas où, est ce que le Tedit avec NumberOnly accepte la virgule?
Messages postés
3
Date d'inscription
dimanche 20 juin 2021
Statut
Membre
Dernière intervention
21 juin 2021

Bonjour Whismeril,
Non, la propriété NumbersOnly du TEdit n'accepte ni point ni virgule, seulement les chiffres, et c'est là le problème.
Voici la solution qui fonctionne parfaitement en Pascal de Delphi :
Var
I: Integer;
S: String;
begin
S := '';
for I := 1 to Length(BandeEdit.Text) do
if (BandeEdit.Text[I] in ['0'..'9','.']) then S := S + BandeEdit.Text[I];
BandeEdit.Text := S;

Personne jusqu'à présent n'a trouvé une bonne solution. Mais courage...