Mercator 10.10 ou ultérieur permet d'afficher un code-barres dans tous ses écrans paramétrables, dont le contenu peut être calculé. Ceci se fait par l'ajout d'une PictureBox via le paramétrage d'écran. Cet objet dispose d'une propriété Code qui fonctionne comme pour une Expression. Le code permet de placer le contenu de la méthode Evaluate qui renvoie un objet de type System.Drawing.Image.
Par exemple, dans un écran d'un document de la gestion commerciale, ce code-barres de type Code128
peut être affiché grâce à ce code
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);
}
De même, ce code QR
pourra être affiché grâce à ce code
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);
}
Dans les signalétiques, les codes-barres sont calculés lors de la lecture de la fiche. Dans les autres écrans, le calcul est effectué lors de l'affichage initial.
Il est possible toutefois de provoquer un recalcul du code-barres au départ d'un ou de plusieurs autres objets de la fiche (ici sans changer de fiche). Pour cela, il faut lier la PictureBox à ce ou ces objets par sa propriété RefreshedBy. Cette dernière peut contenir un ou plusieurs ID (à mettre en liste, un élément par ligne) correspondant à ces objets qui devront provoquer la réévaluation du code-barres.
Pour rappel, l'ID d'un objet est disponible dans sa fenêtre de propriétés et est facilement copiable.
Par exemple, ce code QR contient l'adresse d'un client et est visible dans le signalétique clients.
Il est produit par ce code, qui concatène la rue, le code postal et la ville.
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);
}
Afin de provoquer un rafraîchissement automatique du code QR lors d'une modification de l'adresse par l'utilisateur, il faut lister les ID des textBox C_ADRESSE, C_CODEP et C_VILLE dans la propriété RefreshedBy de la PictureBox.
Notes :
- Il n'est pas nécessaire de sauvegarder ce code-barres dans la base de données. Dès lors, la propriété Source de la PictureBox peut rester vide.
- La fonctionnalité décrite ici ne se limite aux codes-barres. Etant donné que la méthode Evaluate renvoie un objet de type System.Drawing.Image, elle peut s'appliquer à n'importe quel type d'image.