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

Inclure un bouton dans un textbox d'un signalétique

0000001910     -      29/10/2013

Cet exemple montre comment inclure un bouton dans un textbox de signalétique.

textbox_button

Pour réaliser cela, il faut atteindre les propriétés du textbox. Cela peut se faire en implémentant une interface MercatorUi.ICustomizers.IFormLoadCustomizer. Comme un nouvel évènement est créé dans une fenêtre de signalétique, à partir d'un objet (le customizer) dont la durée de vie est plus longue que celle de la fenêtre de signalétique, nous sommes obligés d'implémenter MercatorUi.ICustomizers.IFormClosedCustomizer pour y supprimer la souscription à l'évènement ButtonCustomClick.

Cela peut se faire simplement par le code suivant :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using MercatorUi;
using MercatorApi;

namespace SigCli
{
     public class Customizer : MercatorUi.ICustomizers. IFormLoadCustomizer , MercatorUi.ICustomizers. IFormClosedCustomizer
    {
         public void FormLoadCustomize( Form form)
        {
            MercatorUi.Forms.Sig. SigForm sigForm = (MercatorUi.Forms.Sig. SigForm )form;

            MercatorUi.MovableControls. MovableTextBox textExp = (MercatorUi.MovableControls. MovableTextBox )sigForm.MovableControls[ "O37F122SIU" ];
            textExp.ButtonCustom.Visible = true ;
            textExp.ButtonCustomClick += new EventHandler (textExp_ButtonCustomClick);
        }

         public void FormClosedCustomize( Form form)
        {
            MercatorUi.Forms.Sig. SigForm sigForm = (MercatorUi.Forms.Sig. SigForm )form;

            MercatorUi.MovableControls. MovableTextBox textExp = (MercatorUi.MovableControls. MovableTextBox )sigForm.MovableControls[ "O37F122SIU" ];
            textExp.ButtonCustomClick -= new EventHandler (textExp_ButtonCustomClick);
        }

         void textExp_ButtonCustomClick( object sender, EventArgs e)
        {
            MercatorUi.MovableControls. MovableTextBox textBox = (MercatorUi.MovableControls. MovableTextBox )sender;
            MercatorUi. Dialogs .Stop(textBox.Text);
        }
    }
}

Notez dans ce code :

  • Le paramètre form reçu est de type standard System.Windows.Forms.Form. Il faut donc effectuer un cast vers le type spécifique MercatorUi.Forms.Sig.SigForm. C'est la raison de la première ligne.

  • Dans une SigForm, on dispose d'un dictionnaire MovableControls qui reprend tous les contrôles ajoutés par l'utilisateur sur l'écran du signalétique. Il est aisé d'y localiser le textbox souhaité par son ID. Dans cet exemple, l'ID vaut "O37F122SIU". Cette information peut être facilement copiée à partir des propriétés du textbox en question, en mode paramétrage de signalétique.

  • Si on souhaite placer une image dans le bouton, il suffit de la placer dans le répertoire principal de Mercator et d'insérer ce code, par exemple avant la ligne contenant Visible = true  :
Zoom
System.Drawing. Image imgPhone = System.Drawing. Image .FromFile(MercatorUi. Globals .MainDir + "tinyphone.png" );
textExp.ButtonCustom.Image = imgPhone;