Een geschreven handtekening via een touch screen registreren

0000002911     -      18-08-2023

Wij stellen u hierbij een voorbeeld voor implementatie van een SignPad met de functionaliteit een geschreven handtekening registreren van Mercator voor.

In Mercator ziet men het watermerk met de datum en het uur, om te voorkomen dat de handtekening later nog eens zou worden gebruikt.

Deze programmering is een startpunt voor een ontwikkelingsproject waarin een handtekening zou worden opgevangen en genummerd zodat deze kan bewaard worden in de database van Mercator. De code is gebouwd rond het upgraden van de abstracte klasse MercatorSignPad.SignPad opgenomen in MercatorTunnel.dll. Hierdoor is geen programmatie in code op maat van de verschillende oproepen die Mercator aan de SignPad doet, nodig. Het volstaat dus om:

  • Een klasse die de abstracte klasse implementeert te creëren, en vooral de GetSignature methode
  • Deze klasse aan de hand van de Main-customizer te instantiëren en deze instantie in MercatorUi.Globals.SignPad op te slaan..

De uit te voeren abstracte klasse, wordt als volgt gedefinieerd:

Zoom
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 van de Main-customizer:

Zoom
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;
            }
        }
    }
}

 

Het volledige project is in het hierbij gevoegde zip-bestand. Om dit te kunnen compileren, dien je de volgende referenties toe te voegen :

  • Naar de assemblies van Mercator: MercatorUi.dll, MercatorTunnel.dll et MercatorComponents.dll
  • naar C:\Windows\assembly\GAC_64\Microsoft.Ink\6.1.0.0__31bf3856ad364e35\Microsoft.Ink.dll

Naar de assemblies van Mercator

In de code in deze klasse is het nodig om de eigenschap enabled van de SignPad op true, te zetten om aan te geven aan de Mercator, dat het op een gegeven moment kan worden gebruikt.


Alles kan getest worden zonder een touch screen. De muis zal de stylus vervangen.



Te laden : 0000002911.zip (9 Kb - 12-02-2019)