|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Jean François DenesAmateur Inscription : juin 2010 Messages : 42 ![]() |
Bonjour,
Je viens de voir que l'on pouvait utiliser la table USysRibbon (ou autre table) pour charger les rubans. Y a t-il une raison d'utiliser cette méthode ou fichier XML externe avec func Loadribbons ? UsysRibbon me parait avoir l'avantage de ne pas avoir de fichiers externes à gérer. Merci. JFD |
|
|
00
|
|
|
#2 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
La table USysRibbons est faite pour contenir le xml des rubbans. Elle est reconnue pas Access, et les rubans sont chargés sans une ligne de code VBA. Après avoir collé le xml des rubans dans USysRibbons et avoir redémarré la base de données, on retrouve le nom de ces rubans dans les listes déroulantes permettant de choisir le ruban de l'Application ou d'un formulaire. Le gros avantage est que l'on n'a pas besoin d'avoir des fichiers externes pour les rubans. Tout est dans le fichier base de données. A+ |
|
|
00
|
|
|
#3 | ||||||
|
Membre à l'essai
![]() Jean François DenesAmateur Inscription : juin 2010 Messages : 42 ![]() |
![]() Merci, C'est bien ce que je croyais avoir compris, Par contre étant débutant en Access, j'ai une question, je ne trouve pas d'exemple "simple" pour manipuler en VBA les rubans une fois créés. Les actions à partir du ruban (on_action) sont bien décrites dans les assistants, mais je n'y vois pas la contrepartie dans les formulaires. ex: comment sélectionner simplement un tab/ un group, ... à partir d'un formulaire => Y a t-il un exemple explicitant la totalité de ce qu'il y a à faire. Actuellement j'ai réussi a construire le ruban, => XML correct, associé à un formulaire => OK mais pas à actionner un tag à partir du formulaire: l'état de mes élucubrations ci dessous! XML Code :
Chargement des rubans Code :
Code :
Merci: calim2: JFD |
||||||
|
|
00
|
|
|
#4 | |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
J'ai essayé le xml de ton ruban. Access rapporte une erreur sur la ligne : Code xml :
<button id="button1" tag="Button1Tag" label="LabelButton1" onAction="TestRuban_OnAction" imageMso="DiagramRadialInsertClassic" keytip="B" insertAfterQ="TestRuban_OnAction"/>
Pour être averti des erreurs dans le xml des rubans, aller dans les options d'Access. Choisir la rubrique «Avancé», et dans la partie droite, sous «Général», cocher l'option «Afficher les erreurs du complément d'interface utilisateur». Citation:
On ne peut pas modifier un ruban une fois qu'il est chargé. On ne peut pas décharger un ruban chargé. La seule chose possible est de jouer avec les fonctions de rappel (CallBacks). Pour forcer le ruban a appeler des fonctions de rappel, on utilise les méthodes Invalidate et InvalidateControl de l'objet ruban (IRibbonUI) . Remarque sur le chargement des rubans. Si tu utilises la table USysRibbons, tu n'as pas besoin de code pour charger les rubans. Il suffit, dans les propriétés du formulaire (onglet Autres), de sélectionner le nom du ruban. Le ruban se chargera tout seul à la première ouverture du formulaire. A+ |
|
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Jean François DenesAmateur Inscription : juin 2010 Messages : 42 ![]() |
Merci pour l'info sur «Afficher les erreurs du complément d'interface utilisateur».
J'avais développé le XML avec l'assistant ruban de T Gasperment - très pratique - celui-ci ne détectait pas d'erreur!Par ailleurs, Access ne détecte rien d'anormal chez moi. => Comment devrait-il signaler l'erreur ? Est-ce que cela explique que je ne puisse faire marcher les méthodes Invalidate et InvalidateControl de l'objet ruban (IRibbonUI). qui sont si j'ai bien compris les méthodes permettant de sélectionner un tag spécifique à partir d'un VBA de formulaire. Merci, JFD |
|
|
00
|
|
|
#6 | ||||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Il s'agit d'une erreur d'exécution (comme pour une division par zéro par exemple). La syntaxe en elle-même est correcte. Voici l'erreur que j'ai : Citation:
Citation:
Je n'arrive pas à reproduire l'erreur 424. Sauf si je cliques sur "Réinitialiser" dans l'éditeur Visual Basic. Si la variable globale MonRuban est réinitialisée on perd le lien avec le ruban. La seule chose à faire est de fermer la base de données, et de la réouvrir à fin de déclencher l'événement onLoad du ruban. Essaie avec ce xml. Dans la table USysRibbons, champ RibbonName = "TestRuban" et champ RibbonXML = Code xml :
Code vba :
Fermer la base de données, puis la réouvrir. Dans les propriété du formulaire, onglet Autres, sélectionner le nom du ruban : TestRuban. A l'ouverture du formulaire, le ruban va se charger tout seul. Lorsqu'on clique sur le bouton 2, il invalide le bouton 1. Cela génère de la part du ruban, un appel à TestRuban_GetLabel(..) à cause de la présence de dans les attributs du bouton 1. A+ |
||||||
|
|
10
|
|
|
#7 |
|
Membre à l'essai
![]() Jean François DenesAmateur Inscription : juin 2010 Messages : 42 ![]() |
![]() Effectivement ça marche! Merci beaucoup pour cette réponse parfaitement documentée. Je vais essayer de trouver quelles sont les différences par rapport à ma première mouture. Par contre je n'arrive pas à faire exécuter l'action à partir d'un sub placé comme action d'un bouton du formulaire. Au début je voulais activer un tag à partir d'un formulaire, mais en fait je pense comprendre que les rubans sont plus faits pour avoir une action d'un ruban vers un formulaire que d'un formulaire vers un ruban. De toutes façons, gd merci pour cette aide. JFD |
|
|
00
|
|
|
#8 | |||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
La variable MonRuban est hors de portée du module de classe du formulaire. Tu peux ...
Citation:
La mise à jour d'éléments du ruban demande pas mal de code et souvent des variables globales. C'est pas ce qu'il y a de plus direct. Si je dois modifier des éléments de mon ruban, en fonction de telle ou telle chose sur mon formulaire, je ne peux pas le faire directement. Je dois invalider un ou plusieurs contrôles de mon ruban pour déclencher l'appel des fonctions de rappel. Je ne peux passer aucun argument à ces fonctions de rappels. Il faut donc que le code du formulaire enregistre certaines infos dans des variables globales, pour que ces informations soient visibles depuis les fonctions de rappel. C'est vrai aussi dans l'autre sens. Lorsque quelque chose change sur le ruban (sélection dans une liste déroulante par exemple), le formulaire ne le sait pas et on ne peux pas interroger la valeur d'un élément du ruban. J'ai donc tout intérêt à mémoriser dans une variable globale la valeur en cours de ma liste déroulante, lorsque le ruban appelle la fonction de rappel correspondant à cet événement. J'espère ne pas avoir trop noirci le tableau C'est juste que pour un menu un peu complexe, ça va me prendre quelques dizaines de minutes pour le faire avec un formulaire (utilisé en tant que menu), alors qu'avec le ruban je compterai plutôt en heures. Bonne continuation. |
|||
|
|
10
|
|
|
#9 |
|
Membre à l'essai
![]() Jean François DenesAmateur Inscription : juin 2010 Messages : 42 ![]() |
Encore Merci pour la qualité des réponses
![]() Puis-je suggérer que lors de la mise à jour d'un des tuto sur les rubans ces conditions d'utilisation soient précisées. Ou peut-être étais-je un peu trop naif -et débutant- |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com