Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Style de programmation : instanciation de classes d'un assembly externe

0000001926     -      08/01/2015

MercatorUi.Main permet d'instancier des classes provenant d'assemblies externes. Cela peut se faire pour 3 types de classes :

  • des classes standards : InstanciateExternalClass
  • des classes correspondant à une fenêtre non modale : ShowExternalForm
  • des classes correspondant à une fenêtre modale : ShowExternalModalForm

 

 


 

Instanciation de classes standards

 

Au départ de la partie FoxPro de Mercator, il est possible d'exécuter ce code :

 objet=ox_mercatorui.InstanciateExternalClass("Assembly.dll","EspaceDeNom.Classe")

 objet=ox_mercatorui.InstanciateExternalClass_2("Assembly.dll","EspaceDeNom.Classe", Param1)

 objet=ox_mercatorui.InstanciateExternalClass_3("Assembly.dll","EspaceDeNom.Classe", Param1, Param2)

... idem jusque 9 paramètres maximum.

Exemple :

Instanciation de la classe dans la partie FoxPro :

public ox_asterisk
ox_asterisk=ox_mercatorui.InstanciateExternalClass(_screen.pathonc+"MercatorAsterisk.dll","MercatorAsterisk.ClassAsterisk")

Appel d'une méthode de la classe dans la partie FoxPro :

ox_asterisk.RequestClose()

Appel d'une méthode dans la même instance de classe dans le code C# :

Zoom
void textBoxPhone_ButtonCustomClick( object sender, EventArgs e)
{
    MercatorUi.MovableControls. MovableTextBox textBox = (MercatorUi.MovableControls. MovableTextBox )sender;
     string no = Api .NumOnly(textBox.Text.Trim());
     if ((no != "" ) && MercatorUi. Globals .ExternalsObjects.ContainsKey( "MercatorAsterisk.ClassAsterisk" ))
    {
        MercatorAsterisk. ClassAsterisk classAsterisk = (MercatorAsterisk. ClassAsterisk )MercatorUi. Globals .ExternalsObjects[ "MercatorAsterisk.ClassAsterisk" ];
        classAsterisk.MakeCall(no);
    }
}

en ayant pris soin d'ajouter une référence vers MercatorAsterisk.dll dans le projet.

 


 

Instanciation de fenêtres non modales

Mercator permet d'instancier des fenêtres non modales (ou tout autre classe implémentant l'interface MercatorUi.Interfaces.IExternalForm).

La définition de cette interface est la suivante :

Zoom
public interface IExternalForm : IDisposable
{
     void Show(); 
     void Close();
}

Au départ de la partie FoxPro de Mercator, il est possible d'exécuter ce code :

ox_mercatorui.ShowExternalForm("Assembly.dll", "EspaceDeNom.Classe", "UniqueName")

ox_mercatorui.ShowExternalForm_2("Assembly.dll", "EspaceDeNom.Classe", "UniqueName", Param1)

ox_mercatorui.ShowExternalForm_3("Assembly.dll", "EspaceDeNom.Classe", "UniqueName", Param1, Param2)

... idem jusque 9 paramètres maximum.

UniqueName est une chaîne de caractères unique qui permet à Mercator de détecter si la fenêtre est déjà présente ou pas. Si elle est présente, alors elle ne sera pas instanciée une nouvelle fois mais simplement réactivée. Si cette chaîne de caractères est vide, alors la mécanique de détection d'instance déjà existante est désactivée et chaque appel de ShowExternalForm crée une nouvelle instance de la classe.

 


 

Instanciation de fenêtres modales

Mercator permet d'instancier des fenêtres modales (ou tout autre classe implémentant l'interface MercatorUi.Interfaces.IExternalModalForm).

La définition de cette interface est la suivante :

Zoom
public interface IExternalModalForm : IDisposable
{
    System.Windows.Forms. DialogResult ShowDialog();
    System.Windows.Forms. DialogResult ShowDialog(System.Windows.Forms. IWin32Window owner);
}

Au départ de la partie FoxPro de Mercator, il est possible d'exécuter ce code :

ox_mercatorui.ShowExternalModalForm("Assembly.dll", "EspaceDeNom.Classe")

ox_mercatorui.ShowExternalModalForm_2("Assembly.dll", "EspaceDeNom.Classe", Param1)

ox_mercatorui.ShowExternalModalForm_3("Assembly.dll", "EspaceDeNom.Classe", Param1, Param2)

... idem jusque 9 paramètres maximum.