Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Dans la grille des actions des signalétiques, mettre en italique les actions faites

0000002094     -      07/11/2013

Cette programmation est la version Aruba de ce paramétrage. Elle permet de mettre en italique les lignes correspondant à des actions faites (au lieu de les voir barrées) dans les grilles des actions des signalétiques.

La programmation illustrée ici est réalisée sur base d'un customizer SigCli qui implémente les interfaces suivantes :

Le customizer s'écrit comme suit :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Drawing;

namespace SigCli
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {

        public void FormLoadCustomize(Form WindowsForm)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
            List<Control> l = sigForm.FindMovableControlsByType(typeof(MercatorUi.Forms.Sig.SigGrids.Actions));
            if (l.Count == 0)
                return;
            MercatorUi.Forms.Sig.SigGrids.Actions actions = (MercatorUi.Forms.Sig.SigGrids.Actions)l[0];
            actions.Grid.CellFormatted += new DataGridViewCellFormattingEventHandler(actions_CellFormatted);
        }

        public void FormClosedCustomize(Form WindowsForm)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
            List<Control> l = sigForm.FindMovableControlsByType(typeof(MercatorUi.Forms.Sig.SigGrids.Actions));
            if (l.Count == 0)
                return;
            MercatorUi.Forms.Sig.SigGrids.Actions actions = (MercatorUi.Forms.Sig.SigGrids.Actions)l[0];
            actions.Grid.CellFormatted -= new DataGridViewCellFormattingEventHandler(actions_CellFormatted);
        }

        private void actions_CellFormatted(object sender, DataGridViewCellFormattingEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;
            if (Convert.ToDateTime(grid.Rows[e.RowIndex].Cells["date_done"].Value) > new DateTime(1900, 1, 1))
                e.CellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, FontStyle.Italic, GraphicsUnit.Point, ((byte)(0)));
        }
    }
}

Notez qu'on exploite ici l'évènement CellFormatted de la MercatorUi.GridPro.DataGridViewXPro. Cet évènement permet d'agir sur le format d'une cellule, après que Mercator ait exécuté l'évènement CellFormatting standard.

Remarque importante : à partir de la version 8.1, l'attribut italique sera utilisé en standard par Mercator pour indiquer si l'action est de génération Legacy ou Aruba. Nous recommandons donc de ne pas utiliser cet attribut italique, mais plutôt de changer la couleur des lignes. Ceci peut être fait en changeant simplement ces lignes

Zoom
if (Convert.ToDateTime(grid.Rows[e.RowIndex].Cells["date_done"].Value) > new DateTime(1900, 1, 1))
    e.CellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, FontStyle.Italic, GraphicsUnit.Point, ((byte)(0)));

par

Zoom
if (Convert.ToDateTime(grid.Rows[e.RowIndex].Cells["date_done"].Value) > new DateTime(1900, 1, 1))
{
    e.CellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
    e.CellStyle.ForeColor = Color.DarkGreen;
}