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 ToolKit creëren voor MercatorPelican

0000003463     -      28-10-2026

MercatorPelican laat toe om een onbeperkt aantal ToolKits op maat in te richten. Deze ToolKits steunen op het programmeerconcept Blazor Hybride .NET 10. Om een nieuwe ToolKit te creëren, kan men een voorbeeld downloaden uit deze rubriek. Het is ook mogelijk om te starten vanaf een nieuw project van het type "klassenbibliotheek" (class library) in Visual Studio. 

Het voorbeeld wordt hier gegeven voor een multiplatformproject. In een ToolKit moet men slechts twee omgevingen onderscheiden:

  • WinForm: voor Windows 
  • Core Only: die gebruikt wordt voor Android, iOS, web IIS en web Linux

Het is aanbevolen om het project te vereenvoudigen als men van bij het begin weet dat een platform nooit gebruikt zal worden.

Hier is de standaardcode van een csproj-bestand voor een ToolKit-project:

Zoom
<Project Sdk="Microsoft.NET.Sdk.Razor">

  <PropertyGroup>
    <Configurations>DebugCoreOnly;DebugWinforms;ReleaseCoreOnly;ReleaseWinforms</Configurations>
    <ImplicitUsings>enable</ImplicitUsings>
    <FileVersion>1.0.0.100</FileVersion>
    <Version>1.0.0.0</Version>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)'=='DebugCoreOnly' Or '$(Configuration)'=='ReleaseCoreOnly'">
    <TargetFramework>net10.0</TargetFramework>
    <UseMaui>false</UseMaui>
    <UseWindowsForms>false</UseWindowsForms>
    <EnableDefaultCssItems>false</EnableDefaultCssItems>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)'=='DebugWinforms' Or '$(Configuration)'=='ReleaseWinforms'">
    <TargetFramework>net10.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)'=='DebugCoreOnly'">
    <DefineConstants>TRACE;DEBUG;COREONLY</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)'=='ReleaseCoreOnly'">
    <DefineConstants>TRACE;COREONLY</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)'=='DebugWinforms'">
    <DefineConstants>TRACE;DEBUG;WINFORMS</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)'=='ReleaseWinforms'">
    <DefineConstants>TRACE;WINFORMS</DefineConstants>
  </PropertyGroup>
 
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
    <PackageReference Include="Microsoft.Data.SqlClient" Version="$(MicrosoftDataSqlClientVersion)" />
  </ItemGroup>
   <PropertyGroup>
    <SatelliteResourceLanguages>en;fr;nl;de</SatelliteResourceLanguages>
  </PropertyGroup>

  <ItemGroup Condition="'$(Configuration)'=='DebugCoreOnly' Or '$(Configuration)'=='ReleaseCoreOnly'">
    <Reference Include="MercatorTunnel">
      <HintPath>…\fw100CoreOnly\MercatorTunnel.dll</HintPath>
    </Reference>
    <Reference Include="MercatorUi">
      <HintPath>…\fw100CoreOnly\MercatorUi.dll</HintPath>
    </Reference>
    <Reference Include="MercatorBlazorComponents">
      <HintPath>…\fw100CoreOnly\MercatorBlazorComponents.dll</HintPath>
    </Reference>
    <Reference Include="MercatorPelican">
      <HintPath>…\fw100CoreOnly\MercatorPelican.dll</HintPath>
    </Reference>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

  <ItemGroup Condition="'$(Configuration)'=='DebugWinforms' Or '$(Configuration)'=='ReleaseWinforms'">
    <PackageReference Include="Microsoft.AspNetCore.Components.WebView.WindowsForms" Version="$(MicrosoftMauiControlsVersion)" />
    <Reference Include="MercatorTunnel">
      <HintPath>…\fw100Winforms\MercatorTunnel.dll</HintPath>
    </Reference>
    <Reference Include="MercatorUi">
      <HintPath>…\fw100Winforms\MercatorUi.dll</HintPath>
    </Reference>
    <Reference Include="MercatorBlazorComponents">
      <HintPath>…\fw100Winforms\MercatorBlazorComponents.dll</HintPath>
    </Reference>
    <Reference Include="MercatorPelican">
      <HintPath>…\fw100Winforms\MercatorPelican.dll</HintPath>
    </Reference>
  </ItemGroup>
 
</Project>

 

⚠️ De verwijzingen naar de assemblies moeten overeenstemmen met de platformen. De compilatie mislukt als een mix van assemblies wordt vastgesteld.

De assemblies zijn beschikbaar in twee zipbestanden, die in aparte mappen uitgepakt moeten worden (bijvoorbeeld fw100Winforms en fw100Coreonly), en kunnen gedownload worden via:

Het project moet vervolgens minstens deze drie bestanden bevatten:

