TIA TIA V19 Unified Java Script für Hintergrund blinken

.K.

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

ich bin auf der Suche nach dem passenden Java Script um den Hintergrund eines Buttons oder eine Box blinken zu lassen.
Die Dynamisierung über Variable und Farbcode klappt super, aber ich weiß nicht, mit welchem Befehl ich das Blinken aktivieren kann.
Da ich nicht so gut im Erklären bin, folgen ein Bild und mein Code:
1732004584361.png
das offene Dropdown Menü rechts, da kann man Blinken? Ja/Nein anwählen. Wie bekomme ich das in ein Script?
Und richtig nice wäre, wenn ich noch wüsste, wie ich die Frequenz (letzte Spalte) im Script ändere.

Hier mein Code für die Hintergrundfarbe:
Javascript:
export function Textfeld_30_BackColor_Trigger(item) {
    var value;
let Neuwertmeldung = Tags("Neuwertmeldung");
let xNeuwertmeldung = Neuwertmeldung.Read();

let Altwertmeldung = Tags("Altwertmeldung");
let xAltwertmeldung = Altwertmeldung.Read();

let RotGelb = Tags("Rot1_Gelb0");
let xRotGelb = RotGelb.Read();

if (xRotGelb){
  if (xNeuwertmeldung || xAltwertmeldung) {
    value = 0xFFFFFF00
  } else {
    value = 0xFFC0C0C0
  }
} else {
  if (xNeuwertmeldung || xAltwertmeldung) {
    value = 0xFFFF0000
  } else {
    value = 0xFFC0C0C0
  }
}
   return value;
}

Es sollte so sein, dass bei Neuwertmeldung der Hintergrund blinkt und bei Altwertmeldung nicht.

Vielen Dank schon mal an euch :-)
 
Das geht mit "PropertyFlashing".
Manchmal direkt mit dem "item" welches dem Script übergeben wird und manchmal musst du auf dein Element direkt zugreifen.
Wann was davon greift, weiß ich leider auch nicht.

Direkt mit dem übergebenem item:
Javascript:
export function Textfeld_30_BackColor_Trigger(item) {
    var value;
    let neuwertmeldung = Tags("Neuwertmeldung").Read();
    let altwertmeldung = Tags("Altwertmeldung").Read();
    
    if (neuwertmeldung) {
        
        item.PropertyFlashing("BackColor", true, 0xFFFFFF00, 0xFFC0C0C0, UI.Enums.HmiFlashingRate.Fast);
        
    } else if (altwertmeldung) {
        
        item.PropertyFlashing("BackColor", false);

    }

   return value;
}

Mit Zugriff auf das Element: (im Faceplate "Screen" durch "Faceplate" ersetzen)
Javascript:
export function Textfeld_30_BackColor_Trigger(item) {
    var value;
    let myItem = Screen.Items(item.Name);
    let neuwertmeldung = Tags("Neuwertmeldung").Read();
    let altwertmeldung = Tags("Altwertmeldung").Read();
    
    if (neuwertmeldung) {
        
        myItem.PropertyFlashing("BackColor", true, 0xFFFFFF00, 0xFFC0C0C0, UI.Enums.HmiFlashingRate.Fast);
        
    } else if (altwertmeldung) {
        
        myItem.PropertyFlashing("BackColor", false);

    }

   return value;
}

Beschreibung Funktion:
Javascript:
PropertyFlashing(Eigenschaftsname, Aktivieren, Hauptfarbe, Alternativfarbe, Geschwindigkeit)

Eigenschaftname: als string z.B. "BackColor" oder "ForeColor".
Aktivieren: true oder false.
Hauptfarbe: optional, in HEX
Alternativfarbe: optional, in HEX
Geschwindigkeit: optional, standart ist Medium:
UI.Enums.HmiFlashingRate.Fast
UI.Enums.HmiFlashingRate.Medium
UI.Enums.HmiFlashingRate.Slow
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das geht mit "PropertyFlashing".
Manchmal direkt mit dem "item" welches dem Script übergeben wird und manchmal musst du auf dein Element direkt zugreifen.
Wann was davon greift, weiß ich leider auch nicht.

Direkt mit dem übergebenem item:
Javascript:
export function Textfeld_30_BackColor_Trigger(item) {
    var value;
    let neuwertmeldung = Tags("Neuwertmeldung").Read();
    let altwertmeldung = Tags("Altwertmeldung").Read();
   
    if (neuwertmeldung) {
       
        item.PropertyFlashing("BackColor", true, 0xFFFFFF00, 0xFFC0C0C0, UI.Enums.HmiFlashingRate.Fast);
       
    } else if (altwertmeldung) {
       
        item.PropertyFlashing("BackColor", false);

    }

   return value;
}

