[Déplacé VBA --> VBS] [Déplacé VB6 --> VBA] Pbm sur SetFocus: Control invisible
romca
Messages postés48Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 avril 2010
-
18 avril 2010 à 19:32
romca
Messages postés48Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 avril 2010
-
19 avril 2010 à 21:17
Bonjour,
Voilà sur un formulaire Outlook je dois donner le focus à un champ, mais malgré que j'affiche la page juste avant j'ai une erreur sur le Focus lorsque l'util change de page en cours de saisie, le debugger me dit que j'ai erreur car le champ avant n'est pas activé ou est invisible, voici une partie du code, l'erreur est sur la dernière ligne.
Function VerifSaisie(NomPage)
Select Case NomPage
'----------Traitement Page Installation---------
'-----------------------------------------------
Case "Install"
'MsgBox "Hello je suis le test de la page Installation"
If Item.UserProperties("2-Localisation Bat")="" Then
MsgBox "Page Installation: Le numéro du batiment est obligatoire", vbInformation
'Donner le focus----
objInspector.SetCurrentFormPage "Installation"
PageInstallation.Controls("2-Localisation Bat").SetFocus
'----------------------
VerifSaisie= False
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 18 avril 2010 à 20:37
Salut
En effet, donner le focus un composant non visible déclenche une erreur de ce type.
Il te suffit de mettre un DoEvents entre ton ordre d'affichage de ta forme et l'ordre de focus, ça devrait suffire.
Ou mieux, regarder si l'object objInspector peut te retourner son état (occupé ou dispo) afin d'attendre (avec une boucle) qu'il ait terminé avant de poursuivre (ce qui est le cas des connexions aux DB ou des navigateurs)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
romca
Messages postés48Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 avril 2010 18 avril 2010 à 21:34
Salut,
ok merci,
dans les 2 cas pourrait-tu écrire le code:
"Il te suffit de mettre un DoEvents entre ton ordre d'affichage de ta forme et l'ordre de focus, ça devrait suffire" > Comment fait-tu pour utiliser DoEvents, dans l'aide il n'y a que la classe Interaction qui l'utilise et pas "d'Inspector".
"Ou mieux, regarder si l'object objInspector peut te retourner son état (occupé ou dispo)" > Je n'ai pas trouvé de propriété occupé ou dipso ? comment ferais-tu ??
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 avril 2010 à 05:52
- DoEvents
Il te suffit d'écrire ce petit mot sur une ligne, je pense juste avant le PageInstallation
- Pas de propriété State ou Busy ?
Tant pis, ça valait le coup de chercher.
Ne connaissant pas la définition de cet objet donc son type, difficile de regarder dans l'aide à ta place.
romca
Messages postés48Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 avril 2010 19 avril 2010 à 21:17
Salut,
ok merci j'avais déjà essayé avec DoEvents mais il n'est pas reconnu "Erreur d'exécution Microsoft VBScript: Type incompatible: 'DoEvents'".
Pour ce qui est de l'objet Inspector je n'ai comme propriété intéressantes que Activate, close ou desactivate...
Si tu as une autre idée je suis preneur... As-tu besoin du code entier ?
Il est pas long.