1. _Imports.razor

Zoom
@using System.Net.Http
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using MercatorPelican
@using MercatorBlazorComponents

 

2. ToolKit.razor

Zoom
@inherits MercatorPelican.BaseClasses.ToolKitBase
@implements MercatorPelican.Interfaces.IToolKit

@* Hier uw Blazor-markup *@

 

3. ToolKit.razor.cs

Zoom
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MercatorApi;
using MercatorExtensions;
using System.Data;
using Microsoft.JSInterop;

namespace ItemInfo
{
    partial class ToolKit
    {
        public static MercatorPelican.ToolKitDescriptor Descriptor => new MercatorPelican.ToolKitDescriptor
        {
            TitleF = "Titel in het Frans",
            TitleN = "Titel in het Nederlands",
            TitleE = "Titel in het Engels",
            TitleD = "Titel in het Duits",
            DescriptionF = "Beschrijving in het Frans",
            DescriptionN = "Beschrijving in het Nederlands",
            DescriptionE = "Beschrijving in het Engels",
            DescriptionD = "Beschrijving in het Duits",
            BootstrapColums = MercatorPelican.ToolKitDescriptor.BootstrapColumsEnum.Sm12
        };

        public ToolKit()
        {
            Disposing += ToolKit_Disposing;
        }

        protected override void OnInitialized()
        {
            base.OnInitialized();
            …
        }

        private void ToolKit_Disposing(object sender, EventArgs e)
        {
            Disposing -= ToolKit_Disposing;
            …
        }
    }
}

 

Een ToolKit moet:

  • Overerven van MercatorPelican.BaseClasses.ToolKitBase. Dit biedt met name 
    • Een overridable methode: ButtonPreviousClicked
    • Een event Disposing
  • De interface MercatorPelican.Interfaces.IToolKit implementeren. Ze vereist de aanwezigheid van ToolKitDescriptor Descriptor.

Deze klasse ToolKitDescriptor laat toe om verschillende parameters eigen aan de ToolKit vast te leggen:

  • TitleF / N / E / D: titel in het Frans, Nederlands, Engels en Duits. Deze titel verschijnt op de knop waarmee je deze ToolKit opent.
  • DescriptionF / N / E / D: beschrijving, die kleiner verschijnt in diezelfde knop
  • MercatorUiMainInstanceNeeded: is de instantie van MercatorUi nodig voor deze ToolKit. Op true zetten bijvoorbeeld als een engine gebruikt wordt.
  • MercatorReportingInitNeeded: als de vorige parameter true is, moet dan ook de afdrukengine van Mercator geactiveerd worden.
  • SettingsType: type van een klasse (volgens conventie Settings) die toelaat om automatisch parameters toe te voegen in het bestand MercatorPelican.appsettings.json.
  • BootstrapColums: laat toe om automatisch de bootstrapklasse van de 4de div te bepalen: col-sm-x col-sm-offset-y.

💡 Als men wil dat de 4 standaard-div's uitgeschakeld worden en de bootstrap-presentatie niet gebruikt wordt, moet men deze code in de ToolKit plaatsen:

Zoom
protected override void OnInitialized()
{
    base.OnInitialized();
    MercatorPelican.Globals.ShowToolKitPage.ChangeDivClass(divContentClass: "", divContentStartClass: "", divContainerClass: "", ignoreBootstrapColums: true);
}

ShowToolKitPage is de razor-component die uw ToolKit host.

 

De compilatie van het project moet twee keer uitgevoerd worden:

  • Eén keer door in de configuratiekiezer DebugWinforms of ReleaseWinforms te kiezen: dit produceert de assembly voor Windows in \bin\DebugWinforms of \bin\ReleaseWinforms;
  • De tweede keer door DebugCoreOnly of ReleaseCoreOnly te selecteren: dit produceert de assembly voor de andere platformen in \bin\DebugCoreOnly of \bin\ReleaseCoreOnly.

 

De aldus geproduceerde assemblies worden beschikbaar gemaakt voor MercatorPelican door ze te plaatsen in de SQL Bestanden / Anderen van de bijbehorende Mercator, in een map MercatorPelican, met twee submappen CoreOnly en Winforms. De submappen fr, nl, … bevatten de eventuele satellietassemblies met de resources volgens taal.

pelican_assemblies_sql_files_nl

💡 De andere DLL's mogen niet in de SQL Bestanden geplaatst worden. MercatorPelican beschikt er al over omdat het dezelfde verwijzingen deelt.

Zodra een ToolKit op deze manier beschikbaar is gemaakt, volstaat het om aan MercatorPelican aan te geven dat het hem moet laden. Dit gebeurt via het bestand MercatorPelican.appsettings.json.

"ToolKits": "MyToolkit1,MyToolkit2",

 

 



Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)