WinCC Auslesen Bildname fehlerhaft

Matthias_1.11

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

ich habe ein WinCC Advanced Projekt.

Dabei will ich den Bildnamen auslesen. Mein Skript sieht folgendermaßen aus:
Code:
Set objScreen = HmiRuntime.ActiveScreen


newPageTitle = Split(objScreen.ObjectName,"_")


SYS_SetPageTitleVar = newPageTitle(1)


Set objScreen = Nothing

Das Skript wird beim Bildaufruf ausgeführt. Der auszulesende Bildname ist G_Test_1.

Wenn jetzt das Skript ausgeführt wird, dann steht im Titel nichts drinnen. Habe jetzt beobachtungsvariablen angelegt und festgestellt,
dass im newPageTitle(0) immer "Overview" drinnen steht.
Weiß jemand von was das kommt?

Projektsprachen ahbe ich bereits überprüft.
 
Hallo Mathias,
ich vermute, dass dein Skript zu früh abläuft, wo das Bild noch nicht vollständig aufgebaut ist.
Starte das Skript nach dem Bildaufbau, dann sollte es funktionieren.
Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dabei will ich den Bildnamen auslesen. Mein Skript sieht folgendermaßen aus:
Code:
Set objScreen = HmiRuntime.ActiveScreen

newPageTitle = Split(objScreen.ObjectName,"_")
...

Das Skript wird beim Bildaufruf ausgeführt. Der auszulesende Bildname ist G_Test_1.

Wenn jetzt das Skript ausgeführt wird, dann steht im Titel nichts drinnen. Habe jetzt beobachtungsvariablen angelegt und festgestellt,
dass im newPageTitle(0) immer "Overview" drinnen steht.
Weiß jemand von was das kommt?
:unsure:
Das liegt vermutlich daran, dass Du mit Deinem Code den Namen der verwendeten Bildvorlage ausliest.

Den aktuellen Bildnamen erhältst Du z.B. so:
Code:
newPageTitle = HmiRuntime.BaseScreenName                        ' read current screen name
 
:unsure:
Das liegt vermutlich daran, dass Du mit Deinem Code den Namen der verwendeten Bildvorlage ausliest.

Den aktuellen Bildnamen erhältst Du z.B. so:
Code:
newPageTitle = HmiRuntime.BaseScreenName                        ' read current screen name
Leider ist es nicht richtig, mit dem BaseScreenName bekommst du Grundbildnamen zurück.
 
Hier ist noch eine Möglichkeit, die es verhindert, den Namen des Bildes zu liefern:
Beschreibung:
ActiveScreen
gibt ein Objekt vom Typ "Screen" zurück, welches das Bild darstellt, das gerade den Fokus besitzt.

Hinweis
Wenn Sie in einer benutzerdefinierten Funktion die Eigenschaft "ActiveScreen" abfragen, so kann es vorkommen, dass die Eigenschaft kein gültiges "Screen"-Objekt zurückliefert, sondern "Nothing", z. B. aufgrund eines ScreenSavers. Eine Systemmeldung dazu wird ausgegeben.

Zugriff in Runtime: Lesen
Syntax
Object.ActiveScreen
Object
Erforderlich. Ein Objekt vom Typ "HMIRuntime".
Bemerkungen
Welches Bild zurückgegeben wird, hängt davon ab, ob das Grundbild oder der Permanentbereich den Fokus besitzt.
Die ActiveScreen-Eigenschaft gibt NOTHING zurück, wenn kein Bild den Fokus enthält. Das ist z.B. der Fall, wenn ein anderes Fenster den Fokus besitzt. Mit der Anweisung "If not [Ausdruck] Is Nothing" können Sie abfragen, ob ein Bild zurückgegeben wird:


'VBS_Example_ActiveScreen
Dim objActiveScreen
Set objActiveScreen = HmiRuntime.ActiveScreen
If Not objActiveScreen Is Nothing Then
'found an active screen
HmiRuntime.Trace("There is an active screen." & vbCrLf)
Else
'found NO active screen
HmiRuntime.Trace("There is NO active screen." & vbCrLf)
End If

Gruß
 
Code:
newPageTitle = HmiRuntime.BaseScreenName                        ' read current screen name
Leider ist es nicht richtig, mit dem BaseScreenName bekommst du Grundbildnamen zurück.
Was soll ich da jetzt sagen?
Ich lese seit über 4 Jahren so den aktuellen Bildnamen auf KTP700 Mobile und TP1200 Pro aus und habe damit eine Bildhistorie am Laufen, bei der ich über diesen ausgelesenen Namen die Bilder auch wieder aufrufe.
🤷‍♂️
 
Hallo hucki,
habe gerade im Informationssystem nachgeschaut. Du hast Recht, es steht ganz unten in der letzte Zeile:
BaseSCreenName
Beschreibung
Liest den Namen des aktuellen Grundbildes oder löst über das Setzen eines neuen Bildnamens einen Grundbildwechsel aus.
Zugriff in Runtime: Lesen und Schreiben
Syntax
Object.BaseScreenName[= STRING]
Object
Erforderlich. Ein Objekt vom Typ "HMIRuntime".
STRING
Optional. Ein Wert oder eine Konstante, die den Bildnamen enthält.
Bemerkungen
Sie können die Eigenschaft auch verwenden, um festzustellen, welches Bild gerade angezeigt wird.

Ich habe die Eigenschaft nie benutzt, sondern immer auf ActiveScreen zurück gegriffen.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe die Eigenschaft nie benutzt, sondern immer auf ActiveScreen zurück gegriffen.
:unsure:
Ich meine, dass ActiveScreen auch andere Screens, wie PopUps und Permanentbereich, zurück gibt, die ich damals nicht in meiner Historie haben wollte. Denn das war damals eigentlich auch meine erste Wahl.
 
Zuletzt bearbeitet:
Zurück
Oben