Hilfe zu Variablen gesucht Topic is solved

jpultar
Posts: 789
Joined: 23.04.2017, 14:33

Hilfe zu Variablen gesucht

Post by jpultar » 15.03.2019, 14:50

Hallo zusammen,

ich möchte mir gerne ein generisches Script erstellen, um in einem Textfeld die Schriftfarbe zu ändern.

Ausgangssituation:

Ich habe mehrere Textfelder, die dynamisch aktualisiert werden. Getriggert werden diese Aktualisierungen über Aktionen aus einem Block - einmal bei "enter" einmal bei "free".
Die betreffenden Blöcke/Aktionen ändern jeweils ein anderes Textfeld. Ich möchte nun nicht nur den Text, sondern auch die Textfarbe ändern.

Darum möchte ich die Kennung des zu ändernden Textfeldes als Variable in einem Script verarbeiten.

Hier ein Beispiel, wie die Textfeld Kennung statisch verarbeitet wird.

Code: Select all

<xmlscript>

<vr id="vr_TextID" text="Kennung_Textfeld" />

<model cmd="change">
   <tx id="@vr_TextID" red="175" green="1" blue="1" />
</model>
 
</xmlscript>
Das funktioniert so, jedoch ist das Textfeld, wo die Schriftfarbe geändert werden soll, eben statisch.
Wie kommt die Textfeld-Kennung - welche aus einem Block über eine Aktion aufgerufen wird - in eine Variable?

Code: Select all

<vr id="vr_TextID" text="VARIABLE" />
Ich vermute mal mit query(?) aber da fehlt mir jegliche Erfahrung. Wiki zu "query" habe ich gesehen, hat mit aber mangels Erfahrung nicht weitergeholfen.
Danke für jeden Tipp :D

peter&basti
Moderator
Posts: 6415
Joined: 09.01.2012, 22:09
Location: Vienna, Austria

Re: Hilfe zu Variablen gesucht

Post by peter&basti » 15.03.2019, 15:27

Hallo Jürgen,
Die betreffenden Blöcke/Aktionen ändern jeweils ein anderes Textfeld.
Zeig mal die Aktion und den Aktionsaufruf her.

hermannk
Moderator
Posts: 896
Joined: 06.07.2014, 12:32
Location: Kiel Germany

Re: Hilfe zu Variablen gesucht

Post by hermannk » 15.03.2019, 16:31

Moin Jürgen,
ich hatte mal eine Lösung für folgende Aufgabenstellung erarbeitet:
- der Zustand jeder Weiche soll farblich und inhaltlich in einem zugehörigen Textfeld dargestellt werden;
- ein Script für alle Weichen.
Die Lösung:
a) Namenskonvention:
- Weichen-ID= swXX mit XX = 01, 02, 03, ... 99;
- Text-ID= tx-swXX mit swXX als Weichen-ID;
- das Script wird als Aktion in jeder Weiche definiert
-- für den Zustand "straight" (gerade) und
-- für den Zustand "turnout" (abzweigend);
-- mit %callerid% kann die ID der Weiche übergeben werden.
Nun kann die ID des Textfeldes berechnet werden mit:
<vr id="vr_TextID" text="tx-%callerid%" />
also für Weiche "sw08" wird die Text-ID "tx-sw08" berechnet.
b) das Script:
<xmlscript>
<vr id="vr_SwitchNumber" text="%callerid%" start="2" length="2" generated="true" />
<vr id="vr_TextID" text="tx-%callerid%" />
<!-- check the switch state -->
<if state="sw %callerid% = straight">
<then>
<model cmd="change">
<tx id="@vr_TextID" red="0" green="255" blue="0" />
</model>
<tx id="@vr_TextID" format="@vr_SwitchNumber S" />
</then>
<else>
<model cmd="change">
<tx id="@vr_TextID" red="255" green="0" blue="0" />
</model>
<tx id="@vr_TextID" format="@vr_SwitchNumber T" />
</else>
</if>
</xmlscript>

Geht diese Lösung in deine Richtung?
Gruß
Hermann

hermannk
Moderator
Posts: 896
Joined: 06.07.2014, 12:32
Location: Kiel Germany

Re: Hilfe zu Variablen gesucht

Post by hermannk » 15.03.2019, 16:33

