Dans un écran d'encodage de document, positionner le focus sur un champ au choix après validation

0000002318     -      15/01/2025

Cette programmation montre comment exécuter du code dans l'évèvement BeforeSave pour placer le curseur sur un champ précis. L'exemple est donné pour une validation refusée du champ REFERENCE dans un document de la gestion commerciale et permet de positionner le focus sur ce champ.

Le test pour l'exemple est que le champ REFERENCE doit contenir la caractère *.

 Si le test consiste seulement à vérifier que la zone est non vide, il faut utiliser les propriétés DeptMandatory ou NiveauMandatory.

Le code s'établit comme suit :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;

// <CompileWithRoslyn />

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeSave += BillingEngine_BeforeSave;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeSave -= BillingEngine_BeforeSave;
        }

        void BillingEngine_BeforeSave(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            MercatorUi.MovableControls.MovableTextBox textBoxReference = billingEngine.BillingForm?.MovableControls.Values.OfType<MercatorUi.MovableControls.MovableTextBox>().FirstOrDefault(c => c.Source == "REFERENCE");
            if ((textBoxReference != null) && !billingEngine.PiedsVRecord.REFERENCE.Contains("*"))
            {
                Dialogs.Stop("La zone \"Référence\" doit contenir le caractère * !");
                e.CancelSave = true;
                _Divers.FocusError(textBoxReference);
            }
        }
    }
}


Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)