Jump to content

Empfohlene Beiträge

Geschrieben

Hallo @Thomas_103,

weil die Textfelder vertikal immer zentriert positioniert werden, musst du für eine konstante Zeilenzahl sorgen.
Die Anzahl Zeilen legst du einmal fest.

Und dann füllst du jeden Text vor der Ausgabe mit Leerzeilen auf.

Zu deiner EV: Weil du für jedes Schlagwort ein eigenes Ereignis angelegt hast, siehst du eine Fehlermeldung, wenn du dein Beispiel mit geöffnetem Protokollfenster betrachtest.
Sobald der Zug nämlich im Depot ist, steht er für die weiteren Ereignisse nicht mehr zur Verfügung. Aber beim Betreten des einen Kontakts werden alle ihm zugewiesenen Ereignisse getriggert. Deshalb heißt es dann irgendwann: "Fahrzeug? Kenn ich nicht. Hier ist kein Fahrzeug ...", denn das ist schon durch eins der anderen Ereignisse ins Depot gewandert.

Du musst bitte in einem einzelnen Ereignis alle Züge unterscheiden und jeden auf seinen Platz schicken.
Und statt zig Schlagwörter einzeln abzufragen, speichere doch im Zug das zu ihm gehörige Depot. Das ist der Sinn von Objektvariablen. Schlagwörter sind hier meines erachtens das falsche Mittel. 

Viele Grüße
Götz

Geschrieben (bearbeitet)

Danke für deine Antwort @Goetz

Wie teile ich dem Zug / Lok dass Depot zu?

Und wie geht das mit den Textfeldern?

LG Thomas

Nachtrag:  Die Züge sollen aber in zwei Depots (West und Ost) jeweils in die entsprechende Kategorie einfahren.

Also TGV, Regional Bahn usw.

Bearbeitet von Thomas_103
Geschrieben

Hallo @Thomas_103,

zum füllen der Liste habe ich, basierend auf @Roter Brummers Beispiel, ein benutzerdefiniertes Ereignis erstellt.

function DepotInhalt(Depot)
  local Anzahl = Depot.count
  if Anzahl > 0 then
    local Textmuster_Zeile  = "%2d %-16s %-20s"
    local Textmuster_Zusatz = "  und %d weitere Züge"
    local Zugname           = Depot.entries[0].name
    local Zuggattung        = Depot.entries[0].variables["Zugtyp"] or " "
    local Liste             = {Textmuster_Zeile:format(1, Zugname, Zuggattung)}
    local Leerzeile ="   "
    local lfdNr = 1
    for k, v in ipairs(Depot.entries) do
      if Anzahl > 10 and k >= 9 then
        Liste[10] = Textmuster_Zusatz:format(Anzahl-9)
        break
      else
        Zugname    = v.name
        Zuggattung = v.variables["Zugtyp"] or " "
        table.insert(Liste, Textmuster_Zeile:format(k+1, Zugname, Zuggattung))
        lfdNr = k+1
      end
    end
    if Anzahl <= 10 then
      for i = lfdNr+1, 10, 1 do
        Liste[i] = string.format("%2d",i)
      end
    end
    return table.concat(Liste, "\n")
  else
    return "     Depot ist leer"
  end
end

Zusätzlich wird die Objektvariable Zugtyp ausgegeben.

Aufgerufen wird das Script beim betreten oder verlassen des Depots. Das Depot und die Textliste wird als Variable übergeben.

$("Liste Depot 1").text = DepotInhalt($("Depot1"))      

In der graphischen EV sieht das so aus:

temp.thumb.JPG.c4206aa1cce07d160ee64c4b420de8bd.JPG

In der Anlage stellt es sich so dar:

temp2.JPG.c17a2660fd6e6ba2ff8f13c9677d826a.JPG

Rechts sind die Taster zum starten der entsprechenden Züge.

LG Ronald

Geschrieben

Hallo Roland @RoniHB

Könntest du mir die Anlage bzw. nur eine Anlage mit den Depots und der EV zur Verfügung stellen?

Welche Eintragungen hast du in den Loks gemacht?

Und wieviel Züge passen denn in ein Depot rein?

LG Thomas

Geschrieben (bearbeitet)
vor 1 Stunde schrieb Thomas_103:

Wie teile ich dem Zug / Lok das Depot zu?

Dort, wo du ein Schlagwort vergibst, kannst du stattdessen auch eine Variable vom Typ "Objekt" anlegen.
Dieser Variablen gibst du in jedem Zug denselben Namen: "Depot Ost" (und später bekommt jeder Zug eine zweite Variable "Depot West")
In der Variablen speicherst du das Ost Depot für diesen Zug (= ICE, EC, NightJet etc.)

Und im Ereignis für den Kontaktpunkt gibst du dann das Depot als erweiterte Variable an. Objekt = Auslöser fahrzeug, Name = Depot Ost

Depotlisten Vorschlag für Thomas.mbp

Viele Grüße
Götz

Bearbeitet von Goetz
Schreibfehler korrigiert
Geschrieben
vor 15 Minuten schrieb Thomas_103:

Könntest du mir die Anlage bzw. nur eine Anlage mit den Depots und der EV zur Verfügung stellen?

Hat @Roter Brummer und @Goetz bereits getan.

vor 17 Minuten schrieb Thomas_103:

Welche Eintragungen hast du in den Loks gemacht?

Die Loks haben eine Textvariable, wo ich den Zugtyp oder eine andere zusätzliche Info eintragen und dann in der Liste anzeigen kann.

Name: Zugtyp, Typ: Text, Wert: Güterzug

vor 18 Minuten schrieb Thomas_103:

Und wieviel Züge passen denn in ein Depot rein?

Das weiss ich jetzt garnicht. Ich in meiner Liste zeige die ersten 10 Züge und die Anzahl der restlichen Züge an.

 

Geschrieben
vor 1 Stunde schrieb Thomas_103:

Kann man den Inhalt von drei Depots auf einem Textfeld ausgeben lassen?

Du verkettest die Ergebnisse, die das Skript DepotInhalt liefert (hier: für zwei Depots):

$("Beschriftung Depot Ost").text = DepotInhalt($("Depot Einfahrt Ost")) .. "\n" .. DepotInhalt($("Depot Einfahrt West"))

 

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...