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

Toevoegen van de vervaldatum in de klantenhistoriek bij één journaal

0000003056     -      17-12-2021

Deze configuratie toont hoe u, alleen bij sequentie VEN, een vervaldatum kan toevoegen in de klantenhistoriek (menu "Vensters"). In dit voorbeeld laten we u ook zien hoe u de vervaldatum in het vet kan zetten voor de datum van vandaag.

Dit wordt gedaan door een HistCli customizer te maken die maar één interface aanspreekt: IGridUnifiedCustomizer.

De code bevat 3 delen die verenigd worden via het GridUnifiedCustomizerContainer object:

  • StringUpdater : die de SQL query kan wijzigen. Deze code wordt altijd eerst aangeroepen en wordt gebruikt om onderstaande onderdelen in te stellen.
  • GridUpdater : die tegelijkertijd met FormGridCustomize werkt.
  • PrefuserKeyCompl : die ons toelaat om een extra tekenreeks op te geven die de volgorde en breedte van de kolommen kan bewaren.
  • Dispose : die slechts één keer kan uitgevoerd worden om het rooster weg te gooien.

Deze programmering is compatibel met het contextmenu "Opnieuw zoeken" van het rooster.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Drawing;
using MercatorUi.GridPro;


// <CompileWithRoslyn />

namespace HistCli
{
    public class Customizer : MercatorUi.ICustomizers.IGridUnifiedCustomizer
    {
        public void GridUnifiedCustomize(GridUnifiedCustomizerContainer gridUnifiedCustomizerContainer)
        {
            gridUnifiedCustomizerContainer.StringUpdater = (reqSql) =>
            {
                string journal = Api.StrExtract(reqSql, "pieds_v.journal='", "'").TrimEnd();
                if (journal == "VEN")
                    reqSql = reqSql.Replace("date,", "date,echeance,");

                gridUnifiedCustomizerContainer.GridUpdater = () =>
                {
                    if ((journal == "VEN") && !gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
                    {
                        gridUnifiedCustomizerContainer.Grid.Columns.Add("echeance", "Echéance");
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].Width = 85;
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DataPropertyName = "echeance";
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DefaultCellStyle.Format = Api.Iif(MercatorUi.Globals.DateMDY, "MM/dd/yyyy", "dd/MM/yyyy");
                        gridUnifiedCustomizerContainer.Grid.CellFormatting += Grid_CellFormatting;
                    }
                    else if ((journal != "VEN") && gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
                    {
                        gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
                        gridUnifiedCustomizerContainer.Grid.Columns.Remove("echeance");
                    }
                };

                gridUnifiedCustomizerContainer.PrefuserKeyCompl = journal == "VEN" ? journal : "";

                gridUnifiedCustomizerContainer.Dispose = () =>
                {
                    gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
                };
                
                return reqSql;
            };
        }

        void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;
            if ((grid.Columns[e.ColumnIndex].Name == "echeance") && (grid.Rows[e.RowIndex].Cells["echeance"].Value != DBNull.Value))
            {
                if (Convert.ToDateTime(e.Value) < DateTime.Now)
                    e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
            }
        }
    }
}