VI. La vue Backstage▲
Nom du Ruban : rubBackstage
Deux attributs sont disponibles sur la balise <backstage> :
onShow : permet de lancer une procédure CallBack sur ouverture de la vue.
onHide : permet de lancer une procédure CallBack sur fermeture de la vue.
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
>
<backstage
onShow
=
"clbckOnShow"
onHide
=
"clbckOnHide"
>
</backstage>
</customUI>
Procédure CallBack sur ouverture et fermeture de la vue Backstage :
Sub
clbckOnShow
(
control As
IRibbonControl)
MsgBox
"Evénement sur ouverture de la vue Backstage"
End
Sub
Sub
clbckOnHide
(
control As
IRibbonControl)
MsgBox
"Evénement sur fermeture de la vue Backstage"
End
Sub
Nous verrons plus loin dans cet article comment interagir sur la vue Backstage à l'affichage du Ruban dans le but de la personnaliser.
VI-1. OnLoad - Ouverture de la vue Backstage▲
Cet attribut est placé dans la balise <CustomUI> du Code XML, il permet d'instancier un Objet afin de faire référence à l'interface utilisateur.
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
onLoad
=
"oldBackstage"
>
Sur chargement du Ruban le Code VBA de la fonction oldBacksatge sera exécuté.
Public
UIRubanPerso As
IRibbonUI
Sub
oldBackstage
(
UIRuban As
IRibbonUI)
Set
UIRubanPerso =
UIRuban
End
Sub
La variable Public UIRubanPerso est instanciée par le Ruban au chargement de celui-ci.
VI-2. loadImage▲
Cet attribut, placé dans la balise <CustomUI> du Code XML, permet de lancer une procédure VBA instanciant la source pour les images.
Code XML :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
onLoad
=
"oldBackstage"
loadImage
=
"clbckLoadImage"
>
Code VBA : définit le dossier images du répertoire courant de la base de données.
Sub
clbckLoadImage
(
imageId As
String
, ByRef
image)
Set
image =
LoadPicture
(
CurrentProject.Path
&
"\images\"
&
imageId)
End
Sub
VI-3. Mise à jour du Ruban▲
VII. Personnalisation du volet de navigation de la vue Backstage▲
Le volet de navigation de la vue Backstage correspond à la partie de gauche. On peut y placer des boutons personnalisés ainsi que des onglets.
Nous allons personnaliser ce volet.
VII-1. Boutons▲
Nom du Ruban : rubBouton
Nous allons utiliser la balise <button> afin d'ajouter des boutons personnalisés.
Voici le code à ajouter directement après la balise <backstage>derubVide
<button
id
=
"btnExemple"
label
=
"Bouton Perso"
imageMso
=
"ObjectEffectGlowGallery"
/>
Ici nous créons un bouton appelé « btnExemple » qui a pour texte « Bouton Perso » et comme image, une image prédéfinie d'Access 2010.
Voici le rendu :
VII-1-1. Attributs (Bouton)▲
Liste des attributs disponibles pour ce contrôle.
VII-2. Onglets▲
Nom du Ruban : rubOnglet
Pour ajouter un onglet personnalisé dans le volet de navigation de la vue Backstage nous allons utiliser la balise <tab> ; reprenez le XML de rubVide et ajoutez le code suivant :
<tab
id
=
"tabExemple"
label
=
"Onglet personnalisé"
/>
VII-2-1. Attributs (Onglet)▲
Liste des attributs disponibles pour ce contrôle.
VII-2-2. firstColumn▲
La vue d'un onglet personnalisé peut être affichée sur deux colonnes. Chaque colonne peut être traitée différemment dans son contenu. La balise <firstColumn> est obligatoire dans la structure même si vous ne voulez pas utiliser une seconde colonne.
Début du code XML :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
onLoad
=
"oldBackstage"
>
<backstage>
<tab
id
=
"tab1"
label
=
"Onglet Perso"
getTitle
=
"clbckgetTitle"
columnWidthPercent
=
"40"
>
<firstColumn>
Deux balises suivent celle-ci
VII-2-2-1. Groupe de contrôles (group)▲
Cette balise suit directement la balise <firstColumn>, elle permet de regrouper un ensemble de contrôles.
Suite du code :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
onLoad
=
"oldBackstage"
>
<backstage>
<tab
id
=
"tab1"
label
=
"Onglet Perso"
getTitle
=
"clbckgetTitle"
columnWidthPercent
=
"40"
>
<firstColumn>
<group
id
=
"group1"
>
Trois balises suivent la balise <group> :
VII-2-2-1-1. primaryItem▲
Définit un bouton ou un menu comme principal. Ne peut être déclaré qu'une seule fois.
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
onLoad
=
"oldBackstage"
>
<backstage>
<tab
id
=
"tab1"
label
=
"Onglet Perso"
getTitle
=
"clbckgetTitle"
columnWidthPercent
=
"40"
>
<firstColumn>
<group
id
=
"group1"
>
<primaryItem>
<button
id
=
"button1"
label
=
"Bouton Principal"
/>
</primaryItem>
<bottomItems>
<button
id
=
"button2"
label
=
"Bouton 2"
/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>
Voici le résultat :
les contrôles disponibles
Liste des contrôles que l'on peut ajouter :
- Bouton ;
- Menu ;
VII-2-2-1-2. topItem▲
Ne peut être défini qu'une seule fois et peut contenir tous les contrôles disponibles. Les contrôles sont placés en partie haute de la colonne.
Code XML :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
onLoad
=
"oldBackstage"
>
<backstage>
<tab
id
=
"tab1"
label
=
"Onglet Perso"
>
<firstColumn>
<group
id
=
"group1"
label
=
"Nom du Groupe"
>
<primaryItem>
<button
id
=
"button1"
label
=
"Bouton Principal"
/>
</primaryItem>
<topItems>
<button
id
=
"button2"
label
=
"Bouton 2"
/>
</topItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>
Voici le résultat :
les contrôles disponibles
Liste des contrôles que l'on peut ajouter :
Bouton | Case à cocher | Liste déroulante | Liste |
Zone de texte | Groupe | Lien Hypertexte | Image |
Étiquette | conteneur de disposition | Groupe d'options |
VII-2-2-1-3. bottomItems▲
Ne peut être défini qu'une seule fois et peut avoir un ou plusieurs contrôles.
Code XML :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
onLoad
=
"oldBackstage"
>
<backstage>
<tab
id
=
"tab1"
label
=
"Onglet Perso"
>
<firstColumn>
<group
id
=
"group1"
label
=
"Nom du Groupe"
>
<primaryItem>
<button
id
=
"button1"
label
=
"Bouton Principal"
/>
</primaryItem>
<topItems>
<button
id
=
"button2"
label
=
"Bouton 2"
/>
</topItems>
<bottomItems>
<button
id
=
"button3"
label
=
"Bouton 3"
/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>
Voici le résultat :
les contrôles disponibles
Liste des contrôles que l'on peut ajouter :
Bouton | Case à cocher | Liste déroulante | Liste |
Zone de texte | Groupe | Lien Hypertexte | Image |
Étiquette | conteneur de disposition | Groupe d'options |
VII-2-2-1-5. LayoutContainer▲
Zone regroupant des contrôles. On ne peut mettre cette balise qu'à l'intérieur des balises topItems et bottomItems.
Liste des contrôles que l'on peut ajouter :
Bouton | Case à cocher | Liste déroulante | Liste |
Zone de texte | Groupe | Lien Hypertexte | Image |
Étiquette | conteneur de disposition | Groupe d'options |
Liste des attributs disponibles pour ce contrôle :
VII-2-2-1-4. Attributs (Groupes de contrôles)▲
Liste des attributs disponibles pour ce contrôle.
VII-2-2-2. Groupe de tâches (taskGroup)▲
Cette balise <taskGroup> est un regroupement de tâches dans une colonne.
Celle-ci se positionne juste après les balises <firstColumn> et <secondColumn>.
<taskGroup
id
=
"taskGroup1"
label
=
"Catégorie 1"
>
Pour ajouter des tâches il faut définir une sous-balise <category>
VII-2-2-2-1. category (Groupe de tâches (taskGroup))▲
Sous-balise de <taskGroup >, elle permet de créer des catégories regroupant les tâches.
<category
id
=
"category1"
label
=
"Catégorie 1"
>
La balise <task> permet d'ajouter une tâche dans une catégorie.
Celle-ci est directement placée dans la catégorie dans la colonne où elle est définie.
<task
id
=
"task1"
label
=
"Tâche N° 1"
/>
Voici le résultat :
Liste des attributs disponibles pour ce contrôle.
Valeur | Callback |
idMso | |
id | |
idQ | |
visible | getVisible |
label | getLabel |
insertBeforeMso | |
insertBeforeQ | |
insertAfterMso | |
insertAfterQ |
VII-2-2-2-2. Attributs (Groupe de tâches)▲
Liste des attributs disponibles pour ce contrôle.
VII-2-2-3. Formulaire Groupement de tâches▲
Cette balise ne peut être définie qu'une seule fois et dans la première colonne (<firstColumn>), elle permet de regrouper un ensemble de catégories comprenant une ou plusieurs tâches. Dans ce cas la disposition est différente que précédemment. Ici la tâche peut recevoir un groupe de contrôles (group).
<taskFormGroup
id
=
"taskFormGroup1"
label
=
"Groupe de Tâches"
>
Nous allons dans cet exemple créer deux tâches avec un groupe de contrôles différents, la première
n'aura qu'un bouton et la seconde deux boutons.
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
>
<backstage>
<tab
id
=
"tab1"
label
=
"Onglet Perso"
>
<firstColumn>
<taskFormGroup
id
=
"taskFormGroup1"
label
=
"Formulaire de tâches"
>
<category
id
=
"category1"
label
=
"Première catégorie"
>
<task
id
=
"task1"
label
=
"Tâche 1"
>
<group
id
=
"group1"
label
=
"Groupe 1"
>
<bottomItems>
<button
id
=
"button1"
label
=
"Bouton"
/>
</bottomItems>
</group>
</task>
<task
id
=
"task2"
label
=
"Tâche 2"
>
<group
id
=
"group2"
label
=
"Groupe 2"
>
<bottomItems>
<button
id
=
"button2"
label
=
"Bouton 2"
/>
<button
id
=
"button3"
label
=
"Bouton 3"
/>
</bottomItems>
</group>
</task>
</category>
</taskFormGroup>
</firstColumn>
</tab>
</backstage>
</customUI>
La première tâche donne ceci :
La seconde tâche donne ceci :
VII-2-2-3-1. Attributs (Groupement de tâches)▲
Liste des attributs disponibles pour ce contrôle.
Valeur | Callback |
idMso | |
id | |
idQ | |
visible | getVisible |
label | getLabel |
getShowLabel | |
allowedTaskSizes | |
helperText | getHelperText |
VII-2-3. secondColumn▲
Comme son nom l'indique cette balise définit une seconde colonne. Celle-ci peut recevoir l'ensemble des sous-balises de <firstColumn> à l'exception des Formulaires de groupement de tâches.
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
>
<backstage>
<tab
id
=
"tab1"
label
=
"Onglet Perso"
>
<firstColumn>
<group
id
=
"group1"
label
=
"Groupe 1"
>
<bottomItems>
<button
id
=
"button1"
label
=
"Bouton 1"
/>
</bottomItems>
</group>
</firstColumn>
<secondColumn>
<group
id
=
"group2"
label
=
"Groupe 2"
>
<bottomItems>
<button
id
=
"button2"
label
=
"Bouton 2"
/>
</bottomItems>
</group>
</secondColumn>
</tab>
</backstage>
</customUI>
Je précisais un peu plus tôt qu'il n'était pas possible d'ajouter un Formulaire de tâches dans la
seconde colonne. Ceci n'est pas possible (je pense) pour une question de disposition à l'écran.
Démonstration en image.