Sie können eine Benutzereingabe für eine Visualisierung konfigurieren, die bewirkt, dass eine referenzierte Visualisierung als Dialog geöffnet wird. Ein Benutzer klickt zum Beispiel auf eine Schaltfläche, woraufhin sich ein Dialog öffnet, der zur Eingabe von Werten auffordert. Ein Dialog wird verwendet, um Benutzereingaben zu sammeln, und wenn er modal ist, kann er dazu führen, dass Eingaben außerhalb des Dialogs blockiert werden.
Nur Visualisierungen mit dem Visualisierungstyp „Dialog“ können als Dialog geöffnet werden. Der Visualisierungstyp wird im Dialog „Eigenschaften“ eines Visualisierungsobjekts konfiguriert.
Grundlegendes Verfahren:
Erfordernis: Das Projekt enthält eine Hauptvisualisierung und einen Dialog.
-
Konfigurieren Sie eine Benutzereingabe für die Hauptvisualisierung mit der Aktion „OpenDialog“ für den Dialog.
Das Öffnen des Dialogs wird konfiguriert.
-
Konfigurieren Sie eine Benutzereingabe für ein Element des Dialogs mit der Aktion „CloseDialog“.
Hinweis: Bei nicht-modalen Dialogen können Sie die Benutzereingabe zum Schließen auch außerhalb des Dialogs konfigurieren.
Das Schließen des Dialogs wird konfiguriert.
Sie können auch Dialoge aus der Bibliothek anstelle von selbst erstellten Dialogen
verwenden. Wenn zum Beispiel die Bibliothek VisuDialogs in das Projekt integriert ist, können Sie die darin enthaltenen Dialoge VisuDialogs.Login oder VisuDialogs.FileOpenSave verwenden.
Siehe auch
Konfigurieren eines Visualisierungsobjekts als Dialog
-
Markieren Sie das Objekt in der Ansicht „Geräte“, öffnen Sie das Kontextmenü und wählen Sie den Befehl „Eigenschaften“.
-
Wählen Sie die Registerkarte „Visualisierung“.
-
Aktivieren Sie die Option „Dialog“ und schließen Sie den Dialog mit „OK“.
Die Visualisierung hat den Visualisierungstyp „Dialog“ und kann als solche aufgerufen werden.
Einen Dialogaufruf konfigurieren
Beim Aufruf eines Dialogs klickt der Benutzer normalerweise auf eine Schaltfläche, woraufhin sich ein Dialog öffnet, der zur Eingabe auffordert.
Im folgenden Beispiel ermöglicht ein Dialog, der einen Kalender darstellt, die Eingabe eines Datums.
Erfordernis: Das Projekt enthält die Visualisierungen visMain und dlgCalender.
-
Setzen Sie die Visualisierungsart von
dlgCalenderauf Dialog. -
Ziehen Sie ein Rechteck in die Visualisierung
visMain. -
Konfigurieren Sie die Eigenschaft „Texte Text“ mit dem Text
Due Date: %t[yyyy-MM-dd].Konfigurieren Sie die Eigenschaft „Textvariablen Textvariable“ mit
PLC_PRG.dateDue. -
Ziehen Sie eine Schaltfläche in die Visualisierung.
-
Konfigurieren Sie die Eigenschaft „Texte Text“ mit dem Text
Open dialog.Konfigurieren Sie die Eigenschaft „Eingabekonfiguration OnMouseClick“ für die Aktion „Dialog öffnen“ mit
dlgCalender.Die Benutzereingabe für das Öffnen des Dialogs wird konfiguriert.
-
Doppelklicken Sie auf den Dialog
dlgCalender. -
Ziehen Sie das Element „Date picker“ in den Visualisierungseditor.
-
Konfigurieren Sie die Eigenschaft „Texte Text“ mit
Due Date: %t[yyyy-MM-dd].Konfigurieren Sie die Eigenschaft „Variable“ mit
PLC_PRG.dateCalender.Das Element ist konfiguriert.
-
Ziehen Sie eine Schaltfläche in den Visualisierungseditor.
-
Konfigurieren Sie die Eigenschaft „Texte Text“ mit
OK: -
Konfigurieren Sie die Eigenschaft „Eingabekonfiguration OnMouseClick“für die Aktion „Dialog schließen “mit
dlgCalender, Result: OK. -
Konfigurieren Sie eine weitere Eigenschaft „Eingabekonfiguration OnMouseClick“ für die Aktion „Ausführen von ST-Code“ mit
PLC_PRG.dateDue := PLC_PRG.dateCalendar;.Die Benutzereingabe für das Schließen des Dialogs wird konfiguriert.
-
Ziehen Sie eine weitere Schaltfläche in den Visualisierungseditor.
-
Konfigurieren Sie die Eigenschaft „Texte Text“ mit
Cancel: -
Konfigurieren Sie die Eigenschaft „Eingabekonfiguration OnMouseClick“ für die Aktion „Dialog schließen “mit
dlgCalender, Result: Cancel. -
Die Benutzereingabe für den Abbruch des Dialogs wird konfiguriert.
-
Kompilieren, laden und starten Sie die Anwendung.
Erklärung der Variablen:
PROGRAM PLC_PRG
VAR
dateDue : DATE := DATE#2000-01-01;
dateCalendar : DATE;
END_VAR
Implementieren eines Anwendungszugriffs auf einen Dialog
Im Anwendungscode können Sie den Zugriff auf einen Dialog implementieren, der im Dialogmanager verwaltet wird. Der Dialogmanager instanziert und verwaltet automatisch alle Visualisierungen vom Typ „Dialog“. Der Zugriff erfolgt über den internen Visualisierungsmanager.
Implementieren Sie zunächst den Zugriff auf den Dialogmanager, indem Sie die Methode
GetDialogManager() des internen Visualisierungsmanagers aufrufen. Sie können dann die Methoden des Dialogmanagers
verwenden, um den Programmablauf eines Dialogs zu programmieren.
Im folgenden Beispiel wird eine Schaltfläche so konfiguriert, dass sie beim Anklicken
den vorkonfigurierten Dialog Login öffnet. Der Benutzer kann in dem Dialog einen Namen und ein Passwort eingeben. Der
Dialog Login ist in der Bibliothek VisuDialogs enthalten. Auf die gleiche Weise können Sie auch einen selbst erstellten Dialog aufrufen.
Implementierung eines Anwendungszugriffs auf den Dialog Login aus der Bibliothek VisuDialogs:
Erfordernis: Die Bibliothek VisuDialogs ist in das Projekt integriert.
-
Fügen Sie eine neue Visualisierung
visMainunter der Anwendung ein.Der Visualisierungseditor wird geöffnet.
-
Ziehen Sie eine Schaltfläche in den Visualisierungseditor.
-
Geben Sie in seiner Eigenschaft „Text“
Loginein.Die Schaltfläche ist beschriftet.
-
Klicken Sie auf „Konfigurieren “in der Eigenschaft „Eingabekonfiguration OnMouseDown“.
-
Wählen Sie die Eingabeaktion „ST-Code ausführen“ und klicken Sie auf
. -
Geben Sie im ST-Editor den folgenden Funktionsaufruf ein:
OpenLoginDialog(pClientData);Die Hauptvisualisierung enthält eine Schaltfläche. Wenn ein Benutzer auf die Schaltfläche klickt, öffnet sich der Dialog
Loginund die FunktionOpenLoginDialog()wird aufgerufen. -
Klicken Sie auf „Konfigurieren “in der Eigenschaft „Eingabekonfiguration OnDialogClosed“.
-
Wählen Sie die Eingabeaktion „ST-Code ausführen“ und klicken Sie auf
. -
Geben Sie im ST-Editor den folgenden Funktionsaufruf ein:
OnLoginDialogClosed(pClientData);
Implementierung der Funktion OpenLoginDialog():
FUNCTION OpenLoginDialog : BOOL
VAR_INPUT
pClientData : POINTER TO VisuStructClientData;
END_VAR
VAR
dialogMan : IDialogManager;
loginDialog : IVisualisationDialog;
pLoginInfo : POINTER TO Login_VISU_STRUCT; // Login_VISU_STRUCT contains the parameters defined in the interface of visualization "Login".
result : Visu_DialogResult;
stTitle : STRING := 'Login ...';
stPasswordLabelText: STRING;
stUserLabelText: STRING;
stUsername: STRING;
END_VAR
dialogMan := g_VisuManager.GetDialogManager(); // The DialogManager is provided via the implicitly available VisuManager
IF dialogMan <> 0 AND pClientData <> 0 THEN
loginDialog := dialogMan.GetDialog('VisuDialogs.Login'); // Dialog to be opened is specified
IF loginDialog <> 0 THEN
pLoginInfo := dialogMan.GetClientInterface(loginDialog, pClientData);
IF pLoginInfo <> 0 THEN // In the following the parameters of the login dialog in the Login_VISU_STRUCT will be read
pLoginInfo^.stTitle := stTitle;
pLoginInfo^.stPasswordLabelTxt := stPasswordLabelText;
pLoginInfo^.stUserLabelTxt := stUserLabelText;
dialogMan.OpenDialog(loginDialog, pClientData, TRUE, 0);
END_IF
END_IF
END_IF
OnLoginDialogClosed() definiert die Reaktion auf das Schließen eines Dialogs.
Implementierung der Funktion OnLoginDialogClosed():
FUNCTION OnLoginDialogClosed : BOOL
VAR_INPUT
pClientData : POINTER TO VisuStructClientData;
END_VAR
VAR
dialogMan : IDialogManager;
loginDialog : IVisualisationDialog;
pLoginInfo : POINTER TO Login_VISU_STRUCT;
result : Visu_DialogResult;
stPassword: STRING;
stUsername: STRING;
END_VAR
dialogMan := g_VisuManager.GetDialogManager(); // The DialogManager is provided via the implicitly available VisuManager
IF dialogMan <> 0 AND pVisuClient <> 0 THEN
loginDialog := dialogMan.GetDialog('VisuDialogs.Login'); // Gets the login dialog
IF loginDialog <> 0 THEN
result := loginDialog.GetResult(); // Gets the result (OK, Cancel) of the dialog
IF result = Visu_DialogResult.OK THEN
loginDialog.SetResult(Visu_DialogResult.None); // Reset to default (none)
pLoginInfo := dialogMan.GetClientInterface(loginDialog, pVisuClient); // Structure Login_VISU_STRUCT gets read;
// In the following the structure parameters can be set
IF pLoginInfo <> 0 THEN
stPassword := pLoginInfo^.stPasswordpLoginInfo^.stPassword := ''; // Reset the passwword
stUsername := pLoginInfo^.stUsername;
END_IF
ELSIF result = Visu_DialogResult.Cancel THEN
loginDialog.SetResult(Visu_DialogResult.None); // React on 'Cancel'
ELSE
// nothing to do
END_IF
END_IF
END_IF
Siehe auch

