WinCC In WinCC Pro V13 mit VBS mehrere Texte in einem "Textfeld" einfügen

Tommy89k

Level-2
Beiträge
23
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute !

Ich bin so langsam am verzweifeln:cry:

Ich habe folgendes vor:

Ich möchte in "Wincc Pro" ein Skript (VBA) erstellen, welches mir einen Text in einem "Textfeld" oder einem "Mehrzeiligen Text" ausgeben soll.
Also so zB.:
"Var1 + Var2 + Var3 = Var1Var2Var3"

oder "Var23 + Var69 + Var221= Var23Var69Var221

Hintergrund ist, ich habe ca. 240 Meldungen und möchte angezeigt haben, welche aktiv sind.
sprich ich betätige zb. ein Button und es öffnet sich ein Textfeld, wo darin Steht:

Meldung 23
Meldung 69
Meldung 221
.
.
.
Meldung n


Hier der Code, den ich mit meinem Anfängerwissen zusammen bekommen habe :

Sub OnClick(ByVal item)

Dim Meldetext_1
Dim Meldetext_2

Set Meldetext_1 = HMIRuntime.Screens("Testbild").ScreenItems("Textfeld_1")
Set Meldetext_2 = HMIRuntime.Screens("Testbild").ScreenItems("Textfeld_1")

If SmartTags("Test_BOOL_6") Then Meldetext_1.Text = "Meldetext_1" & vbCrLf
If SmartTags("Test_BOOL_7") Then Meldetext_2.Text = "Meldetext_2" & vbCrLf
End Sub

Nur wenn ich jetzt "Test_BOOL_6" UND "Test_BOOL_7" setze,
wird immer nur eine (die letztgesetzte) Variable bzw. Text ausgegeben.

Hab auch schon eine andere Variante versucht, nur da wird mir gar nichts angezeigt:

Sub OnClick(ByVal item)

Dim Gesamttext
Dim Meldetext_1
Dim Meldetext_2

Set Gesamttext = HMIRuntime.Screens("Testbild").ScreenItems("Textfeld_1")
Gesamttext.Text = Meldetext_1.Text + Meldetext_2.Text

If SmartTags("Test_BOOL_6") Then Meldetext_1.Text = "Meldetext_1" & vbCrLf
If SmartTags("Test_BOOL_7") Then Meldetext_2.Text = "Meldetext_2" & vbCrLf
End Sub

Vielleicht könnt ihr mir helfen, ich kenne mich mit Skripten so gut wie gar nicht aus.

Vielen Dank schon mal im Voraus!
 
Du musst die Strings dazu aneinanderhängen.
Ich würde das mit einer lokalen Variable machen, und deren Wert dann am Ende dem EA-Feld zuweisen

Code:
Dim text

text = ""
If SmartTags("Test_BOOL_6") Then 
  text = text & "Meldetext_1" & vbCrLf
End If

usw.

Meldetext_1.Text = text
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Thomas, für die schnelle Antwort!

Leider funktioniert das nicht, oder ich bekomme es nicht hin.

Wenn ich deinen Code nehme. schreibt er mir gar nichts in mein E/A Feld.

Ich habe mal ein wenig herumprobiert und diesen Code ausprobiert.
Das Problem ist aber hier, das er mir nur die Zeichen ausgibt, die ich hinter "text.Text="" " hinein schreibe.


Code:
Dim text


Set text = HMIRuntime.Screens("Testbild").ScreenItems("Textfeld_1")

[B]text.Text = ""[/B]

If SmartTags("Test_BOOL_6") Then 
  text = text.Text & "Meldetext_1" & vbCrLf
End If

Es muss doch irgendwie möglich sein, Strings(Meldungen) in einer Variable zu Speichern und die angesprochenen Variablen, in einem Text, miteinander zu verketten.

Es ist mir auch nicht möglich, die Meldungen mit "Dim Meldung_1 As String" zu deklarieren.

Gibt es dafür vielleicht irgend einen bestimmten Befehl?

Ich bin da wirklich ein Anfänger auf diesem Gebiet:???:

Vielleicht hast du noch einen weiteren Tip oder eine Idee parat?

Danke dir schonmal!
 
Doch habe ich schon gesehen.
Aber der Compiler markert mir Meldetext_1.Text an, weil es nicht mit "Dim" deklariert wurde?

Wie gesagt, ich bin blutiger Anfänger.

Vielleicht könntet ihr mir das bitte etwas genauer erklären?

Also ich habe mir 2 Buttons angelegt, mit denen ich "test_BOOL_6" und "Test_BOOL_7" setze (Also die Meldungen "Simuliere")

Dann habe ich noch einen weiteren Button, mit dem ich den Script (von Thomas), per "Klicken" anstoße.

Dazu habe ich ein "E/A-Feld_1 angelegt, der mir den "Simulierten" Text ausgeben soll.
Dieses E/A Feld ist absolut passiv (Also Keine Variable hinterlegt).

Ich habe schon soviel ausprobiert, irgendwie weiß ich wirklich nicht mehr weiter.

Ich habe das auch schon mit "Txt.datei" erzeugen und hineinschreiben probiert, hat auch soweit funktioniert.
Nur hätte ich diese txt. datei stetig "clearen" müssen, weil das geschriebene gespeichert bleibt.

Ich habs dann mit CScript probiert, nur da hat bei mir gar nichts funtkioniert.

Irgendwie ist bei mir der Wurm drin.:sad:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es müßte auch so heissen :
Code:
HMIRuntime.Screens("Testbild").ScreenItems("Textfeld_1").Text
für Einlesen des vorhandenen Textes und zum Hineinschreiben des neuen Textes - wobei du hier noch nachschauen MUSST, ob die Property des Textfeldes wirklich "Text" heißt oder nicht vielleicht etwas anders ...

Gruß
Larry
 
Es hat klappt...
Vielen Dank für eure Hilfe!

Code:
Dim text

text = ""
If SmartTags("Test_BOOL_6") Then 
  text = text & "Meldetext_1" & vbCrLf
End If

If SmartTags("Test_BOOL_7") Then 
  text = text & "Meldetext_2" & vbCrLf
End If

HMIRuntime.Screens("Testbild").ScreenItems("Mehrzeiliger Text_1").Text = text

End Sub

Ich war echt schon am verzweifeln...

Gruß
Tommy
 
Zurück
Oben