DIAdem-Hilfe

Modale und nicht-modale Anwenderdialoge

  • Aktualisiert2023-04-06
  • 6 Minute(n) Lesezeit

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:

VBScriptPython

 

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.

VBScriptPython

 

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.

VBScriptPython

 

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.

VBScriptPython

 

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:

VBScriptPython

 

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.

VBScriptPython

 

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:

VBScriptPython

 

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.

VBScriptPython

 

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:

VBScriptPython

 

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:

VBScriptPython

 

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:

VBScriptPython

 

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.

VBScriptPython

 

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

Log in to get a better experience