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

XAML-instellingen voor schermbewerkingen

0000002823     -      01-06-2018

MercatorPenguin 2.0 maakt het mogelijk om gegevens binnen Mercator te wijzigen. Hiervoor is het noodzakelijk om schermen in te kunnen stellen die beschikbaar zijn in de mobiele applicatie. Eigenlijk maakt XAML gebruik van de EditControls, die eigen zijn aan MercatorPenguin. Standaardbesturingselementen van Xamarin Forms kunnen ook gebruikt worden. Dit zal voornamelijk het geval zijn voor het Label, een control die het mogelijk maakt om niet wijzigbare informatie weer te geven.

Zoals voor bundels van het type , is het mogelijk om een waarde van een eigenschap te veranderen door de inhoud van een kolom in de DataRow. (DataRow = een volledig record uit de tabel ACTION voor een CRM-actie, een record uit het informatiebestand klanten,…) Hiervoor volstaat het om het karakter @ voor de kolomnaam te plaatsen.

Bijvoorbeeld: het weergeven van C_ID van een klant die aan een actie gekoppeld is..

<Label Text="@ID_SIG" FontSize="12" />

EditEntry

Het object EditEntry kan gebruikt worden om vrije tekst of getallen op één regel in te geven. De kolom uit de DataRow is gekoppeld aan de eigenschap Source van het object. Het numerieke toetsenbord wordt niet automatisch gedetecteerd door MercatorPenguin en het object gedraagt zich verschillend in functie van deze eigenschap: volledig toetsenbord, numeriek klavier. In het geval van een numeriek type met decimalen, is het mogelijk om in de eigenschap Decimals het aantal decimalen dat u wenst. De property UpperCase kan op ‘true’ of ‘false’ geplaatst worden om automatisch hoofdletters in te vullen.

<m:EditEntry Placeholder="Sujet"  Source="objet" HorizontalOptions="FillAndExpand" />

De inhoud die ingevoerd is in een EditEntry kan gevalideerd worden (Dit is afhankelijk van de gekoppelde bron). Dit is het geval voor velden zoals BTW-nummer, bankrekeningen,.. Het is belangrijk om te weten dat deze validatie pas gebeurt tijdens het bewaren en niet tijdens het invoeren. In dit geval zal er een bericht weergegeven worden, de focus wordt geplaatst in het veld waarvan de inhoud zojuist geweigerd is.

Een EditEntry kan ook automatisch een verbinding met een informatiebestand bieden, zoals crosslinks tussen de informatiebestanden. Deze link wordt herkend door MercatorPenguin door de bron van de EditEntry. Eens de link actief is, zal de validatie van het virtueel klavier weergegeven worden, indien nodig wordt er een lijst weergegeven die het gewenste formulier selecteert.

Als een EditEntry gekoppeld is aan een informatiebestand, is het raadzaam om een object van het type TargetSigLabel in de buurt te plaatsen. In het TargetSigLabel is de property Origin verplicht, deze moet de bron van het EditEntry-object bevatten.

Voorbeeld van EditEntry en het bijbehorende TargetSigLabel.

<StackLayout Orientation="Horizontal">
<m:EditEntry Placeholder="Article" Source="c_id_art" Margin="0,0,25,0" WidthRequest="120" />
<m:TargetSigLabel Origin="c_id_art" Font="Medium" VerticalOptions="Center" HorizontalOptions="FillAndExpand" />
</StackLayout>

Het is mogelijk om het weergegeven label te wijzigen, aan de ene kant wordt het informatiebestand geselecteerd, aan de andere kant staat het TargetSigLabel. Hiervoor moet u de bijbehorende scalaire SQL-functie wijzigen. Bijvoorbeeld in het geval van een artikel: dbo.LIBTARGETSIG_STOCK.

Deze functies zijn automatisch aangemaakt door MercatorPenguinServer, maar worden nooit bijgewerkt. Daarom is het toegestaan om de inhoud van deze functies te wijzigen en andere informatie weer te geven. Deze functie retourneert altijd een string. Hieraan kan je jouw gewenste informatie aan toevoegen.

