WinCC C-Skript Bildwechsel in Bildfenster funktioniert nicht

dirknico

Level-2
Beiträge
236
Reaktionspunkte
14
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ein Bild "Start.pdl".
In diesem Startbild gibt es u.a. ein Bildfenster "Bild" in dem verschiedene Bilder (Anlagenteile) angezeigt werden sollen.

Über die Direktverbindung funktioniert der "Bildwechsel" problemlos,
über das Skript funktioniert es nicht, das ganze hängt sich trotz fehlerfreier Übersetzung auf.
Warum? Was ist falsch?

Code:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{

#define Bildname"Anlagenübersicht.Pdl"
#define Objektname"Bild"

SetPictureName(lpszPictureName, Objektname ,Bildname);

}
 
Wenn das Script beispielsweise über einen Button ausgeführt wird, der sich im Bild innerhalb des Bildfensters befindet, dann funktioniert das nicht, weil in lpszPictureName der Bild inklusive Pfad zum Bild im Bildfenster ist. Bei dir dann vermutlich "START.BILD:ANLAGENÜBERSICHT".
Da sich im Bild "Anlagenübersicht" aber vermutlich kein Bildfenster "Bild" befindet, kann die Funktion nicht ausgeführt werden.

Bei WinCC lässt sich ein "funktioniert nicht" auch genauer herausfinden, in dem du entweder die Diagnose mit apdiag startest, oder zum test ein Diagnosefenster in ein Bild einfügst. Dort dürfte es auch eine genauere Fehlermeldung geben.

Damit das Skript funktioniert, könntest du auch den Bildnamen in dem sich das Bildfenster befinden spezifizieren, also vermutlich so:

C:
SetPictureName("Start", "Bild", "Anlagenübersicht");


Oder wenn es flexibler sein soll, kannst du in lpszPictureName das letzte Vorkommen von "." suchen z.B. mit strrchr , und den linken Teil davon abtrennen und das als Bildname verwenden. Das ginge aber auch mit Funktionen wie GetParentPicture, oder mit GetParentPictureWindow müsstest du auch nicht einmal wissen, in welchem Bildfenster sich das eigene Bild gerade befindet.

Übrigens ergeben die defines nur einen Sinn, wenn du auch die vorbereiteten Tagname Sektionen in den Kommentaren behältst. Nur dann werden die Bildnamen auch in der Querverweisliste gefunden.
 
Zurück
Oben