Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2011, 17h22   #1
Invité régulier
 
Inscription : avril 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 12
Points : 5
Points : 5
Par défaut Ruban - Invalidate avec ruban contextuel

Bonjour,

Voici mon problème :
- J'ai un ruban général à l'application
- J'ai un ruban contextuel pour chaque formulaire (fichier xml avec <contextualTabs> et <tabSet idMso="TabSetFormReportExtensibility"> )

Je n'arrive pas à mettre à jour la valeur d'une liste déroulante avec la méthode invalidatecontrol dans les formulaires contextuels.
J'y arrive pourtant bien dans le ruban général (avec fonction callback GetText, méthode invalidatecontrol de l'objet du ruban chargé dans le ribbonloaded.

Donc question : La méthode invalidatecontrol (ou invalidate d'ailleurs) fonctionne elle avec les rubans contextuels ou uniquement avec le ruban général ?

Merci de vos lumières.
Olivier
olivier03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 17h28   #2
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bjr,

oui ça marche, je le fais

mais tu parles de deux rubans

utilise-tu bien le bon objet pour appeler InvalidateControl?
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 09h25   #3
Invité régulier
 
Inscription : avril 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 12
Points : 5
Points : 5
Oups, Je n'ai pas utilisé les bons termes .

J'ai effectivement un seul ruban.
- Un onglet lié à l'application
- Un onglet contextuel (qui apprait en couleur) pour chaque formulaire

Je n'arrive pas à invalider un controle dans l'onglet contextuel (en posant un point d'arrêt sur getText, j'ai constaté que la fonction n'est jamais exécutée) alors qu'elle l'est pour un contrôle de l'onglet de l'application.

code xml du la liste qui ne fonctionne pas :
Code :
<comboBox id="cbZones" label="Zone : " getItemCount="getNbZones" getItemLabel="getZones" sizeString="aaaaaaaaaaaaaaaaaaaa" onChange="cbComZones_change" getText="cbComZones_GetText" screentip="Rechercher un site" supertip="Choisissez un site dans la liste déroulante" ></comboBox>
code xml du la liste qui fonctionne :
Code :
<comboBox id="cbDocZones" label="Secteur : " getItemCount="getNbDocZones" getItemLabel="getDocZones" sizeString="aaaaaaaaaaaaaaaaaaaaaaa" onChange="cbDocZones_change" getText="cbDocZones_GetText" screentip="Rechercher un site" supertip="Choisissez un site dans la liste déroulante" ></comboBox>
getText de la liste qui ne fonctionne pas (FiltreZoneCom est globale)
Code :
1
2
3
Public Sub cbComZones_GetText(control As IRibbonControl, ByRef text)
    text = FiltreZoneCom
End Sub

getText de la liste qui fonctionne (FiltreZone est globale)
Code :
1
2
3
Public Sub cbDocZones_GetText(control As IRibbonControl, ByRef text)
    text = FiltreZone
End Sub
En faisant ceci ,
Code :
1
2
3
4
FiltreZone = "aaa"
FiltreZoneCom = "bbb"
myRibbon.InvalidateControl ("cbDocZones")
myRibbon.InvalidateControl ("cbZones")
cbDocZones a la valeur est bien modifé (aaa) mais pas cbzones.

Merci pour votre aide.
olivier03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 09h42   #4
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
ben ça devrait marcher à priori

est-ce que l'onglet contextuel est bien visible au moment du InvalidateControl?
le code InvalidateControl est-il placé dans le code de chargement du formulaire?
sil est possible qu'il y ait un petit délais d'affichage de l'onglet contextuel (le ruban est un peu lent à réagir et peut-être bien que l'onglet n'apparaît qu'une fois le chargement du formulaire terminé)
peut-être qu'un DoEvents avant les InvalidateControl pourrait forcer l'onglet à apparaître avant de demander la mise à jour du contrôle?
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h28.


 
 
 
 
Partenaires

Hébergement Web