Bewegen eines Objekts in der Runtime

matziane

Level-1
Beiträge
120
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
habe vor ein Objekt in der Runtime anhand von Variablenwerten einzublenden und über den Bildschirm zu bewegen.
Habe dazu schon folgendes Script erstellt und das mit einem Blinkmerker verbunden, dieser wird zyklisch fortlaufend alle 100ms bearbeitet und führt bei Wertänderung das Script aus.
Ist kein Objekt vorhanden, so steht in den Variablen
SmartTags("DB_CALC_POS_Objekt.Objekt.Nummer[1].Vorderkante" und SmartTags("DB_CALC_POS_Objekt.Objekt.Nummer[1].Hinterkante" jeweils 0 drin.
Nun ist es so, dass wenn kein Objekt vorhanden ist bzw. der Wert relativ klein kommt die Fehlermeldung "Fehler 'Überlauf' in Script <Objektverfolgung_Objekt1> in Zeile 25
welches diese wäre Object.Left = Object_Left'Position links ausgeben
Ist der Wert ungleich 0 bzw. größer als ca. 1000 dann verschwindet dieses Meldungsfenster.

Die Werte von Vorderkante und Hinterkante liegen im Intergerformat im Bereich 0 - 15065 vor.
Bestimmt habe ich irgendwo im Script einen Fehler, bzw. habt ihr eine beseere Variante für dieses Vorhaben.

Dim Laenge_max 'Variablen deklarieren
Dim Laenge_min
Dim Pixel_max
Dim Pixel_min
Dim Object_Left
Dim Object_Width
Dim Object
Dim Faktor
Dim Offset
Dim objActiveScreen
Laenge_max = 15065'Maße vorbelegen
Laenge_min = 80
Pixel_max = 620
Pixel_min = 80
Faktor = (Laenge_min-Pixel_max)/(Laenge_max-Pixel_min)'Faktor und Offset errechnen
Offset = Pixel_max-(Laenge_min-Pixel_max)/(Laenge_max-Pixel_min)*Pixel_min
Set Object_Width = SmartTags("interne Variablen\Object1_Width")'interne Variablen setzen
Set Object_Left = SmartTags("interne Variablen\Object1_Left")
'Positionen errechnen
Object_Left = Round(SmartTags("DB_CALC_POS_Objekt.Objekt.Nummer[1].Vorderkante")*Faktor+Offset,0)
Object_Width = Round(SmartTags("DB_CALC_POS_Objekt.Objekt.Nummer[1].Hinterkante")*Faktor+Offset,0)
objActiveScreen = HmiRuntime.BaseScreenName'aktuelles Bild ermitteln
If objActiveScreen = "Regelung\Prozessbild" Then'wenn Prozessbild dann weiter arbeiten
Set Object = HmiRuntime.Screens("Regelung\Prozessbild").ScreenItems("Glasobjekt_1")'Objekt vorbelegen
Object.Left = Object_Left'Position links ausgeben
If Object_Width<=0 Then
Object.Width = Pixel_max-Object_Left
Else
Object.Width = Object_Width-Object_Left'Länge ausgeben
End If
Else
Exit Sub
End If
 
Zurück
Oben