Paramétrage d'onglets personnalisés dans le ruban de Mercator

0000001812     -      14/10/2016

Mercator permet d'ajouter des onglets supplémentaires à droite des onglets standards "Gestion commerciale", "Comptabilité", "C.R.M.", dans le ruban de Mercator. Ces onglets doivent être réalisés via une programmation en .net et donc matérialisés dans des assemblies. Un onglet supplémentaire doit correspondre à une classe dont le type de base est Mercator.RibbonCustomContainer, dont la définition est présente dans Mercator.exe. Cette classe contient notamment les outils nécessaires pour une communication bi-directionnelle avec Mercator.

Les exemples sont donnés ici en C#, mais tout autre language .net pourra aussi être utilisé.


1. Création d'un assembly contenant un ou plusieurs onglets personnalisés

Il convient d'utiliser une version de Visual Studio et d'initialiser un nouveau projet de type "Windows Control Library". Dans ce projet, il faut ajouter une référence vers Mercator.exe.

Ensuite, il faut modifier le code autogénéré dans la classe de base (typiquement UserControl1.cs) et remplacer

public partial class UserControl1 : UserControl

par

public partial class UserControl1 : Mercator.RibbonCustomContainer

Ensuite, l'onglet peut être construit de façon tout à fait libre, notamment en déposant des contrôles (boutons, labels, images, ...) sur l'espace correspondant au userControl.

La classe Mercator.RibbonCustomContainer contient ces propriétés :

  • IdUser (read-only) : identifiant de l'utilisateur actif dans Mercator
  • Language (read-only) : la langue de l'utilisateur actif dans Mercator
  • PanelText (read-write) : le titre de l'onglet -> à compléter obligatoirement pour donner un titre à l'onglet
  • RepData (read-only) : le répertoire data de Mercator. (Ceci permet l'utilisation directe de Zselect)
  • TypeDb (read-only) : le type de base de données DBF ou SQL

La classe Mercator.RibbonCustomContainer contient cette méthode :

  • DoCmd : possibilité de passer n'importe quel script à exécuter dans la partie Visual FoxPro de Mercator. Exemple : DoCmd("stop('Hello')");

La classe Mercator.RibbonCustomContainer permet de répondre à ces évènements :

  • RibbonCustomCreated : la création de l'onglet personnalisé est terminée
  • RibbonCustomDestroy : l'onglet va être détruit. (Idéal pour relâcher les ressources utilisées par l'onglet)
  • RibbonCustomMessage : réception d'un message (chaîne de caractères) envoyé par la partie Visual FoxPro de Mercator (voir la procédure yMessageToCustomribbon)

Ces différents exemples montre la réalisation de différents onglets personnalisés :

Remarques :

  • La hauteur de votre onglet doit idéalement être de 59 pixels.
     
  • yMessageToCustomribbon envoie la chaîne de message à tous les onglets personnalisés. Cette chaîne est disponible dans la propriété RibbonCustomMessage de Mercator.RibbonCustomMessageArgs. Vous devrez écrire un parsing de cette chaîne de caractères si vous souhaitez qu'elle soit en définitive traitée effectivement par un seul onglet. Par exemple :

    private void MyUserControl1_RibbonCustomMessage(object sender, Mercator.RibbonCustomMessageArgs e)

               string msg = e.RibbonCustomMessage; 
               if ((msg.Length > 3) && (msg.Substring(0, 3) == "001")) 
               { 
                          // traitement du message 
                          ...
               }
    }

 


 

2. Installation des onglets supplémentaires

Pour installer un onglet, il est conseillé (mais pas obligatoire) de déposer les DLL correspondant aux assemblies créées au point 1, dans le répertoire principal de Mercator. Ensuite, l'installation se fait pour l'utilisateur en cours, via le menu "Ruban / Personnaliser / Personnalisés" (ceci pour paramétrer les onglets personnalisés). Dans la boîte de dialogue qui se présente, il suffit de tirer par drag & drop, dans la partie bleue, une ou plusieurs assemblies. De la sorte, les assemblies s'installent dans cet écran. Par défaut, l'installation est faite en reprenant la première classe trouvée dans l'assembly. Si un même assembly contient plusieurs classes d'onglets, on peut changer de classe en cliquant d'abord sur la flèche à droite et ensuite en sélectionnant dans le déroulant la classe souhaitée.

Notez que si un assembly ne contient aucune classe de type Mercator.RibbonCustomContainer, alors celui-ci ne s'installe pas.

Pour retirer un assembly de la liste, il suffit de cliquer sur la flèche à droite et ensuite de sélectionner dans le déroulant "Supprimer".

L'ordre des assemblies peut être modifié par simple déplacement des lignes. C'est bien l'ordre des lignes qui déterminera l'ordre des onglets.

 


 

Remarques :

  • Il n'y a (et il n'y aura) aucune possibilité d'agir par ce moyen sur les onglets standards de Mercator "Gestion commerciale", "Comptabilité", "C.R.M.".
     
  • Les onglets personnalisés sont bien pris en compte lors de la sauvegarde du paramétrage d'onglets à partir de l'onglet "Ruban" de la fiche "Utilisateur".