Mit Zugriff auf das Element: (im Faceplate "Screen" durch "Faceplate" ersetzen)
Javascript:
export function Textfeld_30_BackColor_Trigger(item) {
    var value;
    let myItem = Screen.Items(item.Name);
    let neuwertmeldung = Tags("Neuwertmeldung").Read();
    let altwertmeldung = Tags("Altwertmeldung").Read();
   
    if (neuwertmeldung) {
       
        myItem.PropertyFlashing("BackColor", true, 0xFFFFFF00, 0xFFC0C0C0, UI.Enums.HmiFlashingRate.Fast);
       
    } else if (altwertmeldung) {
       
        myItem.PropertyFlashing("BackColor", false);

    }

   return value;
}

Beschreibung Funktion:
Javascript:
PropertyFlashing(Eigenschaftsname, Aktivieren, Hauptfarbe, Alternativfarbe, Geschwindigkeit)

Eigenschaftname: als string z.B. "BackColor" oder "ForeColor".
Aktivieren: true oder false.
Hauptfarbe: optional, in HEX
Alternativfarbe: optional, in HEX
Geschwindigkeit: optional, standart ist Medium:
UI.Enums.HmiFlashingRate.Fast
UI.Enums.HmiFlashingRate.Medium
UI.Enums.HmiFlashingRate.Slow
Hey,

Bei mir wird bei der ersten Variante angezeigt, dass das "item" nicht die Eigenschaft "PropertyFlashing" beinhaltet. Wäre das dann ein Zeichen dafür, dass ich die zweite von dir vorgestellte Variante nutzen müsste?
Und ich bin mir nicht ganz sicher, was du bei der zweiten Variante mit "im Faceplate Screen durch Faceplate ersetzen" genau gemeint hast. Vielen Dank schon mal im Voraus für die Hilfe.
 
Hey,

Bei mir wird bei der ersten Variante angezeigt, dass das "item" nicht die Eigenschaft "PropertyFlashing" beinhaltet. Wäre das dann ein Zeichen dafür, dass ich die zweite von dir vorgestellte Variante nutzen müsste?
Und ich bin mir nicht ganz sicher, was du bei der zweiten Variante mit "im Faceplate Screen durch Faceplate ersetzen" genau gemeint hast. Vielen Dank schon mal im Voraus für die Hilfe.
Am besten packst du deinen Code Schnipsel hier mal rein oder du probierst mal Variante 2.

Zur zweiten Frage:

Im normalem Bildfenster
Javascript:
    let myItem = Screen.Items(item.Name);

Im Faceplate
Javascript:
    let myItem = Faceplate.Items(item.Name);
 
Bei mir wird bei der ersten Variante angezeigt, dass das "item" nicht die Eigenschaft "PropertyFlashing" beinhaltet. Wäre das dann ein Zeichen dafür, dass ich die zweite von dir vorgestellte Variante nutzen müsste?
Möglich.
Hast du mal in der F1-Hilfe nachgeschaut ob das betreffende Objekt tatsächlich keine "PropertyFlashing" besitzt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,

Bei mir wird bei der ersten Variante angezeigt, dass das "item" nicht die Eigenschaft "PropertyFlashing" beinhaltet. Wäre das dann ein Zeichen dafür, dass ich die zweite von dir vorgestellte Variante nutzen müsste?
Und ich bin mir nicht ganz sicher, was du bei der zweiten Variante mit "im Faceplate Screen durch Faceplate ersetzen" genau gemeint hast. Vielen Dank schon mal im Voraus für die Hilfe.

Was hast du denn für ein Item, dass du gerne blinken lassen möchtest?
Dann könnte man auch beurteilen, ob das generell blinken kann.
 
Zuletzt bearbeitet:
Am besten packst du deinen Code Schnipsel hier mal rein oder du probierst mal Variante 2.

Zur zweiten Frage:

Im normalem Bildfenster
Javascript:
    let myItem = Screen.Items(item.Name);

Im Faceplate
Javascript:
    let myItem = Faceplate.Items(item.Name);
Danke für eure schnellen Antworten, mit der zweiten Variante über die Adressierung mit Faceplate.Items() hat es jetzt funktioniert. Ich wollte ganz klassisch einen Kreis dynamisieren und hat auch noch den Fehler drin, dass in der Funktion PropertyFlashing() die Haupt- und Alternativfarbe identisch waren, damit kann ich natürlich keinen Effekt in der Visu sehen.
Danke euch!
 
:ROFLMAO: manchmal sind es die einfachen Fehler, auf die niemand kommt. Zwei unterschiedliche Farben sollte man schon wählen ;)
Aber gut, dass du es jetzt gefunden hast.

Hast du mal geschaut, ob es mit der anderen Variante auch funktioniert, wenn du unterschiedliche Farben auswählst?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:ROFLMAO: manchmal sind es die einfachen Fehler, auf die niemand kommt. Zwei unterschiedliche Farben sollte man schon wählen ;)
Aber gut, dass du es jetzt gefunden hast.

Hast du mal geschaut, ob es mit der anderen Variante auch funktioniert, wenn du unterschiedliche Farben auswählst?
Ja das ist wahr😅

Mit der anderen Variante hatte ich den Syntax-Fehler, dass es in der übergebenen Strukturvariable "item" keine Eigenschaft "PropertyFlashing" gibt. Deswegen hab ich da nicht weiter rumprobiert.
 
Zurück
Oben