U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Een barcode weergeven in de configureerbare schermen

0000003142     -      20-03-2023

Mercator 10.10 of later laat toe een barcode weer te geven in al zijn configureerbare schermen, waarvan de inhoud kan worden berekend. Dit gebeurt door het toevoegen van een PictureBox via de scherminstellingen. Dit object heeft een eigenschap Code die werkt als een Expressie. Met de code is het mogelijk om de inhoud van de methode Evaluate te plaatsen, die een object van het type System.Drawing.Image retourneert.

Bijvoorbeeld, in een scherm van een document uit het commercieel beheer is deze barcode van het type Code128

kan worden weergegeven met deze code

Zoom
public static Image Evaluate(MercatorUi.MovableControls.MovablePictureBox currentPictureBox)
{
    // enter your customized code here 
    MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)currentPictureBox.Form;
    if (billingForm.BillingEngine.IsNew)
        return null;
    else
        return MercatorController.xFunctions.xLinearBarCode(
            MercatorController.LinearBarcodeEnum.Code128,
            billingForm.BillingEngine.PiedsVRecord.JOURNAL.PadRight(5) + billingForm.BillingEngine.PiedsVRecord.PIECE.ToString().PadLeft(10),
            currentPictureBox.Size,
            true);
}

 

Ook deze QR-code

kan worden weergegeven met deze code

Zoom
public static Image Evaluate(MercatorUi.MovableControls.MovablePictureBox currentPictureBox)
{
    // enter your customized code here
    MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)currentPictureBox.Form;
    if (billingForm.BillingEngine.IsNew)
        return null;
    else
        return MercatorController.xFunctions.xQrCode(
            billingForm.BillingEngine.PiedsVRecord.JOURNAL.PadRight(5) + billingForm.BillingEngine.PiedsVRecord.PIECE.ToString().PadLeft(10),
            Api.Min(currentPictureBox.Width, currentPictureBox.Height),
            false);
}

 

In de signaletieken worden de barcodes berekend wanneer de fiche wordt gelezen. In de andere schermen gebeurt de berekening bij de eerste weergave.

Het is echter mogelijk een herberekening van de barcode te veroorzaken vanuit één of meer andere objecten van de fiche (hier zonder de fiche te wijzigen). Daarvoor is het nodig de PictureBox via zijn RefreshedBy-eigenschap aan dit of deze objecten te binden. Dit laatste kan één of meer ID's bevatten (op te sommen, één element per regel) die corresponderen met deze objecten die de herberekening van de barcode moeten veroorzaken.
Ter herinnering: de ID van een object is beschikbaar in zijn eigenschappenvenster en kan gemakkelijk worden gekopieerd.

Deze QR-code bevat bijvoorbeeld het adres van een klant en is zichtbaar op de signaletiek van de klant.

Het wordt geproduceerd door deze code, die straat, postcode en stad aan elkaar koppelt.

Zoom
public static Image Evaluate(MercatorUi.MovableControls.MovablePictureBox currentPictureBox)
{
    // enter your customized code here
    MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)currentPictureBox.Form;
    if (string.IsNullOrWhiteSpace(sigForm.DataSourceRow["C_ID"].ToString()))
        return null;
    else
        return MercatorController.xFunctions.xQrCode(
            sigForm.DataSourceRow["C_ADRESSE"].ToString() + " " + sigForm.DataSourceRow["C_CODEP"].ToString() + " " + sigForm.DataSourceRow["C_VILLE"].ToString(),
            Api.Min(currentPictureBox.Height, currentPictureBox.Width),
            false);
}


Om een automatische verversing van de QR code te veroorzaken wanneer het adres wordt gewijzigd door de gebruiker, moeten de ID's van de tekstBoxen C_ADRESSE, C_CODEP en C_VILLE worden opgenomen in de RefreshedBy eigenschap van de PictureBox.

 

Opmerkingen :

  • Het is niet nodig deze barcode op te slaan in de database. Daarom mag de eigenschap Source van de PictureBox leeg blijven.
  • De hier beschreven functionaliteit is niet beperkt tot barcodes. Aangezien de methode Evaluate een object van het type System.Drawing.Image retourneert, kan ze worden toegepast op elk type afbeelding.