Met de beschrijving van deze programmatie wordt aangetoond hoe het formaat van een afbeelding bij het opladen van een signaletiek kan aangepast worden. Het voorbeeld is gemaakt voor de signaletiek Artikels en een veld van de tabel STOCK, S_IMAGE genaamd, van het type image of varbinary (MAX). Het event PictureSelected van de MovablePictureBox wordt uitgevoerd. Dit event zorgt er voor dat de afbeelding wordt geladen, hetzij door het menu, hetzij via drag & drop.
De waarde "1CD6B224F1" in de code van deze customiser SigStock hieronder moet door de ID van de gebruikte PictureBox worden vervangen.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Drawing;
namespace SigStock
{
public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
{
private Size desiredSize = new Size(80, 80);
public void FormLoadCustomize(Form form)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
MercatorUi.MovableControls.MovablePictureBox pictureBox = (MercatorUi.MovableControls.MovablePictureBox)sigForm.MovableControls["1CD6B224F1"];
pictureBox.PictureSelected += new EventHandler(pictureBox_PictureSelected);
}
public void FormClosedCustomize(Form form)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
MercatorUi.MovableControls.MovablePictureBox pictureBox = (MercatorUi.MovableControls.MovablePictureBox)sigForm.MovableControls["1CD6B224F1"];
pictureBox.PictureSelected -= new EventHandler(pictureBox_PictureSelected);
}
private void pictureBox_PictureSelected(object sender, EventArgs e)
{
MercatorUi.MovableControls.MovablePictureBox pictureBox = (MercatorUi.MovableControls.MovablePictureBox)sender;
if ((pictureBox.BinaryValue != null) && (pictureBox.BinaryValue is byte[]) && (((byte[])pictureBox.BinaryValue).Length > 0))
{
Image img = Api.BytesToImage((byte[])pictureBox.BinaryValue);
if ((img.Width == desiredSize.Width) && (img.Height == desiredSize.Height))
return; // de afbeelding is reeds in de juiste afmeting
Image img2 = _Divers.ResizeImage(img, desiredSize);
pictureBox.BinaryValue = Api.ImageToBytes(img2);
Dialogs.Stop(string.Format("Het formaat van de afbeelding is gewijzigd: {0}x{1} !", desiredSize.Width, desiredSize.Height));
}
}
}
}