AX 2012: SysOperation-Framework: Ein eigenes Formular als Dialog verwenden

Das SysOperation-Framework generiert den Dialog für den Benutzer üblicherweise auf Basis des verwendeten Data Contracts vollautomatisch, bietet aber auch die Möglichkeit ein eigenes Formular als Dialog einzubinden.

Screenshot

Dafür gibt es im Service Controller die Methode templateForm(), die auf einfache Art & Weise überschrieben werden kann:

protected FormName templateForm()
{
    FormName ret;

    ret = formStr(TutorialSysOperationDialog);

    return ret;
}

Ein über diese Methode eingebundenes Formular muss allerdings einigen Regeln folgen, damit es kompatibel mit dem SysOperation-Framework ist.

ScreenshotDie Form benötigt die folgenden Elemente:

  • Eine Gruppe namens DialogStartGrp
  • Ein Tab namens Tab
  • Für den Query eine eigene Gruppe namens QueriesGroup
  • Eine ButtonGroup mit OK und Cancel-Button (beispielsweise kopieren von PurchEditLines)

Das Design sollte über die folgenden Properties angepasst werden:

  • StatusBarStyle: SimpleWithoutClose
  • Frame: Dialog
  • HideToolbar: Yes

Weiters sind folgende Methoden zu überschreiben/erstellen:

  • formRun()
  • dialog()
  • controller()
  • closeOK()
public class FormRun extends ObjectRun
{
    Object dialogObject;
}

 

public SysOperationDialog dialog()
{
    if (dialogObject == null)
    {
        dialogObject = Dialog::getDialogFromCaller(this);
    }

    return dialogObject;
}

 

public TutorialSysOperationServiceController controller()
{
    return this.dialog().controller();
}

 

public void closeOk()
{
    // Validate
    if (this.controller().checkCloseDialog())
    {
        super();
    }
}

Die Methode closeOK() ist übrigens auch die ideale Stelle (vor dem Aufruf von checkCloseDialog()), um beispielsweise weitere Parameter an die Klassen zu übergeben.

 

Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu