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

In de verkoophistoriek van het menu "Vensters" een rolmenu toevoegen en daarmee rekening houden voor de selectie van de documenten

0000001996     -      06-09-2021

Via deze programmering kunt u een rolmenu toevoegen in het dialoogvenster van de klantenhistoriek van het menu "Vensters". In ons voorbeeld zal dit rolmenu dienen om te filteren op basis van de centralisatiestatus in de boekhouding. In een volgende fase, bij het uitvoeren van de opdracht tot selectie van de weer te geven documenten, zal deze parameter uiteraard in aanmerking worden genomen. Deze ontwikkeling baseert zich op een HistCli-customizer die de volgende interfaces implementeert:

hist_cli_combo_nl

Terloops merken we op dat deze code het gebruik van de klasse MercatorUi._BaseClasses.MercatorComboItem voor het invoeren van rolmenu-items illustreert.

De code onder "// Men voegt het rolmenu toe in het dialoogvenster" is gewoon een herformulering van de code die automatisch door de designer wordt gegenereerd wanneer een object MercatorUi._BaseClasses.ComboBoxExReadOnly op een form wordt geplaatst.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using MercatorDatabase;

namespace HistCli
{
    public class Customizer : MercatorUi.ICustomizers.IDialogLoadCustomizer, MercatorUi.ICustomizers.IStringUpdater
    {
        private MercatorUi._BaseClasses.ComboBoxExReadOnly comboBoxCentralisation;

        public void DialogLoadCustomize(System.Windows.Forms.Form form)
        {
            // Deze lijst komt overeen met de elementen van het rolmenu dat zal worden toegevoegd in het dialoogvenster
            List<MercatorUi._BaseClasses.MercatorComboItem> l = new List<MercatorUi._BaseClasses.MercatorComboItem>();
            l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Alle", (Int16)0));
            l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Niet-gecentraliseerd", (Int16)1));
            l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Foutief", (Int16)2));
            l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Vast", (Int16)3));
            l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Gecentraliseerd", (Int16)4));

            // Men voegt het rolmenu toe in het dialoogvenster
            comboBoxCentralisation = new MercatorUi._BaseClasses.ComboBoxExReadOnly();
            comboBoxCentralisation.DisplayMember = "Text";
            comboBoxCentralisation.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
            comboBoxCentralisation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            comboBoxCentralisation.FormattingEnabled = true;
            comboBoxCentralisation.ItemHeight = 14;
            comboBoxCentralisation.Location = new System.Drawing.Point(355, 210);
            comboBoxCentralisation.Name = "comboBoxDepot";
            comboBoxCentralisation.Size = new System.Drawing.Size(122, 20);
            comboBoxCentralisation.BringToFront();
            comboBoxCentralisation.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
            comboBoxCentralisation.DisplayMember = "Description";
            comboBoxCentralisation.ValueMember = "N";
            comboBoxCentralisation.DataSource = l;
            comboBoxCentralisation.SelectedValue = (Int16)0;
            form.Controls.Add(comboBoxCentralisation);
            form.Disposed += form_disposed;
        }

        public string StringUpdate(string StringToModify)
        {
            if (comboBoxCentralisation == null)
                return StringToModify; // Men heeft de historiek bereikt zonder gebruik van het dialoogvenster (bv. vanuit een automatische groepering)

            string compl_where = null;
            int selectedValueInCombo = System.Convert.ToInt32(comboBoxCentralisation.SelectedValue);

            if (selectedValueInCombo == 1) // Niet-gecentraliseerd
                compl_where = "(cubic=0)";
            else if (selectedValueInCombo == 2) // Foutief
                compl_where = "((cubic>0) and (cubic<8))";
            else if (selectedValueInCombo == 3) // Vast
                compl_where = "(cubic=8)";
            else if (selectedValueInCombo == 4) // Gecentraliseerd
                compl_where = "(cubic=9)";
            if (compl_where == null)
                return StringToModify;
            else
                return StringToModify.Replace(" order by ", " and " + compl_where + " order by "); // Men voegt de nieuwe voorwaarde toe net voor order by
        }

        private void form_disposed(object sender, EventArgs e)
        {
            System.Windows.Forms.Form form = (System.Windows.Forms.Form)sender;
            form.Disposed -= form_disposed;
            comboBoxCentralisation = null;
        }
    }
}