using System;
using System.Collections.Generic;
using System.Text;
using MercatorApi;
using System.Windows.Forms;
using System.Drawing;
namespace HistCli
{
public class Customizer : MercatorUi.ICustomizers. IStringUpdater ,
MercatorUi.ICustomizers. IFormGridCustomizer ,
MercatorUi.ICustomizers. IFormLoadCustomizer ,
MercatorUi.ICustomizers. IFormClosedCustomizer
{
/*
* Deze eerste methode is de implementatie van de interface IStringUpdater.
* Hiermee kunt u rechtstreeks de SQL-opdracht wijzigen die Mercator standaard voorstelt.
* Aangezien deze opdracht van het volgende type is: select pieds_v.id,journal,piece,reference,type,date,heure,tot_bas_dv,tot_bas_fb,tot_ttc_dv,tot_ttc_fb,n_dec,id_dev,imprime,cubic as flag_appl,niveau_bo,c_nom,devises.nom as dev_nom from pieds_v (NOLOCK),cli (NOLOCK),devises (NOLOCK) where (pieds_v.id_cli=cli.c_id) and (pieds_v.id_dev=devises.id) and (journal='VEN ') and (piece>=20060000) and (piece<=20069999) and (date>=cast('01/10/2006' as datetime)) and (date<=cast('31/10/2006' as datetime)) order by piece desc
* voegt men gewoon toe: vervaldag na datum
* Het is uiteraard ook mogelijk om complexere wijzigingen aan te brengen, die bijvoorbeeld tabellen toevoegen aan de clausule "from"
*/
public string StringUpdate( string StringToModify)
{
return StringToModify.Replace( "date," , "date,echeance," );
}
/*
* Deze tweede methode is de implementatie van de interface IFormGridCustomizer
* Ze voegt de kolom "Vervaldag" toe aan de datagridview
*/
public void FormGridCustomize( Form WindowsForm)
{
MercatorUi.Forms.Hist. HistForm HistForm = (MercatorUi.Forms.Hist. HistForm )WindowsForm;
HistForm.dataGridView.Columns.Add( "echeance" , "Echéance" );
HistForm.dataGridView.Columns[ "echeance" ].Width = 68;
HistForm.dataGridView.Columns[ "echeance" ].DataPropertyName = "echeance" ;
HistForm.dataGridView.Columns[ "echeance" ].DefaultCellStyle.Format = Api .Iif(MercatorUi. Globals .DateMDY, "MM/dd/yyyy" , "dd/MM/yyyy" );
}
/*
* Deze derde 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 -> HistForm worden gerealiseerd.
* Vervolgens schrijft men een code die zal worden uitgevoerd aan het eind van het event Load van HistForm.
* Deze code voegt een CellFormatting-event toe aan de dataGridView, waarin men alle vervaldata voorafgaand aan de actuele datum vet weergeeft.
*/
public void FormLoadCustomize( Form WindowsForm)
{
MercatorUi.Forms.Hist. HistForm HistForm = (MercatorUi.Forms.Hist. HistForm )WindowsForm;
HistForm.dataGridView.CellFormatting += new DataGridViewCellFormattingEventHandler (dataGridView_CellFormatting);
}
public void FormClosedCustomize( Form WindowsForm)
{
MercatorUi.Forms.Hist. HistForm HistForm = (MercatorUi.Forms.Hist. HistForm )WindowsForm;
HistForm.dataGridView.CellFormatting -= new DataGridViewCellFormattingEventHandler (dataGridView_CellFormatting);
}
void dataGridView_CellFormatting( object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView dataGridView = ( DataGridView )sender;
if ((dataGridView.Columns[e.ColumnIndex].Name == "echeance" ) && (dataGridView.Rows[e.RowIndex].Cells[ "echeance" ].Value != DBNull .Value))
{
if (System. Convert .ToDateTime(e.Value) < DateTime .Now)
e.CellStyle.Font = new Font (e.CellStyle.Font, FontStyle .Bold);
}
}
}
}