Recorgnize the Modus change?


Hello Forum,


I have some ubound (no data source in New Item Menu) textboxes on a form. I fill them with a rule that queries the content.

My problem is: The user changes from Ok mode to another mode and the old (invalid) content of the textboxes are still showing. I want to write another rule that clears the content of the textboxes, if the user leaves the OK mode. So how can I recognize the change?

I have tried every Event in Inner and Before mode: With a rule that shows a Textbox if triggered. If the user is in OK mode and clicks in the Toolbar on Find or Add, no Event is triggered! No Textbox is showing.


How can I get a message if the user changes the form mode?







I have created a rule that adds a event handler to menu Items in the LoadForm event:

// Authour: Martin Salo                                                            23.Dez 2014
//    Description:
/*  There are unbound TextEdit controls on several document forms. If the form shows for
    example a invoice, queries are made to fill the TextEdit controls with additional data.
    Problem: If the user changes the from mode {Update, OK} to {Find,AddNew}, the TextEdit
    controls are still filled with the last shown data.
    Solution: Write a rule that clears the TextEdit controls.

    This rule adds Eventhandler to menu Items Search and AddNew and clears the TextEdit
    controls on switching the mode.

try {
    Form DocForm = pVal.Form;
    // Create EventHandler:
    SwissAddonFramework.UI.EventHandling.MenuEvents.MenuEventHandler MenuClickFunction =
        delegate (SwissAddonFramework.UI.EventHandling.MenuEvents.MenuClick eventVal) {
        try {
            Form CurrentForm = Form.GetFormFromUID(SwissAddonFramework.B1Connector.GetB1Connector().Application.Forms.ActiveForm.UniqueID);
            // List of forms where the TextEdit Controls are located:
            string[] FormTypes = new string[] {"133","139","140","141","142","143","149","179","180","181","182","60091","1470000200"};
            // If ActiveForm has a type from within the list, then clear the TextEdit Content:
            foreach (string FormType in FormTypes) {
                if (CurrentForm.Type == FormType) {
                    // Examine the FormMode:
                    if (CurrentForm.Mode != SwissAddonFramework.UI.Components.ModeComponent.FormModes.OK &&
                        CurrentForm.Mode != SwissAddonFramework.UI.Components.ModeComponent.FormModes.OK) {
                        // Clear the TextEdit controls:
                        TextEdit.GetFromUID(CurrentForm, "NI_00012").Value = "";
                        TextEdit.GetFromUID(CurrentForm, "NI_00016").Value = "";
                        TextEdit.GetFromUID(CurrentForm, "NI_00017").Value = "";

        } catch (Exception ex) {
            MessageBox.Show(ex.ToString(), "Ok");
    // Add event handler to Search menu:
    // Add event handler to AddNew menu:

} catch (Exception e) {
    string ExceptionStr = "Exception (R024): " + e.ToString();
    MessageBox.Show(ExceptionStr, "Ok");

return true;




Please sign in to leave a comment.

Didn't find what you were looking for?

New post