Modale und nicht-modale Anwenderdialoge
- Aktualisiert2023-04-06
- 6 Minute(n) Lesezeit
DIAdem-SCRIPT > Modale und nicht-modale Anwenderdialoge
DIAdem unterscheidet zwei Arten von Dialogen:
-
Modale Dialoge
Diese Dialoge müssen Sie schließen, bevor Sie weitere Aktionen mit dem übergeordneten Fenster durchführen können. Zu den modalen Dialogen gehört beispielsweise der Datei-Auswahldialog. -
Nicht-modale Dialoge
Diese Dialoge können geöffnet bleiben, während Sie mit dem übergeordneten Fenster arbeiten. Beispiele für nicht-modale Dialoge sind das Datenportal und die Koordinatenanzeige in DIAdem-VIEW.
Alle Anwenderdialoge, die Sie mit dem Dialogeditor von DIAdem-SCRIPT erstellen, können Sie in der modalen oder in der nicht-modalen Form verwenden.
Modale Dialoge
Soll ein Anwenderdialog modal erscheinen, dann rufen Sie diesen Dialog im Script mit dem Befehl SudDlgShow unter Angabe des Dialognamens und der Dialogdatei auf:
VBScript | Python |
Call SudDlgShow("Input","Example")
Wenn Sie das Script starten, erscheint der Dialog Input. Schließen Sie diesen modalen Dialog, damit das Script die nachfolgenden Script-Anweisungen ausführen kann.
Nicht-modale Dialoge
Soll ein Anwenderdialog nicht-modal erscheinen, erzeugen Sie im Script mit dem Befehl SudDlgCreate unter Angabe des Dialognamens und der Dialogdatei zunächst ein Dialog-Objekt. Beachten Sie hierbei, dass der Befehl SudDlgCreate im Unterschied zum Befehl SudDlgShow keine Übergabeparameter besitzt, auf die Sie im Dialogeditor mit der Methode GetArgument zugreifen könnten.
VBScript | Python |
Dim MyDlg Set MyDlg = SudDlgCreate("Input","Example")
Im weiteren Verlauf des Scripts müssen Sie dann dafür sorgen, dass DIAdem den nicht-modalen Dialog anzeigt. Verwenden Sie hierzu die Methode Show, die das Dialog-Objekt bereit stellt. Um den Anwenderdialog auszublenden, verwenden Sie die Methode Hide. Mit den Methoden OK und Cancel schließen Sie den Anwenderdialog über das Script.
VBScript | Python |
Call MyDlg.Show 'further instructions Call MyDlg.Ok
DIAdem kann einen nicht-modalen Anwenderdialog auch nach der Abarbeitung des Scripts, das diesen Dialog erzeugt hat, noch anzeigen. DIAdem verwaltet deshalb eine Liste aller geöffneten, nicht-modalen Anwenderdialoge. Verwenden Sie den Befehl SudNonModalDlgLst, um auf die Auflistung dieser Dialoge zuzugreifen. Die Variable SudNonModalDlgCount erhält die Anzahl der Anwenderdialoge in dieser Auflistung. Das folgende Beispiel zeigt, wie Sie mit Hilfe des Befehls auf den geöffneten, nicht-modalen Anwenderdialog Input zugreifen.
VBScript | Python |
Dim MyNonModalDlg Set MyNonModalDlg = SudNonModalDlgLst("Input") 'further instructions Call MyNonModalDlg.Ok
![]() | Hinweis Verwenden Sie <F6>, um den Fokus zwischen dem aktiven Modul, dem Datenportal und den angezeigten nicht-modalen Dialogen zu wechseln. |
Das nächste Beispiel zeigt, wie Sie alle geöffneten, nicht-modalen Anwenderdialoge nacheinander ausblenden:
VBScript | Python |
Dim i For i = 1 to SudNonModalDlgCount Call SudNonModalDlgLst(i).Hide Next
Verwenden Sie die Methode IsValid des Dialog-Objekts, wenn Sie wissen möchten, ob ein nicht-modaler Anwenderdialog noch geöffnet ist.
VBScript | Python |
If MyNonModalDlg.IsValid Then ' further instructions Call MyNonModalDlg.Ok End If
Das Dialog-Objekt, das Sie mit dem Befehl SudDlgCreate erzeugen, können Sie auch einer globalen Variable zuweisen:
VBScript | Python |
Call GlobalDim("MyGlobDlg") Set MyGlobDlg = SudDlgCreate("Input","Example")
Möchten Sie in weiteren Scripten ebenfalls auf den nicht-modalen Dialog Input zugreifen, so überprüfen Sie mit der Methode IsValid, ob der Dialog noch geöffnet ist.
VBScript | Python |
If MyGlobDlg.IsValid Then ' further instructions Call MyGlobDlg.Ok End If
Haben Sie das Dialog-Objekt keiner globalen Variablen zugeordnet und möchten Sie in weiteren Scripten auf den nicht-modalen Dialog Input zugreifen, dann verwenden Sie folgende Anweisungen:
VBScript | Python |
If not SudNonModalDlgLst("Input") is Nothing then ' further instructions Call MyGlobDlg.Ok End If
![]() | Hinweis Wenn Sie das Dialog-Objekt einer globalen Variablen zuweisen, dann sollten Sie den Befehl ScriptCmdReset, der die Script Engine neu startet, nicht in Ihrem Script verwenden. DIAdem löscht beim Ausführen des Befehls alle globalen Variablen und Anwenderbefehle. Auch beim Anmelden neuer Anwendervariablen über Einstellungen»Erweiterungen»Anwenderbefehle löscht DIAdem alle globalen Variablen. |
Sie können einen nicht-modalen Anwenderdialog auch in Form einer Symbolleiste oder Werkzeugpalette gestalten. Weisen Sie dazu beim Erstellen des Dialogs im Dialog-Editor der Eigenschaft ShowAsToolWindow den Wert 1-Yes zu. Im Gegensatz zu einem gewöhnlichen Anwenderdialog können Sie die Größe der Symbolleiste nahezu beliebig verkleinern. Des Weiteren ist im Vergleich zu einem Anwenderdialog die Titelleiste schmaler. Möchten Sie das Symbol Schließen in der Titelleiste ausblenden, so weisen Sie beim Erstellen des Dialogs im Dialog-Editor der Eigenschaft ShowTitleMenu den Wert 0-No zu.
Verwenden Sie die Funktion AppRectangleGet, um den nicht-modalen Anwenderdialog abhängig vom DIAdem-Fenster zu positionieren. Soll eine Werkzeugpalette beispielsweise unterhalb der Modulleiste von DIAdem erscheinen, dann definieren Sie folgende Anweisungen:
VBScript | Python |
Dim MyDlg, iPos, Hor, Ver Set MyDlg = SUDDlgcreate("ToolWindow","Example") iPos = AppRectangleGet(1) 'returns position below the panel bar in pixels Hor = MyDlg.MapXPixelToDlu(iPos(0)) - MyDlg.Left ' calculates into dialog units Ver = MyDlg.MapYPixelToDlu(iPos(1)) - MyDlg.Top Call MyDlg.Move(Hor, Ver) Call MyDlg.Show
Innerhalb eines Scripts können Sie nicht nur auf die Eigenschaften und Methoden des nicht-modalen Anwenderdialogs zugreifen, beispielsweise Show, Hide, Ok und Cancel, sondern auch auf die Eigenschaften und Methoden der im Dialog definierten Steuerelemente. Verwenden Sie die Methode GetControl, um auf ein bestimmtes Steuerelement des Dialogs über den Namen, das heißt seinen ObjectCode, zuzugreifen.
Das folgende Beispiel verändert die Farbe des Steuerelements Text1:
VBScript | Python |
Dim oText oText = MyDlg.GetControl("Text1") oText.ForeColor = RGB(255, 0, 0)
Das nächste Beispiel zeigt, wie Sie über das Script einen Mausklick auf die Schaltfläche Button1 auslösen.
VBScript | Python |
Dim oButton oButton = MyDlg.GetControl("Button1") Call oButton .RunClick
Verwenden Sie die Controls-Auflistung, wenn Sie mit einer Auflistung aller Steuerelemente eines Dialogs oder einer Registerkarte arbeiten möchten. Auf ein einzelnes Steuerelement der Auflistung greifen Sie über den Namen, das heißt den ObjectCode, zu.
![]() | Hinweis Die Variablenbindung wird für nicht-modale Dialoge nicht empfohlen. |
Wenn Sie DIAdem beenden, schließt DIAdem automatisch alle noch geöffneten, nicht-modalen Anwenderdialoge. Verwenden Sie das Ereignis EventQueryClose, wenn Sie das Schließen eines Anwenderdialogs unter bestimmten Umständen verhindern beziehungsweise gezielt ausführen möchten. Dieses Ereignis wird in Anwenderdialogen durch Aufruf der Methoden Dialog.OK und Dialog.Cancel sowie durch Betätigen der OK-, Abbruch- oder Esc-Taste ausgelöst. Des Weiteren lösen das Auftreten eines Fehlers im Anwenderdialog und das Schließen von DIAdem dieses Ereignis aus. Wenn Sie das Schließen eines Dialogs mit Hilfe des Ereignisses EventQueryClose verhindern, kann das zur Folge haben, dass sich DIAdem bei geöffneten, nicht-modalen Dialogen nicht beenden lässt.
Vorgehensweisen
Aktivieren von Steuerelementen | Aufrufen des Dialogeditors | Beenden eines Anwenderdialogs per Script | Bestimmen der Standardschaltfläche | Darstellen von Grafiken in Auswahllisten | Erstellen einer Erweiterten Tabelle | Erstellen einer Prozedur im Script des Anwenderdialogs | Erstellen eines Anwenderdialogs | Erstellen eines dynamischen Anwenderdialogs | Erstellen eines nicht-modalen Anwenderdialogs | Erstellen von Anwenderdialogen ohne Variablenbindung | Füllen einer Auswahlliste per Script | Parameterübergabe an einen Anwenderdialog | Reagieren auf Abbruch eines Anwenderdialogs | Reagieren auf Benutzereingaben in Anwenderdialogen | Speichern und Wiederherstellen der letzten Dialogposition | Speichern von Steuerelementgruppen für Anwenderdialoge | Tabulator-Reihenfolge in einem Anwenderdialog | Verwenden der Flex-Eigenschaften | Verwenden von Kanal-Auswahllisten | Verwenden von Zugriffstasten in einem Anwenderdialog | Übergeben von Eingaben im Anwenderdialog an DIAdem | Überprüfen einer Eingabe in einem Anwenderdialog
Beispiele
Anwenderdialog in DIAdem-VIEW | Anwenderdialog in VIEW zur Berechnung der FFT und harmonischer Frequenzen | Anwenderdialog mit Auswahllisten | Anwenderdialog mit Auswahllisten | Anwenderdialog mit Baum | Anwenderdialog mit Erweiterter Tabelle | Anwenderdialog mit Internet Explorer | Anwenderdialog mit Kurvenvorschau und Schieberegler | Anwenderdialog mit skalierbarer Tabelle | Anwenderdialog mit Tabellen | Anwenderdialog mit Unterdialogen | Anwenderdialog mit wechselnder Hintergrundfarbe | Anwenderdialog zur Ablaufsteuerung | Anwenderdialog zur Eingabe von Text und Zahlen | Assistent zur Toleranzauswertung | Dialogeingaben überprüfen | Dynamischer Anwenderdialog | Kanäle abschnittsweise darstellen und analysieren | Übersetzen von Anwenderdialogen