Dialog-Editor Teil 2
Verfasst: 24.02.2024, 17:10
Dieser Teil beschäftigt sich mit den internen Abläufen bei Dialogen bzw. wie Dialoge aufgerufen werden. Hierfür müssen erst einmal einige Begriffe definiert werden, damit sich das etwas trockene Thema flüssiger liest.
Sequenz:
Es gibt zwei Sequenzen, eine UI- und eine Execute-Sequenz. Wir befassen uns allerdings nur mit der UI-Sequenz. Zu finden sind die Sequenzen auf der Seite Benutzerdefinierte Aktionen.
Der Aufbau ist Name, Sequenz, Bedingung, Typ. Name bezeichnet den Namen der Aktion. Sequenz ist die Nummer in der Abfolge, beginnend bei 1. Typ zeigt an, um was für eine Art Aktion es sich handelt.
Bedingung:
Auf Bedingungen sind wir in einem anderen Tutorial bereits eingegangen, kurz ist es Abfrage die TRUE, FALSE oder ERROR zurückgibt. Letztere, wenn die Syntax nicht stimmt. Ist eine Bedingung leer gilt diese als TRUE und wird ausgeführt. Ergibt der Ausdruck FALSE, wird diese Aktion übersprungen.
Aktion:
Im Prinzip handelt es sich hierbei um einen Funktionsaufruf, der irgendetwas abarbeitet und dann mit 0 = ERROR_SUCCESSED oder einem anderen Code zurückkehrt, welcher meistens eine Fehlermeldung ist, und die Fehlerbehandlung aufruft. Ausnahmen sind Benutzer hat abgebrochen, Neustart ist nötig oder bereits eingeleitet.
Kehrt die Funktion erfolgreich zurück, wird die nächste belegte Sequenz als aktuell gesetzt und die dort befindliche Aktion ausgeführt.
Ein Dialog an dieser Stelle ruft die Funktion NewDialog auf, nur das dieses nicht mit dem Anzeigen eines Dialogs getan ist, sondern dass sich hier häufig eine ganze Dialog-Abfolge abgearbeitet wird, bevor zu Sequenz-Abfolge zurückgekehrt wird. Diesen ersten Dialog bezeichnet man als Einstiegspunkt.
NewDialog:
Diese Funktion entfernt den aktuellen Dialog in der Abfolge, wenn vorhanden, und stellt den Neuen dar. NewDialog wird über die Schalter Back und oder Next aufgerufen.
SpawnDialog:
Diese Funktion stellt einen weiteren Dialog dar, entfernt aber nicht den aufrufenden Dialog.
Back/Next:
Dieses sind zwei zentrale Schalter, von denen sich mindestens einer auf einem Dialog, der für die Abfolge bestimmt ist, befinden muss. Wichtig: Ein Dialog, der über Next verlassen wurde, muss durch den Back-Schalter des Nachfolgers wieder erreichbar sein!
Beide Schalter können durchaus über mehrere Sprungziele, welche per Bedingung gesteuert werden, verfügen.
Im Bild oben zu sehen, verfügt dieser Dialog über 4 Möglichkeiten, weitere Dialog aufzurufen.
Dieses sind Back, Next, Schließen/Abbrechen und Button1.
Dialog 1A und 2A sind Dialoge, von denen dieser Dialog angesprungen wurde.
Dialog 1B ist das Ziel, wenn der Aufruf von 1A erfolgte.
Dialog 2B ist das Ziel, wenn der Aufruf von 2A erfolgte.
Dialog 3B ist das Ziel, wenn irgendein anderer Umstand zutreffend ist.
All diese führen NewDialog zum aufrufen aus.
Abbrechen und Schließen führen beide zum Anzeigen des Cancel-Dialogs (Wollen Sie abbrechen? Ja/Nein) und dieses geschieht per SpawnDialog – der aufrufende Dialog bleibt erhalten.
Button1 ruft den Dialog 10 ebenfalls mittels SpawDialog auf.
Wie unter Back/Next erwähnt, muss ein Dialog, der über Next verlassen wurde, durch den Back-Schalter des Nachfolgers wieder erreichbar sein! Ein anders Verhalten dürfen für den Endnutzer sehr verwirrend sein und ist nicht gewollt.
Kommt der Aufruf von 1A zu 1B, muss ein Back auch zu 1A zurückführen.
Gleiches gilt für 1B. 3B muss ebenfalls zum Vorherigen, je nachdem 1A oder 1B zurückführen.
Ein Einstiegspunkt-Dialog sollte über keinen oder eine deaktivierten Back-Schalter verfügen, da es hier kein Zurück gibt. Zurück wäre Sequenz-Abfolge, hierfür gibt es eigene Befehle – Teil eines späteren Tutorials.
Überall sind Bedingungen:
Wie erwähnt können Back\Next viele Sprungziele haben, die alle durch Bedingungen gesteuert werden. So wird z. B. 3B statt 2B angesprungen, wenn der Benutzter in einem früheren Dialog als Datenbank MySQL statt MSSQL gewählt hat oder 1B, wenn er keine Datenbank angeben hat.
Allerdings hat ein Dialog seinerseits auch zwei Bedingungen-Felder, die das Anzeigen verhindern können. Eines ist unveränderlich vom Style oder der Logik vorgegeben, das andere kann durch den Ersteller frei bestimmt werden.
Es kann also passieren, dass das Sprungziel zwar 3B ist, aber eine Bedingung FALSE zurückliefert und damit 3B nicht angezeigt wird – was nun?
In diesem Falle wird versucht über Next den nächsten Dialog anzuspringen, wenn dieser ebenfalls verneint, geht es zum nächsten bis zu einer bestimmten Tiefe, wo irgendwann ein Fehler zurückgegeben wird.
Beispiel: Dialog -> 3B (FALSE) -> 4B (FALSE) -> 5B (FALSE) -> 6B (TRUE). Am Ende ist das Sprungziel nicht 3B sondern 6B.
Dieses führt wieder zu der Aussage, das ein Dialog in der Abfolge immer über Back und oder Next verfügen muss.
Das sind dann aber schon sehr spezielle Fälle, zeigen aber die weitreichenden Möglichkeiten, die der Dialog-Editor von MPIC Studio erlaubt.
Damit beenden wir diesen Teil.
Sequenz:
Es gibt zwei Sequenzen, eine UI- und eine Execute-Sequenz. Wir befassen uns allerdings nur mit der UI-Sequenz. Zu finden sind die Sequenzen auf der Seite Benutzerdefinierte Aktionen.
Der Aufbau ist Name, Sequenz, Bedingung, Typ. Name bezeichnet den Namen der Aktion. Sequenz ist die Nummer in der Abfolge, beginnend bei 1. Typ zeigt an, um was für eine Art Aktion es sich handelt.
Bedingung:
Auf Bedingungen sind wir in einem anderen Tutorial bereits eingegangen, kurz ist es Abfrage die TRUE, FALSE oder ERROR zurückgibt. Letztere, wenn die Syntax nicht stimmt. Ist eine Bedingung leer gilt diese als TRUE und wird ausgeführt. Ergibt der Ausdruck FALSE, wird diese Aktion übersprungen.
Aktion:
Im Prinzip handelt es sich hierbei um einen Funktionsaufruf, der irgendetwas abarbeitet und dann mit 0 = ERROR_SUCCESSED oder einem anderen Code zurückkehrt, welcher meistens eine Fehlermeldung ist, und die Fehlerbehandlung aufruft. Ausnahmen sind Benutzer hat abgebrochen, Neustart ist nötig oder bereits eingeleitet.
Kehrt die Funktion erfolgreich zurück, wird die nächste belegte Sequenz als aktuell gesetzt und die dort befindliche Aktion ausgeführt.
Ein Dialog an dieser Stelle ruft die Funktion NewDialog auf, nur das dieses nicht mit dem Anzeigen eines Dialogs getan ist, sondern dass sich hier häufig eine ganze Dialog-Abfolge abgearbeitet wird, bevor zu Sequenz-Abfolge zurückgekehrt wird. Diesen ersten Dialog bezeichnet man als Einstiegspunkt.
NewDialog:
Diese Funktion entfernt den aktuellen Dialog in der Abfolge, wenn vorhanden, und stellt den Neuen dar. NewDialog wird über die Schalter Back und oder Next aufgerufen.
SpawnDialog:
Diese Funktion stellt einen weiteren Dialog dar, entfernt aber nicht den aufrufenden Dialog.
Back/Next:
Dieses sind zwei zentrale Schalter, von denen sich mindestens einer auf einem Dialog, der für die Abfolge bestimmt ist, befinden muss. Wichtig: Ein Dialog, der über Next verlassen wurde, muss durch den Back-Schalter des Nachfolgers wieder erreichbar sein!
Beide Schalter können durchaus über mehrere Sprungziele, welche per Bedingung gesteuert werden, verfügen.
Im Bild oben zu sehen, verfügt dieser Dialog über 4 Möglichkeiten, weitere Dialog aufzurufen.
Dieses sind Back, Next, Schließen/Abbrechen und Button1.
Dialog 1A und 2A sind Dialoge, von denen dieser Dialog angesprungen wurde.
Dialog 1B ist das Ziel, wenn der Aufruf von 1A erfolgte.
Dialog 2B ist das Ziel, wenn der Aufruf von 2A erfolgte.
Dialog 3B ist das Ziel, wenn irgendein anderer Umstand zutreffend ist.
All diese führen NewDialog zum aufrufen aus.
Abbrechen und Schließen führen beide zum Anzeigen des Cancel-Dialogs (Wollen Sie abbrechen? Ja/Nein) und dieses geschieht per SpawnDialog – der aufrufende Dialog bleibt erhalten.
Button1 ruft den Dialog 10 ebenfalls mittels SpawDialog auf.
Wie unter Back/Next erwähnt, muss ein Dialog, der über Next verlassen wurde, durch den Back-Schalter des Nachfolgers wieder erreichbar sein! Ein anders Verhalten dürfen für den Endnutzer sehr verwirrend sein und ist nicht gewollt.
Kommt der Aufruf von 1A zu 1B, muss ein Back auch zu 1A zurückführen.
Gleiches gilt für 1B. 3B muss ebenfalls zum Vorherigen, je nachdem 1A oder 1B zurückführen.
Ein Einstiegspunkt-Dialog sollte über keinen oder eine deaktivierten Back-Schalter verfügen, da es hier kein Zurück gibt. Zurück wäre Sequenz-Abfolge, hierfür gibt es eigene Befehle – Teil eines späteren Tutorials.
Überall sind Bedingungen:
Wie erwähnt können Back\Next viele Sprungziele haben, die alle durch Bedingungen gesteuert werden. So wird z. B. 3B statt 2B angesprungen, wenn der Benutzter in einem früheren Dialog als Datenbank MySQL statt MSSQL gewählt hat oder 1B, wenn er keine Datenbank angeben hat.
Allerdings hat ein Dialog seinerseits auch zwei Bedingungen-Felder, die das Anzeigen verhindern können. Eines ist unveränderlich vom Style oder der Logik vorgegeben, das andere kann durch den Ersteller frei bestimmt werden.
Es kann also passieren, dass das Sprungziel zwar 3B ist, aber eine Bedingung FALSE zurückliefert und damit 3B nicht angezeigt wird – was nun?
In diesem Falle wird versucht über Next den nächsten Dialog anzuspringen, wenn dieser ebenfalls verneint, geht es zum nächsten bis zu einer bestimmten Tiefe, wo irgendwann ein Fehler zurückgegeben wird.
Beispiel: Dialog -> 3B (FALSE) -> 4B (FALSE) -> 5B (FALSE) -> 6B (TRUE). Am Ende ist das Sprungziel nicht 3B sondern 6B.
Dieses führt wieder zu der Aussage, das ein Dialog in der Abfolge immer über Back und oder Next verfügen muss.
Das sind dann aber schon sehr spezielle Fälle, zeigen aber die weitreichenden Möglichkeiten, die der Dialog-Editor von MPIC Studio erlaubt.
Damit beenden wir diesen Teil.