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

Widgets in het hoofdscherm van Mercator

0000002345     -      30-08-2021

Mercator (versie 8.5 of hoger) laat ons toe om geschreven .NET componenten, widgets genaamd, toe te voegen in het hoofdscherm. Deze componenten moeten zich inschrijven op de klasse MercatorUi.Widgets.WidgetBaseControl. Een assembly bevat een of meerdere widgets die gecreëerd zullen worden buiten Mercator (Visual Studio). Vervolgens, kan men de gewenste widget op het scherm plaatsten door een simpele "Drag & drop" met de assembly (.dll) in Mercator.

Een WidgetBaseControl is eigenlijk een UserControl. Het bevat deze eigenschappen:

  • bool Sizable : de grootte van de control kan gewijzigd worden door de gebruiker
  • bool Closable : de control heeft een knop die ons toe laat te sluiten.
  • bool Fill: de control neemt alle beschikbare ruimte van het scherm in, en past zijn grootte automatisch aan.
  • bool SaveSize: de grootte van de widget wordt bewaard bij het sluiten van de sessie (zoniet, zal de control de gecodeerde grootte aannemen).

en deze events:

  • EventHandler Shown :wanneer de widget helemaal geïnstantieerd is en correct geplaatst is in het scherm van Mercator.
  • DestroyEventHandler Destroy : wanneer de widget zal gesloten worden, hetzij omdat de gebruiker op het kruisje heeft geklikt, of omdat de sessie van de gebruiker voorbij is. In het eerste geval kunnen we de property Cancel van de eventargs op true zetten om de sluiting van de widget te voorkomen.

Het tonen en positioneren van widgets wordt bewaard in het gebruikersprofiel. Het tabblad interface van "Tools/Gebruikers" laat ons toe om een nieuwe *.mwid fiche aan te maken die de instellingen van de widgets voor deze gebruiker bevat waarvan men de fiche aanpast. Deze fiche kan vervolgens worden overgezet naar andere gebruikersprofielen. Dit laat ons toe om snel een configuratie van widgets te dupliceren.

In hetzelfde tabblad, vinden we ook een checkbox "Wijzigingen blokkeren" die laat ons toe om widgets te blokkeren:

  • verbod om nieuwe widgets toe te voegen
  • vebod om widgets te sluiten
  • verbod om widgets te verplaatsen

Het lijks ons niet realistisch om dit aan te kruisen in een omgeving waarin dezelfde gebruiker meerdere schermen gebruikt. Het zal snel een situatie uitlokken waarin een widget onzichtbaar zal worden door de verandering van de grootte van de schermen en dus zal de beweging van het scherm onmogelijk zijn. (Als men wenst om de sluiting eenvoudig te voorkomen, moet men leren werken met de property Cancel van het DestroyEventArgs.)

Optioneel, kan een widget één of meerdere interfaces implementeren, die gaan het voorkomen van de method RefreshContent() vereisen.

  • Widgets.Interfaces.IRefreshActions : de method RefreshContent van de widget zal automatisch opgeroepen worden na het registreren van een actie
  • Widgets.Interfaces.IRefreshBillings : de method RefreshContent van de widget zal automatisch opgeroepen worden na het registreren van een document in het commercieel beheer
  • Widgets.Interfaces.IRefreshBookings : de method RefreshContent van de widget zal automatisch opgeroepen worden na het registreren van een boekhoudkundige afschrijving
  • Widgets.Interfaces.IRefreshInventories : de method RefreshContent van de widget zal automatisch opgeroepen worden na het registreren van een inventaris
  • Widgets.Interfaces.IRefreshTransfers : de method RefreshContent van de widget zal automatisch opgeroepen worden na het registreren van een depottransfer

Een widget moet gecompileerd worden voor het framework 4.0. Het heeft volgende referenties nodig: MercatorTunnel.dll, MercatorUi.dll et MercatorComponents.dll, deze bevinden zich in de hoofddirectory van Mercator of in de directory met lokale bestanden.

Indien men wenst om een widget te creëeren op basis van een nieuw project, moet men volgende procedure volgen in Visual Studio:

  • Een nieuw project aanmaken van het type "Library"
  • De fiche Class1.cs verwijderen die automatisch wordt aangemaakt in het project
  • De hierboven vermelde referenties toevoegen
  • Op het project, via rechtsklik, een nieuw element toevoegen en kiezen voor "UserControl"
  • De code van de usercontrol aanpassen, en de lijn beginnend met "public partial class", UserControl vervangen door MercatorUi.Widgets.WidgetBaseControl 

Enkele voorbeelden:

Alle voorbeelden zijn voorzien van de volledige bron, compatibel met Visual Studio. De dll bevind zich in \Bin\Debug en is direct uitvoerbaar.