Restreindre une saisie

Résolu/Fermé
Lulu_f5jcg Messages postés 5 Date d'inscription dimanche 20 juin 2021 Statut Membre Dernière intervention 3 juin 2023 - Modifié le 20 juin 2021 à 11:30
Lulu_f5jcg Messages postés 5 Date d'inscription dimanche 20 juin 2021 Statut Membre Dernière intervention 3 juin 2023 - 21 juin 2021 à 09:37
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

Utilisateur anonyme
21 juin 2021 à 07:44
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.
1
Lulu_f5jcg Messages postés 5 Date d'inscription dimanche 20 juin 2021 Statut Membre Dernière intervention 3 juin 2023
21 juin 2021 à 09:37
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
0
Utilisateur anonyme
20 juin 2021 à 17:20
Bonjour

J’ai jamais fait de c++ sur delphi… Mais au cas où, est ce que le Tedit avec NumberOnly accepte la virgule?
0
Lulu_f5jcg Messages postés 5 Date d'inscription dimanche 20 juin 2021 Statut Membre Dernière intervention 3 juin 2023
Modifié le 20 juin 2021 à 17:32
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...
0