Sinds versie 10.10 is deze code verouderd. Het is mogelijk de roosters van de historieken in het menu "Vensters" zonder programmatie te wijzigen.
Deze configuratie toont hoe u, alleen bij sequentie VEN, een vervaldatum kan toevoegen in de klantenhistoriek (menu "Vensters"). In dit voorbeeld laten we u ook zien hoe u de vervaldatum in het vet kan zetten voor de datum van vandaag.
Dit wordt gedaan door een HistCli customizer te maken die maar één interface aanspreekt: IGridUnifiedCustomizer.
De code bevat 3 delen die verenigd worden via het GridUnifiedCustomizerContainer object:
- StringUpdater : die de SQL query kan wijzigen. Deze code wordt altijd eerst aangeroepen en wordt gebruikt om onderstaande onderdelen in te stellen.
- GridUpdater : die tegelijkertijd met FormGridCustomize werkt.
- PrefuserKeyCompl : die ons toelaat om een extra tekenreeks op te geven die de volgorde en breedte van de kolommen kan bewaren.
- Dispose : die slechts één keer kan uitgevoerd worden om het rooster weg te gooien.
Deze programmering is compatibel met het contextmenu "Opnieuw zoeken" van het rooster.
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Drawing;
using MercatorUi.GridPro;
// <CompileWithRoslyn />
namespace HistCli
{
public class Customizer : MercatorUi.ICustomizers.IGridUnifiedCustomizer
{
public void GridUnifiedCustomize(GridUnifiedCustomizerContainer gridUnifiedCustomizerContainer)
{
gridUnifiedCustomizerContainer.StringUpdater = (reqSql) =>
{
string journal = Api.StrExtract(reqSql, "pieds_v.journal='", "'").TrimEnd();
if (journal == "VEN")
reqSql = reqSql.Replace("date,", "date,echeance,");
gridUnifiedCustomizerContainer.GridUpdater = () =>
{
if ((journal == "VEN") && !gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
{
gridUnifiedCustomizerContainer.Grid.Columns.Add("echeance", "Echéance");
gridUnifiedCustomizerContainer.Grid.Columns["echeance"].Width = 85;
gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DataPropertyName = "echeance";
gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DefaultCellStyle.Format = Api.Iif(MercatorUi.Globals.DateMDY, "MM/dd/yyyy", "dd/MM/yyyy");
gridUnifiedCustomizerContainer.Grid.CellFormatting += Grid_CellFormatting;
}
else if ((journal != "VEN") && gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
{
gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
gridUnifiedCustomizerContainer.Grid.Columns.Remove("echeance");
}
};
gridUnifiedCustomizerContainer.PrefuserKeyCompl = journal == "VEN" ? journal : "";
gridUnifiedCustomizerContainer.Dispose = () =>
{
gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
};
return reqSql;
};
}
void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView grid = (DataGridView)sender;
if ((grid.Columns[e.ColumnIndex].Name == "echeance") && (grid.Rows[e.RowIndex].Cells["echeance"].Value != DBNull.Value))
{
if (Convert.ToDateTime(e.Value) < DateTime.Now)
e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
}
}
}
}