Hoe controls terugvinden op een IFormForMovableControls?

0000002797     -      02-02-2018

Mercator heeft een hele reeks aanpasbare schermen:

  • MercatorUi.Forms.Sig.SigForm:  informatiebestanden
  • MercatorUi.Forms.Billing.BillingForm: documenten uit het commercieel beheer
  • MercatorUi.Forms.Transfer.TransferForm: transfer van depot
  • MercatorUi.Forms.Inventory.InventoryForm: inventaris
  • MercatorUi.Forms.Booking.BookingForm: boekingen
  • MercatorUi.Forms.Action.ActionForm: CRM-acties

Al deze schermen implementeren de interface  MovableControls.Interfaces.IFormForMovableControls. Dit omvat het beschikbaar stellen van deze methodes, zodat je de controle kunt overnemen van de verschillende Movable Controls die zich in het scherm bevinden.

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

 

Indien een opzoeking anders dan op “type” of op “bron” moet worden uitgevoerd, is het eenvoudiger om de dictionary te gebruiken (waarvan de key het ID van de control is).

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

 

Bijvoorbeeld bij het opzoeken van een expressie via de property Caption kunnen we volgende Linq syntax gebruiken.

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

 

Merk op dat exp null zal retourneren wanneer de MovableExpression niet gevonden wordt via de lambda-conditie.

Vergeet niet om “using System.Linq;” te vermelden bovenaan in de code.