Cette programmation permet, dans le signalétique des articles, de changer le dépôt par défaut du déroulant sous la grille de visualisation du stock en gammes (tailles & couleurs). Il se construit sur base d'un customizer SigStock qui implémente les interfaces MercatorUi.ICustomizers.IFormLoadCustomizer et MercatorUi.ICustomizers.IFormClosedCustomizer et qui exploite l'évènement AfterRead pour détecter le passage de fiche en fiche.
La ligne "gamDispo.ComboBoxDepots.SelectedIndex = 1;" permet de sélectionner la seconde entrée dans le déroulant (qui doit donc contenir au moins deux éléments)
Le code s'établit comme suit :
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.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
{
public void FormLoadCustomize(Form WindowsForm)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
MercatorUi.Forms.Sig.SigGrids.Gam gamDispo = (MercatorUi.Forms.Sig.SigGrids.Gam)sigForm.MovableControls["4AA0BAC1D3"];
gamDispo.AssociatedPanelCreated += new MercatorUi.MovableControls.MovableGrid.AssociatedPanelCreatedHandler(gamDispo_AssociatedPanelCreated);
gamDispo.AfterRead += new MercatorUi.MovableControls.MovableGrid.AfterReadHandler(gamDispo_AfterRead);
}
public void FormClosedCustomize(Form WindowsForm)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
MercatorUi.Forms.Sig.SigGrids.Gam gamDispo = (MercatorUi.Forms.Sig.SigGrids.Gam)sigForm.MovableControls["4AA0BAC1D3"];
gamDispo.AssociatedPanelCreated -= new MercatorUi.MovableControls.MovableGrid.AssociatedPanelCreatedHandler(gamDispo_AssociatedPanelCreated);
gamDispo.AfterRead -= new MercatorUi.MovableControls.MovableGrid.AfterReadHandler(gamDispo_AfterRead);
}
void gamDispo_AssociatedPanelCreated(object sender, MercatorUi.MovableControls.MovableGrid.AssociatedPanelCreatedEventArgs e)
{
// pour le première initialisation de la grille
gamDispo_AfterRead(sender, EventArgs.Empty);
}
void gamDispo_AfterRead(object sender, EventArgs e)
{
// lors du passage de fiche en fiche
MercatorUi.Forms.Sig.SigGrids.Gam gamDispo = (MercatorUi.Forms.Sig.SigGrids.Gam)sender;
if (gamDispo.ComboBoxDepots != null)
gamDispo.ComboBoxDepots.SelectedIndex = 1;
}
}
}
Notez qu'il est fait usage de sigForm.MovableControls[id] et non sigForm.FindMovableControlsByType. En effet, de façon classique, une fiche articles contient deux objets de type MercatorUi.Forms.Sig.SigGrids.Gam (un pour les prix, un pour les disponible) et le danger serait d'appliquer ce code à la grille de prix. L'ID (4AA0BAC1D3) doit être remplacé par la valeur trouvée dans votre paramétrage d'écran.