WinCC Unified Popup aus Bildfenster heraus positionieren

Staubsauger

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

ich öffne beim Drücke auf einen Button ein Faceplate als fest positioniertes Popup.
Die Position des PopUps wird relativ zum linken oberen Eck des Buttons ermittelt. Die Position des Buttons ermittle ich im selben Script, welches mir auch das Popup öffnet. Dazu nutze ich item.Top bzw. item.left.

Javascript:
// Bildschirm sperren
let varScreenLock = Tags("screenLocked");
varScreenLock.Write(true);

// Popup öffnen
let properties  = {screenLocked:{Tag:"screenLocked"}, anzeigeModus:{Tag:"anzeigeModus"}};

HMIRuntime.Trace("\n Pos_x: " + item.Left + "\n Pos_y: " + item.Top);



let popup = Faceplate.OpenFaceplateInPopup("Analoganzeige_Auswahlmenu_V_0_0_17", "unused_Title", properties );
popup.Left = item.Left -5;
popup.Top = item.Top + 50;
popup.Visible = true;
popup.WindowFlags=132; // 132 = 10000100 -> Einstellung, dass Popup fest und ohne Kopfleiste

Das ganze funktioniert auch sehr gut, wenn ich das innerhalb einer Hauptseite mache.
Jetzt habe ich den Button aber innerhalb eines Bildfensters:

Hauptseite -> Bildfenster -> Button

Problem ist, dass ich mit item.Top bzw. item.left die Position innerhalb des Bildfensters bestimme, bekomme ich die Position innerhalb des Bildfensters (0, 70).
Das Popup wird dann allerdings in Koordinaten des Hauptbildfensters geöffnet und ist entsprechend viel weiter links.


Kann mir hier jemand weiter helfen?
Ich habe versucht mit item.Parent.Top and die Koordinaten zu kommen. Da bekomme ich allerdings einen Error.
 
Mit
Code:
item.Parent.Top
funktioniert das nicht.

Man muss die Position des Bildfensters folgendermaßen bestimmen:
Code:
let pos_subnavi_x = item.Parent.Parent.Left;

Zusammen mit
Code:
let loc_btn_x = item.Left
kann man dann die globale Position bestimmen und das Popup an der gewünschten Stelle öffnen.
 
Zurück
Oben