Moin Jürgen,
ich hatte mal eine Lösung für folgende Aufgabenstellung erarbeitet:
- der Zustand jeder Weiche soll farblich und inhaltlich in einem zugehörigen Textfeld dargestellt werden;
- ein Script für alle Weichen.
Die Lösung:
a) Namenskonvention:
- Weichen-ID= swXX mit XX = 01, 02, 03, ... 99;
- Text-ID= tx-swXX mit swXX als Weichen-ID;
- das Script wird als Aktion in jeder Weiche definiert
-- für den Zustand "straight" (gerade) und
-- für den Zustand "turnout" (abzweigend);
-- mit %callerid% kann die ID der Weiche übergeben werden.
Nun kann die ID des Textfeldes berechnet werden mit:
<vr id="vr_TextID" text="tx-%callerid%" />
also für Weiche "sw08" wird die Text-ID "tx-sw08" berechnet.
b) das Script:

Code: Select all

<xmlscript>
  <vr id="vr_SwitchNumber" text="%callerid%" start="2" length="2" generated="true" />
  <vr id="vr_TextID" text="tx-%callerid%" />
  <!-- check the switch state -->
  <if state="sw %callerid% = straight">
    <then>
      <model cmd="change">
        <tx id="@vr_TextID" bgred="0" bggreen="255" bgblue="0" />
      </model>
      <tx id="@vr_TextID" format="@vr_SwitchNumber S" />
    </then>
    <else>
      <model cmd="change">
        <tx id="@vr_TextID" bgred="255" bggreen="0" bgblue="0" />
      </model>
      <tx id="@vr_TextID" format="@vr_SwitchNumber T" />
    </else>
  </if>
</xmlscript>
Gruß
Hermann

jpultar
Posts: 789
Joined: 23.04.2017, 14:33

Re: Hilfe zu Variablen gesucht

Post by jpultar » 15.03.2019, 16:37

Hallo Peter,

anbei der Plan (Test.xml) als Minibeispiel und der Aufruf aus Block bk6.
Das funktioniert. Nun möchte ich die Farbe des Textes bei "enter" in rot und bei "free" in grün haben.
Textfeld_01.PNG
Attachments
Test.xml
(53.44 KiB) Downloaded 3 times

jpultar
Posts: 789
Joined: 23.04.2017, 14:33

Re: Hilfe zu Variablen gesucht

Post by jpultar » 15.03.2019, 16:41

Hallo Hermann,

so wie ich das sehe, geht das in die Richtung was ich da vorhabe.
Ich werde am Wochenende mal versuchen, dein Script auf das was ich vorhabe anzupassen.

Vielen Dank :thumb_up:

hermannk
Moderator
Posts: 896
Joined: 06.07.2014, 12:32
Location: Kiel Germany

Re: Hilfe zu Variablen gesucht

Post by hermannk » 15.03.2019, 18:41

OK Jürgen,
falls du nicht zurecht kommst, schaust du in meine Lösung.
Gruß
Hermann
Attachments
BlockBelegungText.zip
(7.76 KiB) Downloaded 8 times

jpultar
Posts: 789
Joined: 23.04.2017, 14:33

Re: Hilfe zu Variablen gesucht

Post by jpultar » 15.03.2019, 19:57

Hallo Hermann,

jetzt war ich natürlich neugierig und habe dein Script ausprobiert. Ich kann nur sagen - SUPER :thumb_up:

Dafür hätte ich Tage gebraucht und wäre dann sicher auch nicht auf so eine elegante Lösung gekommen.
Ich habe etwas damit getestet und die Texte mit den Variablen: https://wiki.rocrail.net/doku.php?id=te ... #variablen erweitert.

Damit kann man nun sehr viel schöne Dinge machen :coding:

Vielen Dank :D

hermannk
Moderator
Posts: 896
Joined: 06.07.2014, 12:32
Location: Kiel Germany

Re: Hilfe zu Variablen gesucht

Post by hermannk » 15.03.2019, 20:02

Danke Jürgen,
weiterhin viel Erfolg mit Rocrail.
Gruß
Hermann
PS: mache doch bitte einen grünen Haken an den Thread - danke.

jpultar
Posts: 789
Joined: 23.04.2017, 14:33

Re: Hilfe zu Variablen gesucht

Post by jpultar » 17.03.2019, 07:39