De zoekopdracht in een EditEntry, die gekoppeld is aan een informatiebestand voert de Search-methode van MercatorUi.Sig.Sig uit. Het zoekalgoritme is dus identiek aan het zoekalgoritme dat in Mercator gebruikt wordt voor een vergelijkbare zoekopdracht. Bovendien is het mogelijk om in te grijpen in de customizer, bijvoorbeeld via het event BeforeSearch om zodoende de zoekopdracht te beïnvloeden. Het is mogelijk om de SQL-zoekquery aan te passen door de interface IStringUpdater te implementeren in de Sig customizer. De SQL-query wordt herkend door dit ID:

<ID>SIGSEARCH_STOCK_PENGUIN</ID> (STOCK wordt vervangen door het informatiebestand).


EditEditor

De EditEditor is een object waarmee je tekst over meerdere regels kan invoeren. Het wordt voornamelijk gebruikt voor het invoeren van memo’s die verbonden zijn met een SQL-kolom van het type VarChar(MAX). De koppeling wordt gemaakt via de eigenschap Source.

<m:EditEditor Source="note" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>

EditPicker

De EditPicker is het object waarmee u een waarde uit een lijst kiezen kan. Net als bij EditEntry moet de eigenschap Source vervolledigd worden om deze aan een kolom van de DataRow te koppelen. In het merendeel van de gevallen, is het niet nodig om zelf een lijst te definiëren: net als in Mercator, kan MercatorPenguin de inhoud van deze lijst bepalen op basis van de bron.

<m:EditPicker Source="s_id_rayon" HorizontalOptions="FillAndExpand" />

Indien u een aangepaste lijstbron wilt opgeven, kan u een van volgende mogelijkheden gebruiken: 

Alfanumerieke bron en de weergegeven waarde is de waarde die is opgeslagen in de DataRow

<m:EditPicker Source="c_myfield" HorizontalOptions="FillAndExpand">
<Picker.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Item 1</x:String>
<x:String>Item 2</x:String>
<x:String>Item 3</x:String>
</x:Array>
</Picker.ItemsSource>
</m:EditPicker>

Alfanumerieke bron en de weergegeven waarde is niet de waarde die is opgeslagen in de DataRow 

<m:EditPicker Source="c_myfield" HorizontalOptions="FillAndExpand">
<Picker.ItemsSource>
<x:Array Type="{x:Type m:ItemString}">
<m:ItemString Id="Id1" Lib="Item 1" />
<m:ItemString Id="Id2" Lib="Item 2" />
<m:ItemString Id="Id3" Lib="Item 3" />
</x:Array>
</Picker.ItemsSource>
</m:EditPicker>

Numerieke bron

<m:EditPicker Source="c_myfield" HorizontalOptions="FillAndExpand">
<Picker.ItemsSource>
<x:Array Type="{x:Type m:ItemInt}">
<m:ItemInt Id="1" Lib="Item 1" />
<m:ItemInt Id="2" Lib="Item 2" />
<m:ItemInt Id="3" Lib="Item 3" />
</x:Array>
</Picker.ItemsSource>
</m:EditPicker>

Het is ook mogelijk om een SQL-query mee te geven, deze zal gebruikt worden om de voorgestelde elementen te bepalen. Dit wordt gedaan via de eigenschap ReqSql. Deze SQL-query moet een enkele tabel genereren die bevat:

  • een enkele kolom van het type string
  • twee kolommen van het type string waarvan de eerste het weer te geven element bevat, de tweede kolom bevat het ID uit de database.
  • een eerste kolom van het type string, deze bevat het weer te geven element. En een tweede numerieke kolom die de sleutel uit de database bevat.
<m:EditPicker Source="c_myfield" HorizontalOptions="FillAndExpand" ReqSql="select mycol from MYTABLE order by mycol" />

