Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Comment retrouver des contrôles sur une IFormForMovableControls ?

0000002797     -      09/12/2017

Mercator dispose de toute une série d'écrans paramétrables :

  • MercatorUi.Forms.Sig.SigForm : écrans de signalétiques
  • MercatorUi.Forms.Billing.BillingForm : documents de la gestion commerciale
  • MercatorUi.Forms.Transfer.TransferForm : transferts de dépôts
  • MercatorUi.Forms.Inventory.InventoryForm : inventaires
  • MercatorUi.Forms.Booking.BookingForm : écritures comptables
  • MercatorUi.Forms.Action.ActionForm : actions du CRM

Toutes ces fenêtres implémentent l'interface MovableControls.Interfaces.IFormForMovableControls. Celle-ci prévoit notamment la mise à disposition de ces méthodes, afin de pouvoir prendre la main sur les différents Movable Controls contenus dans ces fenêtres.

Zoom
List<Control> FindMovableControlsByType(Type t);
List<Control> FindMovableControlsBySource(string source);

 

Si une recherche autre que "par type" ou "par source" doit être effectuée, il est simple d'utiliser directement le dictionnaire requis par la même interface (dont la key est l'ID du contrôle) :

Zoom
Dictionary<string, Control> MovableControls { get; }

 

Par exemple, pour la recherche d'une expression par sa propriété Caption, on pourra utiliser la syntaxe Linq suivante :

Zoom
var exp = billingForm.MovableControls.Values.OfType<MercatorUi.MovableControls.MovableExpression>().Where(p => p.Caption == "Test").FirstOrDefault();

 

Notez que exp sera null si la MovableExpression n'est pas trouvée selon la condition reprise dans l'expression lambda.

Il ne faut pas oublier d'ajouter éventuellement "using System.Linq;" dans le haut du code.