Procédure : Utiliser du code géré pour ajouter une commande personnalisée au ruban (traduction automatique)

Dernière modification : jeudi 1 juillet 2010

S’applique à : Office 2010 | Project 2010 | Project Server 2010 | SharePoint Server 2010

Important

Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Cet article montre comment ajouter par programmation un onglet et une commande personnalisés à l’interface utilisateur Fluent (le ruban) dans Microsoft Project 2010 à l’aide d’un complément de code managé développé avec Outils de développement Microsoft Office dans Microsoft Visual Studio 2010. Le bouton personnalisé appelle une méthode du complément qui change la couleur de la cellule Nom de la tâche des tâches planifiées manuellement. Cet article vous permet de comparer le code Microsoft Visual Basic et le code Microsoft Visual C# dans une solution simple qui modifie le ruban Project 2010.

La solution RibbonAddIn dans cet article effectue le même travail que la macro est décrite dans Procédure : Utiliser VBA pour ajouter une commande personnalisée au ruban (traduction automatique). Le code de macro complémentaire peut être comparé directement avec le Microsoft code Visual Basic pour Applications (VBA) dans cet article. La bibliothèque de Microsoft.Office.Interop.MSProject de code managé pour Project 2010 duplique les objets et les membres de la bibliothèque de MSProject dans VBA. Il y a offre de nombreux avantages à l'aide du code managé dans un complément au lieu d'une macro VBA, dont certaines sont décrites dans la partie introductive de Procédure pas à pas : Création d’un complément de code managé pour vérifier la compatibilité PWA (traduction automatique). Un grand avantage dans Visual Studio 2010, par rapport aux versions précédentes, est que vous pouvez utiliser les paramètres nommés et des paramètres facultatifs dans Visual c# comme dans Visual Basic.

Le Concepteur de ruban dans Visual Studio offre un avantage lors de la modification du ruban Project 2010 car elle permet de faire glisser des éléments communs de ruban à partir de la boîte à outils à un affichage de conception, au lieu de l'utilisation de XML. Vous pouvez également utiliser XML pour modifier le ruban, et il est beaucoup plus facile de modifier le langage XML dans Visual Studio que dans VBA. Pour plus d'informations, consultez Ribbon Overview.

Un complément est facile à déployer à l'aide de ClickOnce pour enregistrer les fichiers d'installation dans un référentiel central. Le développeur peut spécifier la fréquence à laquelle le complément vérifie le référentiel pour les mises à jour. Installation peut également automatiquement rechercher et installer les composants requis.

Notes

Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Procédure 1. Pour créer un projet de complément pour le ruban

  1. Exécutez Visual Studio 2010 en tant qu'administrateur et puis créer un projet de complément Project 2010. Par exemple, nommez le projet RibbonAddIn. La figure 1 illustre la création du projet avec le modèle Visual Basic. Vous pouvez également utiliser Visual c#.

    La figure 1. Création d'un complément projet 2010 avec le modèle de Visual Basic

    Création d'un complément Project 2010 pour Visual Basic

  2. Dans le menu déroulant en haut de la boîte de dialogue Nouveau projet , sélectionnez .NET Framework 3.5. Désactivez la case à cocher créer le répertoire pour la solution et puis cliquez sur OK.

Visual Studio crée le projet RibbonAddIn avec le fichier ThisAddIn.vb (ou ThisAddIn.cs), qui comprend des gestionnaires d'événements ThisAddIn_Startup et ThisAddIn_Shutdown. Pour un contrôle simple ruban qui n'implique pas les événements de niveau application ou au niveau du document, les gestionnaires d'événements de démarrage et d'arrêt est inutile de modifications. La procédure 2 montre comment ajouter un composant de concepteur visuel pour le ruban.

