In een knop een extra element toevoegen (ButtonItem) in de dropdown.

0000002333     -      29-03-2016

Hier geïllustreerd voorbeeld toont hoe we een ButtonItem element toevoegen aan een bestaande knop in het onderste deel van een venster. Het voorbeeld is gemaakt voor het venster “Details van domicilies”, maar het principe kan worden toegepast op elk venster met dit type knop.

De knop is van het type MercatorUi.BoutonsPro.ButtonXPro. We kunnen hier één of meerdere elementen aan toevoegen deze zijn van het type MercatorUi.BoutonsPro.ButtonItemPro. De programmering is gebaseerd op de Main customizer die de interface MercatorUi.ICustomizers.IExec implementeert om het event BaseFormCreating op te vangen.

Dit buttonItem vereist 2 afbeeldingen. Een voor de weergave in de dropdown in het formaat van 16x16 pixels. De andere voor de weergave in de parent button in het formaat van 32x32 pixels. Vergeet niet dat een afbeelding makkelijk ingeladen kan worden vanuit een bestand op de harde schijf met behulp van System.Drawing.Image.FromFile(MercatorUi.Globals.MainDir + “...”)

De customizer-code gaat als volgt:

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Reflection;

namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {

        public void Main(MercatorUi.ICustomizers.ExecAction Action)
        {
            if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                Globals.Main.BaseFormCreating += new MercatorUi.Main.BaseFormCreatingEventHandler(Main_BaseFormCreating);
            }
            else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                Globals.Main.BaseFormCreating -= new MercatorUi.Main.BaseFormCreatingEventHandler(Main_BaseFormCreating);
            }
        }

        void Main_BaseFormCreating(object sender, MercatorUi.Main.BaseFormCreatingEventArgs e)
        {
            if (e.Form.GetType() == typeof(MercatorUi.Forms.Accounting.AccountingBankDomicilForm))
            {
                e.Form.Shown += new EventHandler(Form_Shown);
                e.Form.FormClosed += new FormClosedEventHandler(Form_FormClosed);
            }
        }

        void Form_Shown(object sender, EventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm = (MercatorUi.Forms.Accounting.AccountingBankDomicilForm)sender;
            accountingBankDomicilForm.Shown -= new EventHandler(Form_Shown); // uitschrijven op het event
            MercatorUi.BoutonsPro.BleuPro bleuPro1 = (MercatorUi.BoutonsPro.BleuPro)accountingBankDomicilForm.Controls["bleuPro1"];
            MercatorUi.BoutonsPro.ButtonXPro buttonXProBrowsePieceliees = (MercatorUi.BoutonsPro.ButtonXPro)bleuPro1.Controls["buttonBrowsePieceliees"];

            MercatorUi.BoutonsPro.ButtonItemPro doSomeThing = new MercatorUi.BoutonsPro.ButtonItemPro();
            doSomeThing.Image = MercatorUi._Divers.ImageFromResource("xml16"); // afbeelding 16x16 pixels
            doSomeThing.Image32 = MercatorUi._Divers.ImageFromResource("xml32"); // afbeelding 32x32 pixels
            doSomeThing.Name = "doSomeThing";
            doSomeThing.Text = "Faire Qqch.";
            doSomeThing.TextE = "Do Something";
            doSomeThing.TextN = "Iets Doen";
            doSomeThing.Tag = accountingBankDomicilForm;
            doSomeThing.Execute += new MercatorUi.BoutonsPro.ButtonItemPro.ExecuteHandler(doSomeThing_Execute);
            buttonXProBrowsePieceliees.SubItems.Add(doSomeThing);
            
        }

        void Form_FormClosed(object sender, FormClosedEventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm = (MercatorUi.Forms.Accounting.AccountingBankDomicilForm)sender;
            accountingBankDomicilForm.FormClosed -= new FormClosedEventHandler(Form_FormClosed);
            MercatorUi.BoutonsPro.BleuPro bleuPro1 = (MercatorUi.BoutonsPro.BleuPro)accountingBankDomicilForm.Controls["bleuPro1"];
            MercatorUi.BoutonsPro.ButtonXPro buttonXProBrowsePieceliees = (MercatorUi.BoutonsPro.ButtonXPro)bleuPro1.Controls["buttonBrowsePieceliees"];
            MercatorUi.BoutonsPro.ButtonItemPro doSomeThing = (MercatorUi.BoutonsPro.ButtonItemPro)buttonXProBrowsePieceliees.SubItems["doSomeThing"];
            doSomeThing.Execute -= new MercatorUi.BoutonsPro.ButtonItemPro.ExecuteHandler(doSomeThing_Execute);
        }

        
        void doSomeThing_Execute(object sender, EventArgs e)
        {
            MercatorUi.BoutonsPro.ButtonItemPro doSomeThing = (MercatorUi.BoutonsPro.ButtonItemPro)sender;
            MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm = (MercatorUi.Forms.Accounting.AccountingBankDomicilForm)doSomeThing.Tag;
            MercatorUi.Dialogs.Stop(accountingBankDomicilForm.Text);
        }

    }
}

Opgelet: Deze programmatie wordt niet toegepast op .NET knoppen uit de Legacy-versie.