De hier beschreven programmering laat zien hoe u een kolom met de vervaldatum toevoegt aan het eerste rooster van de commerciële artikelopzoeking (StockInterro). Deze customizer SigStock implementeert 3 interfaces:
- IStringUpdater : voor het wijzigen van de SQL-opdracht die standaard geen rekening houdt met het veld "Vervaldag".
- IFormLoadCustomizer : voor het toevoegen van een AfterColumnsCreated-event aan het object StockInterro;
- IFormClosedCustomizer : voor het verwijderen van het hierboven gecreëerde event.
De code ziet er als volgt uit:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
namespace SigStock
{
public class Customizer : MercatorUi.ICustomizers.IStringUpdater, MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
{
public string StringUpdate(string StringToModify)
{
string id = Api.StrExtract(StringToModify, "<ID>", "</ID>");
if (id != "STOCK_INTERRO1") // Er moet enkel gereageerd worden op de opdracht van rooster 1 van StockInterro. StringUpdate zal echter alle opdrachten van alle objecten en van het rooster van het informatiebestand "Artikels" zien passeren.
return StringToModify; // Dit is niet de opdracht van rooster 1 van StockInterro -> er wordt niets gewijzigd.
else // Opgelet: de opdracht varieert in functie van de geselecteerde aanvinkvakjes.
return StringToModify.Replace(",pieds_v.date,", ",pieds_v.date,pieds_v.echeance,").Replace(",pieds_a.date,", ",pieds_a.date,pieds_a.echeance,").Replace(",lignes_d.date,", ",lignes_d.date,cast('01/01/1900' as datetime) as echeance,");
}
public void FormLoadCustomize(System.Windows.Forms.Form WindowsForm)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
List<Control> l = sigForm.FindMovableControlsByType(typeof(MercatorUi.Forms.Sig.SigObjects.StockInterro));
if (l.Count > 0)
{
MercatorUi.Forms.Sig.SigObjects.StockInterro stockInterro = (MercatorUi.Forms.Sig.SigObjects.StockInterro)l[0];
stockInterro.AfterColumnsCreated += new MercatorUi.Forms.Sig.SigObjects.StockInterro.AfterColumnsCreatedHandler(stockInterro_AfterColumnsCreated);
}
}
public void FormClosedCustomize(System.Windows.Forms.Form WindowsForm)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
List<Control> l = sigForm.FindMovableControlsByType(typeof(MercatorUi.Forms.Sig.SigObjects.StockInterro));
if (l.Count > 0)
{
MercatorUi.Forms.Sig.SigObjects.StockInterro stockInterro = (MercatorUi.Forms.Sig.SigObjects.StockInterro)l[0];
stockInterro.AfterColumnsCreated -= new MercatorUi.Forms.Sig.SigObjects.StockInterro.AfterColumnsCreatedHandler(stockInterro_AfterColumnsCreated);
}
}
private void stockInterro_AfterColumnsCreated(object sender, EventArgs e)
{
MercatorUi.GridPro.DataGridViewXPro grid = (MercatorUi.GridPro.DataGridViewXPro)sender;
if (grid.Name == "grid1") // Opgelet: StockInterro bevat 2 roosters. Hier moet enkel gereageerd worden op rooster 1. Ditzelfde event zal ook rooster 2 zien passeren (maar dat moet niet gewijzigd worden).
{
grid.Columns.Add("echeance", _Divers.Iif_langue(Globals.Langue, "Due Date", "Vervald.", "Echéance"));
grid.Columns["echeance"].Width = 68;
grid.Columns["echeance"].DataPropertyName = "echeance";
grid.Columns["echeance"].DefaultCellStyle.Format = Api.Iif(Globals.DateMDY, "MM/dd/yyyy", "dd/MM/yyyy");
}
}
}
}