Gepersonaliseerde schermen : gepersonaliseerde objecten toevoegen

0000002042     -      18-04-2023

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 staat een voorbeeld van code die een UserControl overschrijft en deze interface implementeert.

 Sinds versie 10.10.597 van MercatorUi.dll moeten PictureBoxesToRefresh worden toegevoegd (zie hieronder).

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 propriétés requises par IMovableControl

        // Het Form dat dit MovableObject omvat.
        public MercatorUi.MovableControls.Interfaces.IFormForMovableControls Form { get; set; }
        // Geeft aan dat de controle beschikbaar is voor de gebruiker: alle event van de stijl "valueChanged" worden veroorzaakt door de gebruiker, niet door Mercator
        public bool UserMode { get; set; }
        public bool AfterDone { get; set; }
        public List<MercatorUi.MovableControls.MovableExpression> ExpressionsToRefresh { get; set; }
        public List<MercatorUi.MovableControls.MovablePictureBox> PictureBoxesToRefresh { get; set; }

#endregion


#region méthodes requises par 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 (10 Kb - 20-03-2023)