Nous proposons ici un exemple d’implémentation d'un SignPad compatible avec la fonctionnalité Enregistrer une signature manuscrite de Mercator.
Dans Mercator, on voit que l'image est "taguée" avec la date et l'heure, afin d'empêcher une réutilisation ultérieure de la signature.
Cette programmation est un point de départ pour tout autre projet de développement dont l'objet serait de capter une signature et de la numériser afin de la stocker dans la base de données de Mercator. Le code est construit autour du surclassement de la classe abstraite MercatorSignPad.SignPad contenue dans MercatorTunnel.dll. Ceci permet de ne pas devoir programmer dans du code sur mesure les différents appels que Mercator peut faire à ce SignPad. En définitive, il suffit donc de
- Créer une classe qui implémente la classe abstraite, et principalement la méthode GetSignature
- Instancier cette classe via le customizer Main et stocker cette instance dans MercatorUi.Globals.SignPad.
La classe abstraite à implémenter est définie comme suit :
public abstract class SignPad : IDisposable
{
protected SignPad();
public bool Enabled { get; }
public abstract string Lib { get; }
protected bool enabled { get; set; }
public virtual void Dispose();
public abstract System.Drawing.Image GetSignature(System.Windows.Forms.Form owningForm, string msg);
public virtual void OnEnabledChanged();
}
Code du customizer Main :
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using DevComponents.DotNetBar;
// <ReferenceInclude>"SignPadTouchScreen.dll"</ReferenceInclude>
// <CompileWithRoslyn />
namespace Main
{
public class Customizer : MercatorUi.ICustomizers.IExec
{
public void Main(MercatorUi.ICustomizers.ExecAction Action)
{
if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
{
Globals.SignPad = new SignPadTouchScreen.SignPadTouchScreen();
}
else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
{
Globals.SignPad?.Dispose();
Globals.SignPad = null;
}
}
}
}
Le projet complet est dans le fichier zip ci-joint. Pour pouvoir le compiler, il faut ajouter ces références :
- vers les assemblies de Mercator : MercatorUi.dll, MercatorTunnel.dll et MercatorComponents.dll
- vers C:\Windows\assembly\GAC_64\Microsoft.Ink\6.1.0.0__31bf3856ad364e35\Microsoft.Ink.dll
La DLL ainsi produite doit être placée dans le répertoire principal de Mercator.
Dans le code de cette classe, il est nécessaire de mettre à un moment donné la propriété enabled de ce SignPad à true, pour indiquer à Mercator qu'il peut être utilisé.
Le tout peut être testé sans écran tactile. La souris remplace alors le stylet.
A télécharger :
0000002911.zip (9 Kb - 12/02/2019)