Dit kan heel eenvoudig, omdat mercator zelf over deze functie beschikt (voor rayons/families/sub-families en de gammas)
Men moet de volgende velden toevoegen in de tabel STOCK:
alter table STOCK add
S_ID_RAY2 char(10) not null default '',
S_ID_FAM2 char(10) not null default ''
Men moet de combobox in de setupmodus associëren met deze 2 velden, en er 2 SQL-queries aan toevoegen.
- select nom,id from rayons order by nom
- select nom,id from familles where id_rayon=@id order by nom
We moeten de propertie ParentField van de combo S_ID_FAM2 geassocieerd met de waarde S_ID_RAY2 koppelen aan deze combo's.De SelectedValue van de combo zal worden doorgegeven als @id in de SQL-query. Deze verandering van de propertie wordt eenvoudig gedaan in de customizer:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
namespace SigStock
{
public class Customizer : MercatorUi.ICustomizers.IComboListPreCustomizer
{
public void ComboListPreCustomize(MercatorUi.MovableControls.Interfaces.IMovableComboBoxOrTree combo)
{
if (combo.Source == "S_ID_FAM2")
combo.ParentField = "S_ID_RAY2";
}
}
}
Doe anders niets. Mercator doet de rest.
Sinds versie 10.6.106 van MercatorUi.dll is dit mogelijk in alle aanpasbare schermen.
Hoe is het mogelijk om 2 van elkaar afhankelijke comboboxen te plaatsen in een informatiebestand? Bijvoorbeeld om te beschikken over een tweede spel "rayons-families". Dit in combinatie met de velden S_ID_RAY2 en S_ID_FAM2 uit de tabel STOCK.