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

Placer un validateur pour vérifier qu'une zone de signalétique n'est pas vide

0000002884     -      28/11/2018

Le code illustré ici montre comment placer un validateur comparable à ceux placés par Mercator (n° de TVA, comptes bancaires, ...). Il requiert un voucher 10.4 ou ultérieur. L'exemple est donné pour le signalétique des clients, sur la zone "Pays", mais peut s'appliquer à tout écran utilisant des MovableTextBox (BillingForm, BookingForm, ActionForm, ...)

Le principe de ce code est d'instancier un MercatorUi.Validators.ControlValidator en passant à son constructeur les paramètres suivants :

  • le contrôle qui doit être validé
  • le message à afficher dans le tooltip en cas d'erreur
  • le délégué qui va contenir le code qui, in fine, va déterminer si IsValid est à true ou à false.

Le principe de cette programmation peut bien entendu être utilisé pour tout type de contrôle. Il suffit pour cela de placer le code personnalisé adéquat dans le délégué passé en tant que 3ème paramètre au constructeur de ControlValidator.

Le code s'établit comme suit :

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

namespace SigCli
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer
    {
        public void FormLoadCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            foreach(var textBoxPays in sigForm.MovableControls.Values.OfType<MercatorUi.MovableControls.MovableTextBox>().Where(c => c.Source == "C_PAYS"))
            {
                textBoxPays.Validator = new MercatorUi.Validators.ControlValidator(
                    textBoxPays,
                    "Le pays ne peut être vide !",
                    (s, e) =>
                        {
                            e.IsValid = !string.IsNullOrWhiteSpace(textBoxPays.Text);
                        }
                    );
            }
        }
    }
}