De hier beschreven programmering laat zien hoe je een kolom kunt toevoegen die de waardering op DPA (laatste actuele aankoopprijs) weergeeft in het derde raster van de zoekopdracht voor handelsartikelen (StockInterro). Deze SigStock customiser wordt geïmplementeerd via 2 interfaces:
De code is als volgt:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Linq;
// <CompileWithRoslyn />
namespace SigStock
{
public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
{
public void FormLoadCustomize(Form form)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
MercatorUi.Forms.Sig.SigObjects.StockInterro stockInterro = sigForm.MovableControls.Values.OfType< MercatorUi.Forms.Sig.SigObjects.StockInterro>().FirstOrDefault();
if (stockInterro != null)
stockInterro.AfterColumnsCreated += stockInterro_AfterColumnsCreated;
}
public void FormClosedCustomize(Form form)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
MercatorUi.Forms.Sig.SigObjects.StockInterro stockInterro = sigForm.MovableControls.Values.OfType<MercatorUi.Forms.Sig.SigObjects.StockInterro>().FirstOrDefault();
if (stockInterro != null)
stockInterro.AfterColumnsCreated -= stockInterro_AfterColumnsCreated;
}
private void stockInterro_AfterColumnsCreated(object sender, EventArgs e)
{
MercatorUi.GridPro.DataGridViewXPro grid = (MercatorUi.GridPro.DataGridViewXPro)sender;
if ((grid.Name == "grid3") && (grid.DataSource is DataTable dt))
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)grid.FindForm();
double s_dpa = Convert.ToDouble(sigForm.DataSourceRow["s_dpa"]);
dt.Columns.Add("Waardebepaling", typeof(double));
foreach (DataRow dr in dt.Rows)
{
dr["Waardebepaling"] = Math.Round(s_dpa * Convert.ToDouble(dr["dispo"]), MercatorUi.Globals.DEC_DEV_B_PU);
}
grid.Columns.Add("Waardebepaling", "Valor. DPA");
grid.Columns["Waardebepaling"].Width = 90;
grid.Columns["Waardebepaling"].DataPropertyName = "valorisation";
grid.Columns["Waardebepaling"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
grid.Columns["Waardebepaling"].DefaultCellStyle.Format = Globals.PictBasePu;
grid.Columns["Waardebepaling"].SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
}
}
Indien nodig kan deze customizer IStringUpdater of IStringUpdaterWithContextInfo implementeren om de SQL query aan te passen. De id van deze query is
<ID>STOCK_INTERRO3</ID>