Afbeeldingen weergeven in de artikelbladerlijst (tekstveld)

0000001997     -      10-05-2013

Deze module laat zien hoe u een artikelbladerlijst parametreert in een Mercator-versie waaraan het veld S_IMAGE (char) is toegevoegd dat de naam bevat van het afbeeldingsbestand dat bij iedere artikelfiche hoort. Ze werd gerealiseerd op basis van een BrowseStock-customizer die de volgende interfaces implementeert:

Het eerste deel van het proces bestaat uit de wijziging van de SQL-opdracht die bij de artikelbladerlijst hoort, zodat ze het veld S_IMAGE toevoegt. Dat gebeurt via de methode StringUpdate die beantwoordt aan de interface MercatorUi.ICustomizers.IStringUpdater.

Het tweede deel bestaat uit de toevoeging van een kolom van het type MercatorUi.GridPro.DataGridViewStringImageColumn waarmee een afbeelding kan worden weergegeven, op basis van een tekenreeks bestaande uit het volledige pad naar een afbeeldingsbestand of enkel de bestandsnaam in een standaarddirectory (Default Directory).

De code ziet er als volgt uit:

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

namespace BrowseStock
{
    public class Customizer : MercatorUi.ICustomizers.IStringUpdater, MercatorUi.ICustomizers.IFormGridCustomizer
    {

        private const int squareImageSize = 150;

        public string StringUpdate(string StringToModify)
        {
            return StringToModify.Replace(",S_ID as id", ", s_image, S_ID as id");
        }

        public void FormGridCustomize(Form WindowsForm)
        {
            MercatorUi.Forms.Sig.SigBrowseForm sigBrowseForm = (MercatorUi.Forms.Sig.SigBrowseForm)WindowsForm;
            MercatorUi.GridPro.DataGridViewStringImageColumn imgCol = new MercatorUi.GridPro.DataGridViewStringImageColumn();
            imgCol.HeaderText = "Image";
            imgCol.DataPropertyName = "s_image";
            imgCol.ImageLayout = DataGridViewImageCellLayout.Zoom;
            imgCol.Width = squareImageSize;
            imgCol.DefaultDirectory = MercatorUi.Globals.RepData + "BMP\\";
            sigBrowseForm.dataGridView.Columns.Add(imgCol);

            sigBrowseForm.dataGridView.RowTemplate.Height = squareImageSize;
        }

    }
}