Problème avec OnKillFocus [Résolu]

Signaler
Messages postés
16
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
20 avril 2011
-
Messages postés
16
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
20 avril 2011
-
Bonjour à tous,

voilà j'ai une fenêtre de dialogue avec plusieurs edits  numérique avec la propriété Tabstop
dans la fonction OnChar je selectionne les caractères qu'il est permis de saisir (des chiffres)
jusque là tout va bien.
Mais comme j'ai des limites à ne pas dépasser, par exemple Editcontrol1 ne doît pas contenir une valeur supérieure à 999, il faut faire un test sur la valeur saisie. Si la valeur est supérieure à 999 j'envoie un messageBox "attention la valeur saisie est invalide veuillez rectifier", une fois sortie de message Box mon contrôle "érroné" retrouve le focus pour rectification de la valeur saisie.
Le problème c'est que si j'effectue ce fameux test dans la fonction OnChange à chaque modification qui donne une valeure invalide je déclenche un messageBox  cela deviens aggaçant il y'a trop de message box.
J'ai pensé mieux faire en testant la valeur saisie seulement une fois au moment ou mon contrôle pert le focus.
pour cela j'ai fait mon test dans le handler OnKillFocus, si la valeur n'est pas bonne seulement à ce moment j'envoie un messageBox.
Mon problème est sûrement bête:  comment redonner le focus au même contrôle après le massage box de l'intérieur de la fonction OnKillFocus.
 Merçi d'avance.
A bientôt.

3 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
Utilise la fonction SetFocus()
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
Messages postés
3838
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
La manière la plus élégante de faire, n'est effectivement pas de faire apparaître pleins de messages box, mais de faire afficher une sigle (une petite étoile rouge, par exemple) à côté des champs invalides, avec une explication en tooltip.
Pour se faire, tu peux mettre des labels dont le texte est "*" à coté de tes edits numériques, que tu rends invisible. En cas d'erreur, tu rends visibles uniquement ceux nécessaire, et la validation de la form est annulée. Si tout se passe bien, tu peux faire disparaître tous les messages d'erreur, et laisser la validation suivre son cours.
Messages postés
16
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
20 avril 2011

Merçi Pistol_Pete
je disais bien qu'il y'avait quelque chose qui clochait
et bien voilà au lieu d'écrire
dans OnKillFocus()
this->SetFocus()
j'utilisais le handler   this->OnSetFocus()
maintenant ca marche avec SetFocus().

Merçi également CptPingu
ta proposition d'utiliser les tooltips pour passer des messages d'erreurs est trés élégante je vais essayer de l'exploiter
Merçi beaucoup
A trés bientôt.