We vestigen uw aandacht op het feit dat het aantal rijen dat naar de picker gestuurd moet worden redelijk moet blijven.


EditDatePicker

Met de EditDatePicker kunt u een datum invoeren. Het vereist een bron waarvan het type compatibel is met een datum. Dit moet worden aangegeven in de eigenschap Source.

<m:EditDatePicker Source="s_mydate" HorizontalOptions="FillAndExpand" />

EditDateTimePicker

Met de EditDateTimePicker kan u een datum en een uur ingeven. Het vereist een bron waarvan het type 'DateTime' is. Deze wordt ingevuld in de eigenschap Source.

<m:EditDateTimePicker Source="moment_1" HorizontalOptions="FillAndExpand" />

Omdat de control over 2 componenten beschikt, heeft deze de volgende eigenschappen: (component datum, component tijd):

  • WidthRequest1 et WidthRequest2
  • HeightRequest1 et HeightRequest2
  • MinimumWidthRequest1 et MinimumWidthRequest2
  • MinimumHeightRequest1 et MinimumHeightRequest2
  • HorizontalOptions1 et HorizontalOptions2
  • VerticalOptions1 et VerticalOptions2
  • Margin1 et Margin2

Deze eigenschappen zijn van toepassing op het component datum:

  • MinimumDate
  • MaximumDate

EditSwitch

De EditSwitch is een schakelaar die het equivalent is van een selectievak. Het is altijd gekoppeld aan een booleaanse kolom via de eigenschap Source.

<m:EditSwitch Source="fait" BackgroundColor="%ThemeColor%" />

EditImage

Met EditImage kan u een afbeelding weergeven en wijzigen die gekoppeld is aan een varbinary(max) kolom via de Source-eigenschap. De andere soorten afbeeldingen (afbeelding verbonden aan een URL of een afbeelding die verbonden is aan de naam van een bestand) worden niet meegerekend. 

<m:EditImage Source="s_image1" Margin="25,0,0,0" HorizontalOptions="FillAndExpand" HeightRequest="250" Aspect="AspectFill" />

Het wijzigen van de afbeelding wordt gedaan door een klik op de knop "Foto kiezen", deze biedt volgende mogelijkheden:

  • Choisir Existante: een foto kiezen uit de fotobibliotheek van het apparaat
  • Prendre Photo: gebruik het toestel om een foto te nemen
  • Touch Pad: geeft een scherm weer waarop je bijvoorbeeld een handtekening kan ingeven in 'Touch-Pad'-modus.

Dit object beschikt over de eigenschappen MaxWidth en MaxHeight, waarmee u de maximale grootte van een afbeelding kan ingeven in pixels. MercatorPenguin voert een verkleining uit. Dit is nodig, anders worden er te zware foto's naar de MercatorPenguinServer gestuurd omwille van hun hoge definitie. (De standaardwaarde is 640 x 480 pixels)

Via de optionele property ButtonText, is het mogelijk om de text van de knop 'Choisir Photo' te wijzigen.

Indien u wilt dat de knop 'Foto kiezen' geen dialoogvenster bevat, maar automatisch één van bovenstaande keuzes start. Dan moet u de eigenschap PhotoAction  toevoegen, deze moet dan één van volgende waarden bevatten:

  • ChooseExisting
  • TakePhoto
  • TouchPad

De default-value is Ask.


EditScanButton

Met de EditScanButton kan u uw mobiele camera als barcodelezer gebruiken. Deze knop moet aan een EditEntry -control gekoppeld worden om het resultaat van de scan weer te kunnen geven. Dit wordt gedaan door de eigenschap TargetSource in te vullen met de bron van de EditEntry. 

Voorbeeld met S_CLE1:

<StackLayout Orientation="Horizontal">
    <m:EditEntry Source="s_cle1" Placeholder="Clé 1" Margin="0,0,15,0" HorizontalOptions="FillAndExpand" />
    <m:EditScanButton TargetSource="s_cle1" />
</StackLayout>