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
April 2024
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 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