Mit Hilfe der Maskensteuerung ist es beispielsweise möglich abhängig von Feldwerten Elemente in der Maske zu aktivieren bzw. zu deaktivieren oder ganz auszublenden. Dazu werden sogenannte Form-Events implementiert.
Hierbei wird die Klasse BAFormEventsBase erweitert und das Attribut BAFormEventsImplementation gesetzt. Das Attribut erhält eine eindeutige Guid und einen Namen.
[BAFormEventsImplementation("[INSERT UNIQUE GUID]", "[INSTERT TRANSLATION GUID]")]
public class MyFormEvents : BAFormEventsBase
{ ... }
Folgende Events existieren
BeforeOpeningWird vor allen Berechnungen oder Laden der Daten ausgeführt.OnOpeningWird vor dem Öffnen ausgeführt.OnRefreshWird beim Aktualisieren ausgeführt. Wird in der Basisklasse beiOnOpeningausgeführt.OnSavedWird beim Speichern ausgeführt. Wird in der Basisklasse beiOnOpeningausgeführt.
Maskensteuerelemente beeinflussen
Mit den Hilfsmethoden AddAttributeToControl(s) kann man Attribute bestimmten Steuerelementen hinzufügen. Man kann das Steuerelement selbst ermitteln oder über
- den Feldnamen,
- den Typen des Steuerelementes,
- den Relationstypen / Relationskategorie
bestimmen.
Beispiel: Ausblenden des Steuerelementes für den Feldnamen LastName eines Kontaktes.
public override void OnOpening(FormEventsParameters parameters)
{
base.OnOpening(parameters);
AddAttributeToControl(parameters, nameof(OrmContact.LastName), AttributeEnum.Skip);
}
Möglichkeiten von AttributeEnum
ReadOnlyLesemodusSkipAusblenden (Feld wird nicht gerendert)VisibleAusblenden (Feld wird unsichtbar gerendert)ReadOnlyIfNotEmptyLesemodus, wenn das Feld nicht leer ist.SkipIfNotEmptyAusblenden, wenn das Feld nicht leer ist (Feld wird nicht gerendert)SkipRequiredValidationÜberspringt die Pflichtfeldvalidierung.
Ribbon bar-Steuerelemente beeinflussen
Auch die Aktionen in der Ribbon bar können beeinflusst werden. Um die richtigen Aktionen zu erhalten existiert die Hilfsmethode GetActionsOfType, um Aktionen eines bestimmten Typen zu ermitteln.
protected static IEnumerable<T> GetActionsOfType<T>(FormEventsParameters parameters) where T : ActionBase
Mit der Klasse RibbonActionsModificationModel kann man nun die DynamicClientVisibility beeinflussen.
public override void OnOpening(FormEventsParameters parameters)
{
base.OnOpening(parameters);
IEnumerable<ClientActionCreatePDFAndEMail> actions = GetActionsOfType<ClientActionCreatePDFAndEMail>(parameters);
foreach (ClientActionCreatePDFAndEMail action in actions)
{
RibbonActionsModificationModel modifier = new RibbonActionsModificationModel();
modifier.DynamicClientVisibility.Add(EnumActionVisibility.IfValueIsTrue);
modifier.AdditionalClientData.Add("TestValueIsTrue", ((OrmMyDataTable)parameters.Orm).BooleanField);
parameters.FormModel.RibbonModifications.Add(action.Id, modifier);
}
}


