Thomas_103 Geschrieben 6. Juni Geschrieben 6. Juni Hallo an die Spezialisten, wie kann ich die ausgegebene Liste eines Depot so hinbekommen damit die neue Zeile darunter erscheint und die erste Zeile in der angegebenen Position bleibt? LG Thomas Depots.mbp
Goetz Geschrieben 6. Juni Geschrieben 6. Juni 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
Thomas_103 Geschrieben 6. Juni Autor Geschrieben 6. Juni (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 6. Juni von Thomas_103
RoniHB Geschrieben 6. Juni Geschrieben 6. Juni 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: In der Anlage stellt es sich so dar: Rechts sind die Taster zum starten der entsprechenden Züge. LG Ronald
Thomas_103 Geschrieben 6. Juni Autor Geschrieben 6. Juni 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
Goetz Geschrieben 6. Juni Geschrieben 6. Juni (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 6. Juni von Goetz Schreibfehler korrigiert
Roter Brummer Geschrieben 6. Juni Geschrieben 6. Juni vor 7 Minuten schrieb Thomas_103: Könntest du mir die Anlage bzw. nur eine Anlage mit den Depots und der EV zur Verfügung stellen? Demo Depotlisten.mbp HG Brummi
RoniHB Geschrieben 6. Juni Geschrieben 6. Juni 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.
Thomas_103 Geschrieben 6. Juni Autor Geschrieben 6. Juni Kann man den Inhalt von drei Depots auf einem Textfeld ausgeben lassen? Wie trage ich das in das Skript ein? Mit LUA kenne ich mich Null aus. LG Thomas
Phrontistes Geschrieben 6. Juni Geschrieben 6. Juni 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"))
HWB Berlin Geschrieben Montag um 10:15 Uhr Geschrieben Montag um 10:15 Uhr Hallo @Thomas_103 @RoniHB, in ein Depot passen 1000 Fahrzeuge von 0-999 Gruß Hermann
Thomas_103 Geschrieben Montag um 10:34 Uhr Autor Geschrieben Montag um 10:34 Uhr Danke @HWB Berlin, 1000 Fahrzeuge, heißt egal ob Loks oder Wagen, gesamt 1000. Oder 1000 Züge (Lok + 9 Wagen x 1000)
Phrontistes Geschrieben Montag um 11:13 Uhr Geschrieben Montag um 11:13 Uhr vor 57 Minuten schrieb HWB Berlin: 1000 Fahrzeuge von 0-999 Gemeint ist natürlich Zugverbände von 0-999.
EASY Geschrieben Montag um 13:59 Uhr Geschrieben Montag um 13:59 Uhr Hallo, noch ein allgemeiner Hinweis: Das Textfeld ist in seiner max. Breite beschränkt. Wenn eine Zeile zu lang ist, findet ein Übertrag in eine weitere Zeile statt. Das Textfeld ist in seiner max. Höhe beschränkt. Wenn zu viele Zeilen vorhanden sind, werden diese nicht mehr angezeigt. Die max. Größe des Textfeldes ist 640x640 mm in H0 (1:87) -> 55,68x55.68 m (1:1) somit ist die max. Anzahl von Zeichen je Zeile und von Zeilen begrenzt. z.B. Schrift Consolas -> max. 58 Zeichen je Zeile (-1 Zeichen für Zeilenumbruch -> 57 Zeichen) -> max. 27 Zeilen z.B. Schrift MS-Gothic -> max. 64 Zeichen je Zeile (-1 Zeichen für Zeilenumbruch -> 63 Zeichen) -> max. 31 Zeilen P.S. Damit kann man schon einmal überschlägig "berechnen" wie viel Textfelder und Flächenverbrauch nötig wären um 1000 Einträge darzustellen... ... und ob man da wirklich noch einen Überblick hat... sei dahingestellt Gruß EASY
Thomas_103 Geschrieben Montag um 14:03 Uhr Autor Geschrieben Montag um 14:03 Uhr Welche Einträge muss ich tätigen um den Namen des Zuges, das Ziel und die Kategorie (Personenzug, Güterzug usw.) anzuzeigen? Hier habe ich die Lua von @RoniHB 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
EASY Geschrieben Montag um 15:45 Uhr Geschrieben Montag um 15:45 Uhr (bearbeitet) Hallo, vor 1 Stunde schrieb Thomas_103: Welche Einträge muss ich tätigen um den Namen des Zuges, das Ziel und die Kategorie (Personenzug, Güterzug usw.) anzuzeigen? function DepotInhalt(Depot) local Anzahl = Depot.count if Anzahl > 0 then -- local Textmuster_Zeile = "%2d %-16s %-20s" local Textmuster_Zeile = "%2d %-16s %-16s %-15s" -- Formatierung für Ziel erweitern local Textmuster_Zusatz = " und %d weitere Züge" local Zugname = Depot.entries[0].name local Zuggattung = Depot.entries[0].variables["Zugtyp"] or " " local Ziel = Depot.entries[0].variables["Ziel"] or " " --Ziel Variable auslesen hinzufügen -- local Liste = {Textmuster_Zeile:format(1, Zugname, Zuggattung)} local Liste = {Textmuster_Zeile:format(1, Zugname, Ziel, Zuggattung)} -- Eintrag um "Ziel" erweitern 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 " " Ziel = v.variables["Ziel"] or " " --Ziel Variable auslesen hinzufügen -- table.insert(Liste, Textmuster_Zeile:format(k+1, Zugname, Zuggattung)) table.insert(Liste, Textmuster_Zeile:format(k+1, Zugname, Ziel, Zuggattung)) -- Eintrag um "Ziel" erweitern 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 Hinweis: Damit eine "saubere" Formatierung vorgenommen wird, sollte... ... für das Textfeld eine Monospace-Schrift verwendet werden (Schrift mit konstanter Breite für alle Zeichen) z.B: Consolas, Liberation Mono, Lucia Sans Typewriter, MS Gothic ... nach dieser Definition local Textmuster_Zeile = "%2d %-16s %-16s %-15s" der Zugname nicht mehr als 16 Zeichen, das Ziel nicht mehr als 16 Zeichen und der Zugtyp nicht mehr als 15 Zeichen lang sein. P.S. nicht erprobt... müßte aber so funktionieren. Gruß EASY Bearbeitet Montag um 15:47 Uhr von EASY
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden