U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

De vervaldatum toevoegen in het eerste rooster van de commerciële artikelopzoeking

0000002023     -      07-11-2013

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:

Zoom
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)
                return;
            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)
                return;
            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");
            }
        }
    }
}