Modale Dialoge öffnen Sie mit der Methode "ShowDialog". Sie müssen lediglich ein Design der Kategorie "Teilansicht" ("Global.ACUsages.DULayout") hinzufügen. Übergeben Sie den Designnamen im zweiten Parameter:
ShowDialog(this, "MyDesignName");
Der Dialog erhält den Datenkontext bzw. BSOACComponent von der übergebenen Instanz die im ersten Parameter übergeben wurde. In der Regel ist das die this-Referenz.
Das folgende Beispiel zeigt ein Design mit drei Tasten, das per ShowDialog angezeigt werden soll:
Die letzte Taste ist mit der Methode "CloseTopDialog" verbunden, die bereits in der ACComponent-Klasse selbst deklariert ist. Sie sorgt dafür, dass der oberste modale Dialog geschlossen wird.
Die anderen zwei Methoden sind im Geschäftsobjekt selbst deklariert:
Innerhalb dieser Methoden wird wiederum "CloseTopDialog" aufgerufen. Zusätzlich wird in der lokalen Eigenschaft "DialogResult" gespeichert, welche Taste der Benutzer gedrückt und welches Material er in der ComboBox ausgewählt hat. Sie werden sich jetzt fragen, wozu SelectedMaterial nochmals explizit in die Eigenschaft "DialogResult.ReturnValue" kopiert wird? Ja, dies macht innerhalb des Geschäftsobjektes selbst keinen Sinn, jedoch wird DialogResult in der folgenden Methode zurückgegeben:
Diese Methode ist eine Hilfsmethode um einen Filter auf bestimmte Materialien zu filtern. Mit der Search()-Methode werden die Datensätze von der Datenbank geholt. Danach der modale Dialog geöffnet, damit der Anwender ein Material in der Combobox auswählen kann. Nachdem eine der Tasten gedrückt worden ist, wird der Dialog geschlossen und das Programm gibt dann den "DialogResult" in der letzten Programmzeile zurück.
Vielleicht ahnen Sie jetzt wozu diese Methode benötigt wird:
"OpenMaterialBSO" ist eine Methode aus einem anderen Geschäftsobjekt, das eine Materialauswahl benötigt. Dafür instanziiert es als Kindinstanz das obige Geschäftsobjekt und ruft die Methode "ShowDialogSelectMaterial" auf.