Deze programmering toont hoe men de code moet uitvoeren in het BeforeSave gebeurtenis om de cursor op een specifiek veld te plaatsen. Het voorbeeld is een geweigerde validatie in het REFERENCE veld van een document van het commercieel beheer en plaatst de focus op dit gebied.
De test voor het voorbeeld is dat het veld REFERENCE het teken * moet bevatten.
Als de test alleen bedoeld is om te verifiëren dat het veld niet leeg is, moeten de eigenschappen DeptMandatory of NiveauMandatory worden gebruikt.
De code vestigt zich als volgt:
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);
}
}
}
}