TIA Script auf Variablen Wertänderung abbrechen möglich?

daxxar

Level-2
Beiträge
15
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen,

ich habe folgendes Problem:

Bei einem Seitenaufruf starte ich ein Script, dass mir ein Balkendiagramm zeichnet.
Wird diese Seite während des Ausführens verlassen, bringt das Panel mir eine Fehlermeldung (Bild)
Meldung: 20230112_090955.jpg20010
Die Meldung stört den Kunden.

Gibt es eine Möglichkeit den Fehler zu unterbinden?
 
Hallo daxxar.

Scheinbar greifst du in dem Script auf das HmiRuntime.Screens-Objekt (genauer: das entsprechende Item 'Balkendiagramm') zu.
Dieses Objekt/diese Items existieren natürlich nur solange, wie das Bild angezeigt wird (genauer: zur Laufzeit existiert).

Du solltest also vor dem Schließen des Bildes das Script beenden.


Gruß, Fred
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst im Skript abfragen, ob das Bild überhaupt (noch) angezeigt wird. (CurrentBaseScreen oder so ähnlich) EDIT: BaseScreenName

Läuft Dein Skript lange (z.B. in einer Schleife)? Oder dauert der Aufruf des Skriptes so lange, daß das Bild vorher wieder geschlossen werden kann?

Harald
 
Zuletzt bearbeitet:
Hi, danke für die Antworten.

Das Script wird bei Seitenaufruf gestartet, und läuft einmal durch. Es zeichnet mir ein Balkendiagramm. Das dauert ca. 3 Sekunden. Wenn ich dieser Zeit das Bild wieder gewechselt wird, kommt der Fehler.

Gerne würde ich das Script stoppen, wenn ich einen Seitenwechsel erkenne. Also bevor der Fehler generiert wird. Gibt es da eine Möglichkeit?

Der Code sieht ca. so aus, und das Script beinhaltet ca. 1000Zeilen:

bspKK.JPG
 
Ist es zwingend erforderlich, dass das betroffene Bild jederzeit geschlossen werden kann?
Wird das Bild auch durch Nicht-Bedieneraktionen gesteuert?

Wenn beides nein, dann würde ich einfach das Schließen des Bildes verhindern, solange das Script läuft.
(Im einfachsten Fall durch Aus-/Überblenden der Schließen-Schaltfläche)

Seitenwechsel-Erkennung: siehe Post #3 von Harald.


Gruß, Fred
 
VB Script Befehl ON ERROR RESUME NEXT
damit wird weitergemacht, falls ein Fehler auftritt.
Leider funktioniert ON ERROR GOTO in VB Script nicht.

Man kann nur im Script immer mal wieder
If Err<>0 Then
ExitScript ' müsste man jetzt genau nachschauen wie der Befehl korrekt ist
Endif

Google sagt folgendes
If Err <> 0 Then
Wscript.Quit
End If
 
Ist es zwingend erforderlich, dass das betroffene Bild jederzeit geschlossen werden kann?
Wird das Bild auch durch Nicht-Bedieneraktionen gesteuert?
Es kommt nicht auf das "schließen" des Bildes drauf an, es reicht schon, wenn irgendein anderes Bild aktiviert wird. Das muß nicht durch Bedienerhandlungen passieren, sondern kann bei allen möglichen Ereignissen passieren (Bedien-Objekte sperren hilft da nicht), besonders wenn an jeden Pups irgendeine Reaktion mit Bildwechseln projektiert ist. Wobei der Aufruf eines Skriptes ein laufendes Skript nicht unterbricht, weil nur 1 Skript "gleichzeitig" laufen kann (weitere Skripte werden in eine Warteschlange eingereiht).

Ein laufendes VBS-Skript kann nicht direkt (von "außen") abgebrochen werden. Ein Skript kann sich nur selber beenden, wenn es z.B. Werte von Variablen beobachtet oder wenn es einen Runtime-Error produziert.

Eine Reaktion "ON ERROR ..." wird nicht hilfreich sein. Es soll ja der Runtime-Error verhindert werden, damit keine Systemmeldung erscheint.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Super, danke für die Antworten!

Ich habe Pop-Up Bilder mit einer höheren anzeige Priorität, die über externe Ereignisse aufgerufen werden. Diese werden den Fehler beim Aufrufen weiterhin auslösen, - falls die entsprechende Seite zufällig vorher geöffnet war.

Also rücksetze ich im Script in Zeile 1 einen Merker, der in der letzten Zeile wieder gesetzt wird.
Nur mit diesem Merker ist die Menüführung Bedienbar.

Zumindest kann der Bediener den Fehler nicht mehr provozieren...

Alle Variablen durch Hilfsvariablen ersetzen wird Plan B ;)


Vielen Dank.
 
Ich habe Pop-Up Bilder mit einer höheren anzeige Priorität, die über externe Ereignisse aufgerufen werden. Diese werden den Fehler beim Aufrufen weiterhin auslösen, - falls die entsprechende Seite zufällig vorher geöffnet war.
Der Fehler wird nur passieren, wenn ein Bildwechsel stattfindet während das Skript läuft oder es schon angetriggert ist. Es macht Sinn, am Anfang des Skriptes zu prüfen, ob das betreffende Bild auch angezeigt ist.

Harald
 
Also rücksetze ich im Script in Zeile 1 einen Merker, der in der letzten Zeile wieder gesetzt wird.
Nur mit diesem Merker ist die Menüführung Bedienbar.
Zumindest kann der Bediener den Fehler nicht mehr provozieren...
Na ja, wenn den Kunden schon die drei Sekunden stören, in denen man den Fehler provozieren kann und er es darauf anlegt, wird er es während der Aktualisierungszeit der Variablen immer noch schaffen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es kommt nicht auf das "schließen" des Bildes drauf an, es reicht schon, wenn irgendein anderes Bild aktiviert wird. Das muß nicht durch Bedienerhandlungen passieren,
@PN/DP :
Ich habe ungenau formuliert, aber genau das hatte ich mit "Wird das Bild auch durch Nicht-Bedieneraktionen gesteuert?" gemeint. ;)
 
Zurück
Oben