Mercator permet d'intercepter ces nouveaux events sur les ButtonX :
[Description("Occurs before executing Click handler.")]
public event CancelEventHandler BeforeClick;
[Description("Occurs after executing Click handler.")]
public event EventHandler AfterClick;
Ils sont levés respectivement avant et après l'appel du délégué Click du bouton. L'évènement BeforeClick permet d'empêcher le comportement standard du bouton en spécifiant e.Cancel = true;
Ces évènements permettent de modifier de façon substantielle le comportement de Mercator. Nous recommandons un usage modéré et raisonné de ceux-ci.
Nous montrons ci-dessous un exemple montrant comment, dans l'écran des rappels, afficher une boîte de dialogue de confirmation supplémentaire lorsque l'on clique sur le bouton "Générer".
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Windows.Forms;
namespace Main
{
public class Customizer : MercatorUi.ICustomizers.IExec
{
public void Main(MercatorUi.ICustomizers.ExecAction Action)
{
if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
{
Globals.Main.BaseFormCreating += Main_BaseFormCreating;
}
else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
{
Globals.Main.BaseFormCreating -= Main_BaseFormCreating;
}
}
void Main_BaseFormCreating(object sender, MercatorUi.Main.BaseFormCreatingEventArgs e)
{
if (e.Form is MercatorUi.Forms.Accounting.AccountingRemindersForm)
{
e.Form.Shown += Form_Shown;
e.Form.FormClosed += Form_FormClosed;
}
}
void Form_Shown(object sender, EventArgs e)
{
MercatorUi.Forms.Accounting.AccountingRemindersForm accountingRemindersForm = (MercatorUi.Forms.Accounting.AccountingRemindersForm)sender;
accountingRemindersForm.Shown -= Form_Shown;
accountingRemindersForm.ButtonGenerate.BeforeClick += ButtonGenerate_BeforeClick;
}
void Form_FormClosed(object sender, FormClosedEventArgs e)
{
MercatorUi.Forms.Accounting.AccountingRemindersForm accountingRemindersForm = (MercatorUi.Forms.Accounting.AccountingRemindersForm)sender;
accountingRemindersForm.FormClosed -= Form_FormClosed;
accountingRemindersForm.ButtonGenerate.BeforeClick -= ButtonGenerate_BeforeClick;
}
private void ButtonGenerate_BeforeClick(object sender, System.ComponentModel.CancelEventArgs e)
{
if (!Dialogs.AnswerYesNo("Réellement générer les rappels ?"))
e.Cancel = true; // arrêter l'exécution du handler Click du bouton
}
}
}