Style de programmation : utilisation de la classe Main de MercatorUi

0000001924     -      27/03/2024

Dans Mercator, on peut profiter d'un grand nombre de variables globales correctement initialisées par Mercator. Cela se fait par l'intermédiaire de la classe MercatorUi.Main qui est initialisée au démarrage de Mercator.

mainglobals

La plupart des variables statiques disponibles portent un nom intelligible qui n'appelle à aucun commentaire. Certaines sont commentées ci-dessous :

  • CurrentUser : DataRow contenant tous les champs de table USER pour l'utilisateur actif
    Exemple : nom de l'utilisateur : MercatorUi.Globals.CurrentUser["NOM"].ToString()
  • ExternalGen : DataTable contenant le plan comptable d'une comptabilité autre que Mercator
  • ExternalAna : tableau (array) de 9 DataTables dont chaque élément reprend le plan analytique correspondant (contenant les comptes analytiques d'une comptabilité autre que Mercator). Si le plan n'est pas défini, l'élément correspondant dans le tableau est null. Le plan n° 1 correspond à l'élément n° 0 du tableau, le plan n° 2 correspond à l'élément n° 1 du tableau, ...
  • ExternalObjects : dictionnaire <string, object> contenant les instances de classes chargées par InstanciateExternalClass
  • iw : IWin32Window à passer comme paramètre à Show() ou ShowDialog()
  • Main : pointeur vers la classe MercatorUi.Main
  • ParamIdentif : dictionnaire <string,string> contenant toutes les entrées de "Outils / Identification"
  • ParamPos : dictionnaire <string,string> contenant toutes les entrées de ParamPos.dbf
  • Exemple : port du tiroir : MercatorUi.Globals.ParamPos["PORT_TIR"]
  • Params  : dictionnaire <string,string> contenant toutes les entrées de la table OPTIONS 
    Exemple : option "Reliquats sur ventes" : MercatorUi.Globals.ParamPos["X_BO_V"]

Comme indiqué ci-dessus, Main.Globals contient un Tunnel correctement initialisé par Mercator. Cela dispense donc de devoir activer cette mécanique pour chaque assembly. Cela offre une meilleure gestion de la mémoire et simplifie de façon importante la mise en place d'assemblies.

Les variables globales sont initialisées lors du démarrage de Mercator. Leur valeur est ensuite maintenue constamment à jour par Mercator. Par exemple :

  • lors d'un changement d'utilisateur : CurrentUser, Langue,  DateDMY, UserId, ... sont bien mis à jour
  • après l'édition des options : les valeurs du dictionnaire Params sont adaptées
  • après l'édition du matériel caisse : les valeurs du dictionnaire ParamPos sont adaptées
  • ...

Remarques :

  • Il est nécessaire d'ajouter une référence vers MercatorUi.dll dans votre projet.
  • Si votre classe n'est pas instanciée par Mercator (projet totalement indépendant de Mercator), ces variables globales disposeront simplement d'une valeur par défaut, qui ne sera bien entendu jamais mise à jour. (En conséquence, ces variables globales ne sont donc pas utilisables par exemple dans un projet ASP.net).