rachid1245
Messages postés16Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention20 avril 2011
-
28 mai 2009 à 13:02
rachid1245
Messages postés16Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention20 avril 2011
-
28 mai 2009 à 15:11
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.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 28 mai 2009 à 13:50
Salut
Utilise la fonction SetFocus()
A+
____________________________________________________________________________
Mon site internet :
http://ImAnalyse.free.fr
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 28 mai 2009 à 13:53
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.
rachid1245
Messages postés16Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention20 avril 2011 28 mai 2009 à 15:11
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.