WinCC Mit VBScript PopUp-Fenster öffnen und schließen

Spoonman

Level-1
Beiträge
86
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen,

ich möchte mit einem Button und ein VB-Script ein PopUp-Fenster öffnen. Leider funktioniert das nicht so wie ich es will. Zunächst habe ich es mit dem folgenden Code versucht:

Code:
 ShowPopUpScreen "PopUpBild"

Leider passiert nichts. Ich habe hier im Forum gesehen, dass hinter dem Bildnamen noch weitere Sachen stehen, kann damit aber leider gar nichts anfangen.
Dann habe ich es hiermit versucht:

Code:
Dim objBildfenster
Set objBildfenster = HMIRuntime.Screens("Seite").ScreenItems("PopUpBild")
objBildfenster.Visible = True

Hat leider auch nicht funktioniert.
Des weiteren möchte ich mit einem "Abbruch-Button" das PopUp-Fenster wieder schließen können. Da ich es bisher nicht einmal geschafft habe das Fenster zu öffnen, bin ich da auch noch nicht weiter gekommen.

Vielen Dank für eure Hilfe im Voraus.

Mfg Ralf

P.S.: Woher habt Ihr euer VB-Script Wissen in WinCC?
 
Standardfrage:
Welches Panel oder PC-Runtime?
Das macht schon einige Unterschiede im Script.


Zum PS: F1-Hilfe und Beispiele aus diesem Forum.
Da ich Scripte aber eher selten nutze, wurschtle ich mich auch nur so durch.
 
Du musst verstehen wie das mit den Bildfenstern funktioniert.
In einem Bild hast du ein Bildfenster, in das du ein weiteres Bild hineinladen kannst. Das Bildfenster kannst du nun sichtbar und unsichtbar schalten.

Hineinladen eines Bildes und sichtbar schalten des Bildfensters würde aus dem Grundbild z.B. so funktionieren:
Code:
Dim objBildfenster
Set objBildfenster = HMIRuntime.Screens(HMIRuntime.BaseScreenName).ScreenItems("DeinBildfensterName")

objBildfenster.PictureName = "PopUpBild"
objBildfenster.Visible = True
"DeinBildfensterName" ist der Name des Bildfensterobjektes, was du in dem Bild wo das Popup erscheinen soll anlegst. An das Grundbild gelangst du über HMIRuntime.BaseScreenName. Den Namen könntest du auch fest eintragen, aber so kannst du das Skript auch in anderen Fenstern, welches das gleiche Bildfenster enthält verwenden.

Ist das Popup Bild nun geöffnet und sichtbar, kannst du es z.B. folgendermaßen wieder schließen, wenn du dort eine Schaltfläche mit folgendem Ereignis projektierst:
Code:
Dim oBildfenster
Dim oBild

' Das Elternobjekt zu diesem Popup-Fenster
Set oBildfenster = HMIRuntime.ActiveScreen.Parent

' Das Bild in dem sich das Bildfenster befindet, ist das Elternobjekt
' des Bildfensters
Set oBild = HMIRuntime.Screens(oBildfenster.Parent.ObjectName)

' Über den gesamten Objektpfad mit Bild und Bildfenster, eben dieses
' Bildfenster unsichtbar schalten
oBild.ScreenItems(oBildfenster.ObjectName).Visible = False

Das sieht erstmal etwas kompliziert aus. Aber bei WinCC kannst du über ein Objekt nur mit vollständigem Pfad zugreifen.
Da das Popupfenster sich in einem Bildfenster befindet, und dieses in einem Bild, musst du herausfinden wie das Bildfentster heißt, und wie das Bild heißt in dem sich das Bildfenster befindet
Also:
Bildname.Bildfenster.Popupbild

An die Namen kommst du über die Parent (Eltern) Eigenschaften der Objekte.

Hättest du nur ein einziges Bild und ein Bildfenster in deinem Projekt, dann würde das Schließen (eigentlich nur unsichtbar schalten) des Popups auch mit festen Namen funktionieren
Code:
HMIRuntime.Screens("Grundbildname").ScreenItems("Bildfenstername").Visble = False

Das gleiche macht das obige Skript, nur dass die Namen dort aus dem aktuellen Pfad geholt werden, und du somit das Popupfenster in beliebigen Bildern und Bildfenstern schließen kannst.
 
Hallo Thomas_V2.1,

vielen Dank das du dir soviel Zeit genommen hast eine so ausführliche Antwort zu schreiben. Ich werde das am Montag auf Arbeit gleich mal ausprobieren.

Gruß Ralf
 
Zurück
Oben