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 een commercieel beheersdocument een UserControl plaatsen die knoppen bevat waarmee een artikel kan worden toegevoegd

0000002195     -      18-03-2014

Met deze programmering wordt er een UserControl toegevoegd die verschillende knoppen bevat die het elk mogelijk maken om een bepaald artikel toe te voegen in de lopende verkoop of aankoop. Deze functie kan u vinden door deze configuratie over te nemen. Voor een meer ambitieuze ontwikkeling zal deze nieuwe benadering aanzienlijk meer flexibiliteit bieden op het vlak van programmering.

Deze configuratie vertrekt van het concept om gepersonaliseerde objecten toe te voegen in personaliseerbare schermen.

Om dit voorbeeld te vereenvoudigen, beperken we dit tot drie knoppen die in een UserControl geplaatst worden die de interface MercatorUi.MovableControls.Interfaces.IMovableControl implementeert. Gemakkelijkheidshalve koppelen we de identificatie (S_ID) van een artikel aan elke knop bovenaan in de code, door dit te plaatsen in het 'Tag'-eigenschap.

gescombuttons_nl

De code van deze programmering is:

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

namespace GescomButtons
{
    public partial class GescomButtonsUserControl : UserControl, MercatorUi.MovableControls.Interfaces.IMovableControl
    {
        public GescomButtonsUserControl()
        {
            InitializeComponent();
            // de s_id van het artikel wordt in de tag van de bijbehorende knop 'verborgen'
            button1.Tag = "618173914H";
            button2.Tag = "618173915I";
            button3.Tag = "618173916K";
        }


#region propriétés requises par IMovableControl

        // de Form waarin dit MovableObject zit
        private MercatorUi.MovableControls.Interfaces.IFormForMovableControls _form = null;
        public MercatorUi.MovableControls.Interfaces.IFormForMovableControls Form { get { return _form; } set { if (_form == null) _form = value; } }


        // geeft aan dat de controle ter beschikking van de gebruiker is: alle events van het type 'valueChanged' worden door de gebruiker veroorzaakt, niet door Mercator
        private bool _userMode = false;
        public bool UserMode { get { return _userMode; } set { _userMode = value; } }

        internal bool afterDone = false;
        public bool AfterDone { get { return afterDone; } set { afterDone = value; } }
        
        private List<MercatorUi.MovableControls.MovableExpression> _expressionsToRefresh = null;
        public List<MercatorUi.MovableControls.MovableExpression> ExpressionsToRefresh { get { return _expressionsToRefresh; } set { _expressionsToRefresh = value; } }

#endregion


#region méthodes requises par IMovableControl

        public void OnAfterRead(EventArgs e)
        {
        }

        public void OnBeforeWrite(EventArgs e)
        {
        }

        public void OnAfterWrite(EventArgs e)
        {
        }

#endregion

        private void button1_Click(object sender, EventArgs e)
        {
            addItem(sender);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            addItem(sender);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            addItem(sender);
        }

        private void addItem(object sender)
        {
            Button button = (Button)sender;
            string s_id = button.Tag.ToString();
            MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)_form;
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = billingForm.BillingEngine;
            if (billingEngine.ReadOnly) // indien de gebruiker dit document niet mag wijzigen
                return;
            int n = billingEngine.AppendLine(true); // de parameter true laat niet toe dat er een nieuwe lijn wordt aangemaakt indien de laatste lijn leeg is
            if (billingEngine.InsertItem(s_id, billingEngine.LIGNES.Rows[n]))
            {
                n = billingEngine.AppendLine();  // een nieuwe, lege lijn toevoegen
                billingForm.LinesEditor.Grid.CurrentCell = billingForm.LinesEditor.Grid.Rows[n].Cells[0]; // de eerste cel van de gecreëerde lijn activeren
            }

        }

    }
}

De essentie van de code van deze instelling beperkt zich tenslotte tot deze in de methode addItem.

Het zip-bestand in de bijlage bevat de volledige broncode van deze programmering.



Te laden : 0000002195.zip (12 Kb - 24-04-2013)