Cet exemple de customizer montre l'utilisation des évènements AfterRead, BeforeWrite et AfterWrite dans le signalétique clients. Il est constuit sur base d'un customizer SigCli qui implémente ces interfaces :
Le code, écrit dans le seul but de compréhension de ces 3 évènements, s'écrit comme suit :
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Linq;
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 textBox = sigForm.MovableControls.Values.OfType<MercatorUi.MovableControls.MovableTextBox>().FirstOrDefault(c => c.Source == "C_NOM");
if (textBox != null)
{
textBox.AfterRead += textBox_AfterRead;
textBox.BeforeWrite += textBox_BeforeWrite;
textBox.AfterWrite += textBox_AfterWrite;
}
}
public void FormClosedCustomize(Form form)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
MercatorUi.MovableControls.MovableTextBox textBox = sigForm.MovableControls.Values.OfType<MercatorUi.MovableControls.MovableTextBox>().FirstOrDefault(c => c.Source == "C_NOM");
if (textBox != null)
{
textBox.AfterRead -= textBox_AfterRead;
textBox.BeforeWrite -= textBox_BeforeWrite;
textBox.AfterWrite -= textBox_AfterWrite;
}
}
void textBox_AfterRead(object sender, EventArgs e)
{
MercatorUi.MovableControls.MovableTextBox textBox = (MercatorUi.MovableControls.MovableTextBox)sender;
Dialogs.Stop(string.Format("La valeur lue dans la DB est \"{0}\".", textBox.Text));
}
void textBox_BeforeWrite(object sender, EventArgs e)
{
MercatorUi.MovableControls.MovableTextBox textBox = (MercatorUi.MovableControls.MovableTextBox)sender;
Dialogs.Stop(string.Format("La valeur qui, en cas de modification, sera être écrite dans la DB est \"{0}\".", textBox.Text));
}
void textBox_AfterWrite(object sender, EventArgs e)
{
MercatorUi.MovableControls.MovableTextBox textBox = (MercatorUi.MovableControls.MovableTextBox)sender;
Dialogs.Stop(string.Format("La valeur \"{0}\" a été écrite dans la DB.", textBox.Text));
}
}
}