using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Drawing;
namespace BrowseCli
{
public class Customizer :
MercatorUi.ICustomizers.IStringUpdater,
MercatorUi.ICustomizers.IFormLoadCustomizer,
MercatorUi.ICustomizers.IFormClosedCustomizer,
MercatorUi.ICustomizers.IFormGridCustomizer
{
/*
* Deze eerste methode is de implementatie van de interface IStringUpdater.
* Hiermee kunt u rechtstreeks de SQL-opdracht wijzigen die Mercator standaard voorstelt voor uitvoering.
* Men voegt gewoon het veld C_SOLDE toe in de lijst met velden van de select van de opdracht
*/
public string StringUpdate(string StringToModify)
{
StringToModify = StringToModify.Replace(" from CLI", ",C_SOLDE from CLI");
return StringToModify;
}
/*
* Deze tweede methode is de implementatie van de interface IFormLoadCustomizer.
* Aangezien deze methode een Form als parameter krijgt (basisvenster, want we kunnen deze interface gebruiken voor diverse schermen),
* moet er eerst een cast Form -> SigBrowseForm worden gerealiseerd.
* Deze code voegt een CellFormatting-event toe aan het dataGridView.
*/
public void FormLoadCustomize(Form WindowsForm)
{
MercatorUi.Forms.Sig.SigBrowseForm SigBrowseForm = (MercatorUi.Forms.Sig.SigBrowseForm)WindowsForm;
SigBrowseForm.dataGridView.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView_CellFormatting);
}
public void FormClosedCustomize(Form WindowsForm)
{
MercatorUi.Forms.Sig.SigBrowseForm SigBrowseForm = (MercatorUi.Forms.Sig.SigBrowseForm)WindowsForm;
SigBrowseForm.dataGridView.CellFormatting -= new DataGridViewCellFormattingEventHandler(dataGridView_CellFormatting);
}
/*
* Deze methode is de implementatie van de interface IFormGridCustomizer
* Ze voegt de kolom c_solde toe aan het datagridview
*/
public void FormGridCustomize(Form WindowsForm)
{
MercatorUi.Forms.Sig.SigBrowseForm SigBrowseForm = (MercatorUi.Forms.Sig.SigBrowseForm)WindowsForm;
SigBrowseForm.dataGridView.Columns.Add("c_solde", "");
SigBrowseForm.dataGridView.Columns["c_solde"].DataPropertyName = "c_solde";
SigBrowseForm.dataGridView.Columns["c_solde"].Visible = false;
}
void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView dataGridView = (DataGridView)sender;
if (dataGridView.Columns.Contains("c_solde") // Bij het vernieuwen van het rooster worden de kolommen opnieuw gecreƫerd. In die tussentijd bestaat de kolom niet meer.
&& (dataGridView.Rows[e.RowIndex].Cells["c_solde"].Value != DBNull.Value)) // Men controleert dat het geen scheidingslijn is zonder
{
double solde = System.Convert.ToDouble(dataGridView.Rows[e.RowIndex].Cells["c_solde"].Value);
if (solde < -5000) // negatieve waarde, want een debetsaldo is negatief
e.CellStyle.ForeColor = Color.Red;
}
}
}
}