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

Gepersonaliseerde schermen : gepersonaliseerde objecten toevoegen

0000002042     -      31-07-2014

Mercator kan rekening houden met gepersonaliseerde objecten, die op dezelfde manier kunnen worden toegevoegd aan de gepersonaliseerde schermen als de standaardobjecten (MovableObjects) van Mercator. Daartoe volstaat het dat de klasse die men wenst te gebruiken als gepersonaliseerd object de interface MercatorUi.MovableControls.Interfaces.IMovableControl implementeert.

Hieronder vindt u een voorbeeldcode die een klasse beter is dan een UserControl en deze interface implementeert.

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

namespace TestMovableObject
{
    public partial class TestUserControl : UserControl, MercatorUi.MovableControls.Interfaces.IMovableControl
    {


        public TestUserControl()
        {
            InitializeComponent();
        }

#region Eigenschappen vereist door IMovableControl

        // Het Form dat dit MovableObject omvat.
        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 beschikbaar is voor de gebruiker: alle event van de stijl "valueChanged" worden veroorzaakt door de gebruiker, 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 Methodes vereist door IMovableControl

        public void OnAfterRead(EventArgs e)
        {
            if (Form is MercatorUi.Forms.Sig.SigForm)
            {
                MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)Form;
                label1.Text = string.Format("U bevindt zich in het informatiebestand {0} en de actieve fiche is \"{1}\"!", sigForm.Sig.Module, sigForm.DataSourceRow[sigForm.Sig.Letter1 + "_ID"]);
            }
        }

        public void OnBeforeWrite(EventArgs e)
        {

        }

        public void OnAfterWrite(EventArgs e)
        {
            
        }

#endregion

        private void button1_Click(object sender, EventArgs e)
        {
            if (Form is MercatorUi.Forms.Sig.SigForm)
            {
                MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)Form;
                if (sigForm.Sig.Module == MercatorUi.Sig._SigEnum.STOCK)
                    MercatorUi.Dialogs.Stop(sigForm.DataSourceRow["S_MODELE"].ToString());
                else
                    MercatorUi.Dialogs.Stop(sigForm.DataSourceRow[sigForm.Sig.Letter1 + "_NOM"].ToString());
            }
        }
    }
}

(Het project dat deze code bevat, is beschikbaar in het zipbestand en moet verwijzen naar MercatorUi.dll en MercatorComponent.dll.)

Het gegenereerde DLL-bestand moet vervolgens in de hoofddirectory van Mercator worden geplaatst (of in de lokale directory als de resources lokaal geïnstalleerd zijn). Tot slot moet dit DLL-bestand (via drag&drop) naar het scherm worden gesleept dat geopend wordt via "Tools / Parameters / Custom Movable Objects" (als het DLL-bestand meerdere klassen omvat, kan de gewenste klasse worden geselecteerd in het rolmenu).

Zodra dit DLL-bestand en deze klasse in de parameterinstelling van Mercator zijn ingevoerd, worden ze toegevoegd in de lijst van beschikbare objecten. Ze worden vermeld in DLL-formaat (zonder extensie): klassenaam.

custom_object

 


 

De bovenstaande code moet worden beschouwd als vertrekpunt voor de realisatie van een gepersonaliseerd object. Ze heeft geen enkele functionele waarde, maar heeft enkel tot doel te laten zien hoe het systeem werkt. Ze werd ontwikkeld om toegevoegd te worden aan de informatiebestanden (SigForm).

  • De methode OnAfterRead laat zien hoe u een code uitvoert bij het overschakelen van de ene fiche naar de andere, net nadat Mercator de gegevens van het actieve record heeft gelezen. Wij gebruiken deze methode om in een label een bericht weer te geven dat onder andere de naam van het actieve informatiebestand alsook de identificatiecode van de fiche vermeldt.
  • Wij hebben een knop toegevoegd die een dialoogvenster met de naam van de actieve fiche weergeeft.


Te laden : 0000002042.zip (11 Kb - 24-04-2013)