Hallo Hermann,

warum zieht das Script nicht bei Block-Status "enter"?

Laut Wiki - https://wiki.rocrail.net/doku.php?id=ac ... -de#status - sollte das doch gehen, oder mache ich einen Denkfehler?

Ich habe mal das ergänzte Script mit "reserved" (funktioniert) und "enter" (funktioniert nicht) angehängt.
Attachments
AC-UPDATE-TX_BKxx_V2.xml
(1.58 KiB) Downloaded 5 times

hermannk
Moderator
Posts: 896
Joined: 06.07.2014, 12:32
Location: Kiel Germany

Re: Hilfe zu Variablen gesucht

Post by hermannk » 17.03.2019, 09:02

Moin Jürgen,
meine erste vage Vermutung:
- in den Eigenschaften von dem Block fehlt bei den Aktionen ein Eintrag, das Script auch beim "Status = enter" auszuführen.
Wenn ich in deinem alten Beispiel-Plan bei den Aktionen das Script mit dem Status "enter" hinzufüge, kommt zumindest die Anzeige "reserved".
Wieso immer noch nicht "enter" angezeigt wird, kann ich dir nicht sagen.
Ich vermute, der Status "enter" ist sehr kurzlebig und wird sofort durch den Status "reserved" ersetzt.
Gruß
Hermann
PS: dir ist doch klar, das diese optische Show auch Rechenleistung kostet; sei also zurückhaltend damit.
Attachments
AktionAuchBeiEnterAusfuehren.png

hermannk
Moderator
Posts: 896
Joined: 06.07.2014, 12:32
Location: Kiel Germany

Re: Hilfe zu Variablen gesucht

Post by hermannk » 17.03.2019, 09:09

Moin Jürgen,
hermannk wrote:
17.03.2019, 09:02
Ich vermute, der Status "enter" ist sehr kurzlebig und wird sofort durch den Status "reserved" ersetzt.
So ein Quatsch! Der Block ist längst "reserved", noch bevor das "enter" auftritt.
Mit dem "enter" bleibt er weiterhin "reserved".
Gruß
Hermann

jpultar
Posts: 789
Joined: 23.04.2017, 14:33

Re: Hilfe zu Variablen gesucht

Post by jpultar » 17.03.2019, 09:36

Hallo Herman,
PS: dir ist doch klar, das diese optische Show auch Rechenleistung kostet; sei also zurückhaltend damit.
damit bin ich sehr sparsam 8) die Spielerei ist nur bei den beiden Einfahrtsblöcken vor den Einfahrtweichen im Bahnhof eingesetzt, so als Art "Zugmeldung" wer da gerade ankommt.

In meinem ersten Test hatte ich bei deinem Originalbeispiel "occupied" mal gegen "enter" getauscht.
Da ist es mir aufgefallen, dass es bei "enter" nicht zieht.

Ich versuche das später noch mal zu verifizieren und gebe Feedback.

jpultar
Posts: 789
Joined: 23.04.2017, 14:33

Re: Hilfe zu Variablen gesucht

Post by jpultar » 17.03.2019, 11:01

Hallo Hermann,

ich habe es noch einmal getestet - hier mit "AC-UPDATE-TX_BKxx_V3.xml" - geprüft wird auf "free" und "enter"
Ansonsten wird "other" ausgeführt. Ergebnis = "enter" zieht nicht.

Aktion wird ohne Status ausgeführt - der soll ja geprüft werden und Aktion soll bei jedem Blockereignis ausgeführt werden.
bk3.PNG
Attachments
Test.xml
(53.44 KiB) Downloaded 1 time
AC-UPDATE-TX_BKxx_V3.xml
(1.08 KiB) Downloaded 3 times

Schorse
Posts: 5160
Joined: 12.09.2008, 19:38
Location: D - Niedersachsen

Re: Hilfe zu Variablen gesucht

Post by Schorse » 17.03.2019, 11:50

Hallo Jürgen,
Laut Wiki - https://wiki.rocrail.net/doku.php?id=ac ... -de#status - sollte das doch gehen, oder mache ich einen Denkfehler?
Nicht nur ein Denkfehler!
Du musst schon an der richtigen Stelle nachsehen: Status-Objekte

Post Reply

Return to “XMLScripting & Aktionen (DE)”