Procédure 2. Pour modifier le ruban à l'aide du concepteur visuel

  1. Dans l' Explorateur de solutions, cliquez droit sur le projet RibbonAddIn et ensuite ajouter un nouvel élément. Dans la boîte de dialogue Ajouter un nouvel élément , cliquez sur ruban (concepteur visuel). Par exemple, nommez la classe ManualTaskColor.

  2. Dans les Boîte à outils, développez l'onglet Contrôles du ruban Office et puis faites glisser un contrôle Tab au ruban ManualTaskColor en mode Création.

    Notes

    Si vous utilisez l'onglet TabAddIns (intégrée) en mode Création, les contrôles du ruban que vous ajoutez apparaîtra dans l'onglet Compléments dans le ruban Project 2010.

    Pour ajouter un groupe ou un contrôle à un onglet existant, cliquez sur l'onglet TabAddIns (intégrée) en mode Création, développez la propriété ControlId et puis modifiez la propriété OfficeId pour le nom de l'onglet. Par exemple, pour utiliser l'onglet Affichage , modifiez la propriété OfficeId à TabView. Pour télécharger une liste des codes de contrôle de ruban de contrôles intégrés, consultez fichiers d'aide Office 2010 : identificateurs de contrôle d'Interface Office Fluent utilisateur (éventuellement en anglais).

  3. Sélectionnez le contrôle tab1 en mode Création et ouvrez le volet des Propriétés . Par exemple, nommez l'onglet tabHighlight, qui devient également le nom de la propriété ControlId . Modifiez la propriété Étiquette pour mettre en surbrillance.

  4. Faites glisser un contrôle de Groupe dans la Boîte à outils vers l'onglet Surlignage en mode Création. Dans le volet des Propriétés du contrôle group1 , par exemple, remplacez le nom du groupe rGroupManualTasket modifiez la propriété Étiquette pour mettre en surbrillance.

  5. Faites glisser un contrôle ToggleButton (ou vous pouvez utiliser un contrôle bouton ) dans la Boîte à outils pour le groupe de Surlignage en mode Création.

  6. Sélectionnez le contrôle toggleButton1 en mode Création, puis modifiez les propriétés suivantes :

    1. Remplacez la propriété (Name) par tBtnManualTaskColor.

    2. Modifiez la propriété Activé pour True. Lorsque le complément s'exécute, l'état du bouton bascule est sur (c'est-à-dire, le bouton est mis en surbrillance dans le ruban).

    3. Modifiez la propriété Étiquette à la Couleur des tâches bascule manuelle.

    4. Pour afficher la même image montre l'exemple VBA, tapez DiagramTargetInsertClassic pour la propriété OfficeImageId .

La figure 2 illustre le mode Création pour le ruban avec réalisées Surlignage un onglet, Surlignage le groupe et bouton Bascule manuel tâche couleur .

La figure 2. En utilisant le mode Design pour modifier le ruban projet 2010

Utilisation de l’affichage Conception du Ruban dans Visual Studio

Visual Studio affiche une icône générique pour le bouton lorsque vous spécifiez la propriété OfficeImageId . Au lieu d'utiliser une icône intégrée, vous pouvez créer une image et l'utiliser pour la propriété Image . De nombreuses icônes sont également disponibles dans le 2007 Office System Add-In : galerie d'icônes et dans le complément Office 2010 : galerie d'icônes.

Pour plus d'informations sur l'utilisation de Visual Studio 2010 pour modifier l'interface utilisateur des applications Microsoft Office, consultez Office UI Customization.

Conseil

Comme indiqué dans Procédure : Utiliser VBA pour ajouter une commande personnalisée au ruban (traduction automatique), vous trouverez une valeur valide pour la propriété OfficeImageId en modifiant temporairement le ruban dans la boîte de dialogue Options de Project :

  1. Project 2010, cliquez sur l'onglet Personnaliser le Ruban de la boîte de dialogue Options de Project .

  2. Ajoutez un bouton à l'un des groupes existants dans le ruban et ensuite définir l'icône de la commande à partir de la sélection des icônes disponibles.

  3. Pour exporter le fichier ProjectCustomizations.exportedUI la modification du ruban, cliquez sur Importer/Exporteret puis cliquez sur Exporter toutes les personnalisations. Le nom de l'icône est la valeur de l'attribut imageMso de l'élément mso:button.

Procédure 3 montre comment créer le Gestionnaire d'événements de bouton Click et le code qui s'exécute lorsque vous cliquez sur le bouton de Couleur des tâches bascule manuelle .

Procédure 3. Pour créer le code pour le bouton, cliquez sur événement

  1. Dans le ruban en mode Création, cliquez sur le bouton de Couleur des tâches bascule manuelle pour le sélectionner. Dans le volet Propriétés , cliquez sur l'icône Événements pour afficher les événements qui sont disponibles pour le contrôle du ruban (le contrôle ToggleButton possède uniquement l'événement Click).

  2. Dans le volet Propriétés , double-cliquez sur l'événement Click pour créer le Gestionnaire d'événements tBtnManualTaskColor_Click. Visual Studio ouvre le fichier ManualTaskColor.vb (ou le fichier ManualTaskColor.cs) dans le code de gestionnaire d'événements.

  3. Ajoutez les options et les références de l'espace de noms dans le fichier de code ManualTaskColor, comme suit :

    Option Explicit On
    
    Imports Microsoft.Office.Tools.Ribbon
    Imports MSProject = Microsoft.Office.Interop.MSProject
    
    using System;
    using Microsoft.Office.Tools.Ribbon;
    using MSProject = Microsoft.Office.Interop.MSProject;
    
  4. Ajoutez les variables et constantes de classe ManualTaskColor. L'objet app peut être instancié dans le Gestionnaire d'événements ManualTaskColor_Load, qui est appelé lorsque le projet commence à s'exécuter. La classe Globals fournit l'accès à l'objet Application pour le complément.

    Public Class ManualTaskColor
    
        Private Const WHITE As Integer = &HFFFFFF
        Private Const LIGHT_BLUE As Integer = &HF0D9C6
    
        Dim app As MSProject.Application
        Dim project As MSProject.Project
    
        Private Sub ManualTaskColor_Load(ByVal sender As System.Object,
                        ByVal e As RibbonUIEventArgs) _
                        Handles MyBase.Load
            app = Globals.ThisAddIn.Application
        End Sub
        ' . . .
    
    namespace RibbonAddIn
    {
        public partial class ManualTaskColor
        {
            private const int WHITE = 0xFFFFFF;
            private const int LIGHT_BLUE = 0xF0D9C6;
    
            MSProject.Application app;
            MSProject.Project project;
    
            private void ManualTaskColor_Load(object sender, 
                RibbonUIEventArgs e)
            {
                app = Globals.ThisAddIn.Application;
            }
            // . . .
    

    Les constantes sont des couleurs 24 bits qui peuvent être spécifiés par les valeurs hexadécimales. Project 2010 comprend des méthodes telles que Font32Ex, où les couleurs sont spécifiées par les valeurs RVB.

    Notes

    Les couleurs hexadécimales dans Project 2010 sont exprimés dans l'ordre de B-G-r. Par exemple, & HFF0000 (ou 0xFF0000 dans Visual c#) est bleu pur. Vous pouvez utiliser l'équivalent décimal ; par exemple, 15784390 est la même valeur bleu clair comme & HF0D9C6, mais il est plus facile de déterminer la couleur lorsque vous utilisez des valeurs hexadécimales.

  5. Créez la méthode ToggleManualTasksColor et appelez la méthode de gestionnaire d'événements de bouton Click. L'objet project peut être initialisée qu'après qu'un projet est ouvert et activé, ce qui se produit après que le complément est chargé. Si vous essayez d'initialiser project dans le Gestionnaire d'événements ManualTaskColor_Load, le complément fournit une exception, car il n'existe encore aucun projet actif.

    Private Sub tBtnManualTaskColor_Click(ByVal sender As System.Object, _
                    ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
                    Handles tBtnManualTaskColor.Click
        ToggleManualTasksColor()
    End Sub
    
    Sub ToggleManualTasksColor()
        Dim column As String = "Name"
        Dim rowRelative As Boolean = False
        Dim rgbColor As Integer
    
        project = app.ActiveProject
    
        For Each t As MSProject.Task In project.Tasks
            If (Not t Is Nothing) And (Not t.Summary) Then
                app.SelectTaskField(t.ID, column, rowRelative)
                rgbColor = app.ActiveCell.CellColorEx
    
                If (t.Manual) Then
                    ' Check whether the manual task color is white.
                    If (rgbColor = WHITE) Then
                        ' Change the background to light blue.
                        app.Font32Ex(CellColor:=LIGHT_BLUE)
                    Else
                        ' Change the background to white.
                        app.Font32Ex(CellColor:=WHITE)
                    End If
                Else
                    ' The task is automatically scheduled, 
                    ' so change the background to white.
                    app.Font32Ex(CellColor:=WHITE)
                End If
            End If
        Next
    End Sub
    
    private void tBtnManualTaskColor_Click(object sender, 
        RibbonControlEventArgs e)
    {
        ToggleManualTasksColor();
    }
    
    private void ToggleManualTasksColor()
    {
        string column = "Name";
        bool rowRelative = false;
        int rgbColor;
    
        project = app.ActiveProject;
    
        foreach (MSProject.Task t in project.Tasks)
        {
            if ((t != null) && !(bool)t.Summary)
            {
                app.SelectTaskField(t.ID, column, rowRelative);
                rgbColor = app.ActiveCell.CellColorEx;
    
                if ((bool)t.Manual)
                {
                    // Check whether the manual task color is white.
                    if (rgbColor == WHITE)
                    {
                        // Change the background to light blue.
                        app.Font32Ex(CellColor:LIGHT_BLUE); 
                    }
                    else
                    {
                        // Change the background to white.
                        app.Font32Ex(CellColor:WHITE); 
                    }
                }
                else
                {
                    // The task is automatically scheduled, 
                    // so change the background to white.
                    app.Font32Ex(CellColor:WHITE); 
                }
            }
        }
    }
    
  6. Pour tester et déboguer le complément Visual Studio, appuyez sur F5. Par exemple, ajouter certaines tâches au projet, sélectionnez l'onglet Surlignage dans le ruban, puis cliquez sur Couleur des tâches bascule manuel deux fois (Figure 3). Si vous définissez un point d'arrêt sur l'instruction qui définit rgbColor, le débogueur indique que app.ActiveCell.CellColorEx = 16777215 pour une tâche qui a une couleur d'arrière-plan blanc.

    Notes

    Si l'application du projet est ouverte, fermez-le avant d'exécuter le complément Visual Studio. Visual Studio crée un fichier de clé temporaire de nom fort pour signer l'assembly et puis démarre l'application du projet avec le complément.

    Si votre fichier Global.mpt ou un fichier .mpp que vous ouvrez le Gestionnaire d'événements Project_Open ou le Gestionnaire d'événements Project_Activate décrite dans Procédure : Utiliser VBA pour ajouter une commande personnalisée au ruban (traduction automatique), commenter les ou supprimer le Gestionnaire d'événements VBA avant d'exécuter le complément ManualTaskColor.

La variable rgbColor est déclarée comme type Integer, qui, dans Microsoft.NET Framework peut contenir jusqu'à une valeur de 32 bits. Dans VBA, rgbColor doit être déclaré comme type de Long. Pour un tableau comparant VBA et.NET Framework, consultez Modifications des tables du modèle objet VBA (traduction automatique).

Certaines propriétés, telles que la propriété Manual et la propriété de Summary d'un Task, sont déclarées avec le type de Object dans la bibliothèque Microsoft.Office.Interop.MSProject. Dans Visual c#, vous devez effectuer un cast des propriétés du type spécifique. Dans Visual Basic, le cast n'est pas nécessaire. Par exemple, l'instruction If (t.Manual) dans Visual Basic doit être if ((bool)t.Manual)in Visual c#. Vous pouvez utiliser Microsoft Intellisense ou l'Explorateur d'objets dans Visual Studio pour trouver les propriétés qui sont de type Object.

Visual Studio 2010 vous permet d'utiliser les paramètres facultatifs et les paramètres nommés dans Visual c#, dans la même manière que Visual Basic. Par exemple, même si la méthode SelectTaskField a six paramètres optionnels, la app.SelectTaskField(t.ID, column, rowRelative) d'instruction de Visual Basic peut être exprimée la même manière qu'elle est dans Visual c# (avec un point-virgule pour la fin de l'instruction). La méthode Font32Ex a des paramètres de dix. Vous pouvez spécifier le paramètre huitième, par exemple, à l'aide de l'instruction app.Font32Ex(CellColor:=LIGHT_BLUE) dans Visual Basic. Dans Visual c#, vous pouvez utiliser l'instruction app.Font32Ex(CellColor:LIGHT_BLUE);.

La figure 3 montre que le complément ManualTaskColor fonctionne exactement comme la macro VBA ToggleManualTasksColor décrite dans Procédure : Utiliser VBA pour ajouter une commande personnalisée au ruban (traduction automatique).

La figure 3. À l'aide de la macro complémentaire ManualTaskColor

Utilisation de la commande de ruban personnalisée

Lorsque le complément fonctionne correctement, vous pouvez utiliser la procédure 4 pour publier le complément afin que d'autres peuvent l'installer facilement.

Procédure 4. Pour publier le complément ManualTaskColor

  1. Dans l' Explorateur de solutions, cliquez droit sur le projet RibbonAddIn et puis cliquez sur Propriétés.

  2. Dans l'onglet RibbonAddIn , cliquez sur l'onglet Signature et assurez-vous que la case à cocher Signer l’assembly est sélectionnée.

  3. Utilisez la liste déroulante Choisir un fichier de clé de nom fort pour créer un nouveau fichier de clé. Par exemple, créer des RibbonAddIn.snk. Vous pouvez choisir si vous voulez protéger le fichier de clé avec un mot de passe. Vous pouvez supprimer le fichier de clé de nom fort temporaire créé au cours des tests de Visual Studio.

  4. Cliquez sur l'onglet Publier et examinez les options des Paramètres d'installation et l' Emplacement de publication . Par défaut, le complément est publié dans le sous-répertoire publish\ du répertoire du projet de Visual Studio. Par exemple, si le projet C:\VSTO_Projects\RibbonAddIn, le répertoire de publication est C:\VSTO_Projects\RibbonAddIn\publish. Vous pouvez également publier un partage de fichiers, à l'URL d'une liste de documents SharePoint ou à un autre site Web ou un serveur ftp.

    Cliquez sur les conditions préalables pour voir quels composants requis, le programme d'installation vérifie et installe. Par défaut, le programme d'installation vérifie le.NET Framework 3.5 SP1 et Windows Installer 3.1 et, si nécessaire, les téléchargements à partir de Microsoft Centre de téléchargement.

    Cliquez sur Mises à jour pour spécifier quand le complément vérifie les mises à jour. Par défaut, le complément vérifie l'emplacement de publication tous les sept jours. S'il existe une version plus récente, avertit l'utilisateur d'effectuer une mise à jour du complément.

  5. Cliquez sur Publier maintenant. Exécutez setup.exe sur un autre ordinateur a Project 2010 pour tester le complément publié.

Pour le déploiement d'une personnalisation Project 2010, la publication d'un complément à l'aide de ClickOnce est une bien meilleure solution que la copie de macros VBA dans le fichier Global.mpt sur d'autres ordinateurs.

Exemple

Voici le code complet dans le fichier ManualTaskColor.vb pour la solution Visual Basic et le fichier ManualTaskColor.cs pour la solution Visual c#.

Option Explicit On

Imports Microsoft.Office.Tools.Ribbon
Imports MSProject = Microsoft.Office.Interop.MSProject

' Toggle the background color of the Name cell of manually scheduled tasks.
' If a manually scheduled task is changed to automatically 
' scheduled, change the Name cell background color to white.
Public Class ManualTaskColor

    Private Const WHITE As Integer = &HFFFFFF
    Private Const LIGHT_BLUE As Integer = &HF0D9C6

    Dim app As MSProject.Application
    Dim project As MSProject.Project

    Private Sub ManualTaskColor_Load(ByVal sender As System.Object,
                    ByVal e As RibbonUIEventArgs) _
                    Handles MyBase.Load
        app = Globals.ThisAddIn.Application
    End Sub

    Private Sub tBtnManualTaskColor_Click(ByVal sender As System.Object, _
                    ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
                    Handles tBtnManualTaskColor.Click
        ToggleManualTasksColor()
    End Sub

    Sub ToggleManualTasksColor()
        Dim column As String = "Name"
        Dim rowRelative As Boolean = False
        Dim rgbColor As Integer

        project = app.ActiveProject

        For Each t As MSProject.Task In project.Tasks
            If (Not t Is Nothing) And (Not t.Summary) Then
                app.SelectTaskField(t.ID, column, rowRelative)
                rgbColor = app.ActiveCell.CellColorEx

                If (t.Manual) Then
                    ' Check whether the manual task color is white.
                    If (rgbColor = WHITE) Then
                        ' Change the background to light blue.
                        app.Font32Ex(CellColor:=LIGHT_BLUE)
                    Else
                        ' Change the background to white.
                        app.Font32Ex(CellColor:=WHITE)
                    End If
                Else
                    ' The task is automatically scheduled, 
                    ' so change the background to white.
                    app.Font32Ex(CellColor:=WHITE)
                End If
            End If
        Next
    End Sub
End Class
using System;
using Microsoft.Office.Tools.Ribbon;
using MSProject = Microsoft.Office.Interop.MSProject;

namespace RibbonAddIn
{
    // Toggle the background color of the Name cell of manually scheduled tasks.
    // If a manually scheduled task is changed to automatically 
    // scheduled, change the Name cell background color to white.
    public partial class ManualTaskColor
    {
        private const int WHITE = 0xFFFFFF;
        private const int LIGHT_BLUE = 0xF0D9C6;

        MSProject.Application app;
        MSProject.Project project;

        private void ManualTaskColor_Load(object sender, 
            RibbonUIEventArgs e)
        {
            app = Globals.ThisAddIn.Application;
        }

        private void tBtnManualTaskColor_Click(object sender, 
            RibbonControlEventArgs e)
        {
            ToggleManualTasksColor();
        }

        private void ToggleManualTasksColor()
        {
            project = app.ActiveProject;
            string column = "Name";
            bool rowRelative = false;
            int rgbColor;
            
            foreach (MSProject.Task t in project.Tasks)
            {
                if ((t != null) && !(bool)t.Summary)
                {
                    app.SelectTaskField(t.ID, column, rowRelative);
                    rgbColor = app.ActiveCell.CellColorEx;

                    if ((bool)t.Manual)
                    {
                        // Check whether the manual task color is white.
                        if (rgbColor == WHITE)
                        {
                            // Change the background to light blue.
                            app.Font32Ex(CellColor:LIGHT_BLUE); 
                        }
                        else
                        {
                            // Change the background to white.
                            app.Font32Ex(CellColor:WHITE); 
                        }
                    }
                    else
                    {
                        // The task is automatically scheduled, 
                        // so change the background to white.
                        app.Font32Ex(CellColor:WHITE); 
                    }
                }
            }
        }
    }
}

Voir aussi

Tâches

Procédure : Utiliser VBA pour ajouter une commande personnalisée au ruban (traduction automatique)

Procédure pas à pas : Création d’un complément de code managé pour vérifier la compatibilité PWA (traduction automatique)

Référence

Modifications des tables du modèle objet VBA (traduction automatique)

Autres ressources

Office UI Customization

Project Solutions

Ribbon Overview

fichiers d'aide 2010 Office : Office Fluent identificateurs de contrôle d'Interface utilisateur (éventuellement en anglais)

du complément Office System 2007 : galerie d'icônes

complément Office 2010 : galerie d'icônes