Für die Ausgabe auf einer elektronischen Anzeigetafel gebe ich die Ergebnisse auf 10 Zeilen in einer Textdatei aus, die von der Anzeigetafelsoftware so verarbeitet werden kann.
Nun soll zur Siegerehrung am Ende der Veranstaltung das Ergebnis zeilenweise von unten aufbauend sozusagen ausgerollt werden. Dafür habe wurden bisher immer die Tafelseiten mehrfach kopiert und entsprechend bearbeitet, so das auf der ersten Seite nur der letzte Platz gezeigt wurde, auf der nächsten dann die letzten beiden usw.. Da es meistens so um die 10 Teilnehmer sind, verschwinden die letzten Plätze dann natürlich bei mehr als 10 Teilnehmern, wenn die ersten Plätze gezeigt werden.
Ich habe am Wochenende mal einen Code gestrickt, die soweit auch funktioniert. Damit können die Seiten nacheinander in der Software für die Anzeigetafel von unten nach oben durchgeblättert werden. Das geht aber sicherlich auch besser und einfacher. Ich bin aber schon froh, dass ich es überhaupt soweit hinbekommen habe.
Nun sieht das mit dem ausrollen von unten sehr gut aus. Wenn allerdings weniger als 10 Teilnehmer dabei sind, landet der erste Platz nicht in der ersten Zeile. Wie kann ich in diesem Fall den Block jeweils passend nach oben rücken und unten mit Leerzeilen auffüllen?
TIA
Nun soll zur Siegerehrung am Ende der Veranstaltung das Ergebnis zeilenweise von unten aufbauend sozusagen ausgerollt werden. Dafür habe wurden bisher immer die Tafelseiten mehrfach kopiert und entsprechend bearbeitet, so das auf der ersten Seite nur der letzte Platz gezeigt wurde, auf der nächsten dann die letzten beiden usw.. Da es meistens so um die 10 Teilnehmer sind, verschwinden die letzten Plätze dann natürlich bei mehr als 10 Teilnehmern, wenn die ersten Plätze gezeigt werden.
Ich habe am Wochenende mal einen Code gestrickt, die soweit auch funktioniert. Damit können die Seiten nacheinander in der Software für die Anzeigetafel von unten nach oben durchgeblättert werden. Das geht aber sicherlich auch besser und einfacher. Ich bin aber schon froh, dass ich es überhaupt soweit hinbekommen habe.
VB.NET-Quellcode
- Dim Tafeltext As New ArrayList ' Liste mit den Ergebniszeilen
- Tafeltext.Add(" 1. Schule Ost 9278")
- Tafeltext.Add(" 2. Schule West 9125")
- Tafeltext.Add(" 3. Schule ABC 9091")
- Tafeltext.Add(" 4. Schule Süd 9072")
- Tafeltext.Add(" 5. Schule XYZ 8786")
- Tafeltext.Add(" 6. Schule Ost 8786")
- Tafeltext.Add(" 7. Sportschule 8757")
- Tafeltext.Add(" 8. Schule Mitte 8649")
- Tafeltext.Add(" 9. GS Altenberg 8602")
- Tafeltext.Add("10. Bergschule 8519")
- Tafeltext.Add("11. Eliteschule 8311")
- Tafeltext.Add("12. Schule am Ende 8075")
- Dim b As Integer = 1
- Dim x As Integer = 1
- Dim s As Integer = Tafeltext.Count
- For I As Integer = Tafeltext.Count To 0 Step -1
- If s >= Tafeltext.Count - 10 Then ' bis 10 Zeilen Startpunkt zurücksetzen
- s = Tafeltext.Count - 1
- Else ' Blockversatz um eine Zeile pro Durchlauf
- b += 1
- s = Tafeltext.Count - b
- End If
- For T As Integer = 0 To x - b
- TextBox1.Text = Tafeltext(s).ToString & vbNewLine & TextBox1.Text
- s -= 1
- Next
- For L As Integer = 1 To 10 - x ' Bei weniger als 10 Zeilen mit Leerzeilen auffüllen
- TextBox1.Text = " " & L & vbNewLine & TextBox1.Text
- Next
- x += 1
- If s < 0 Then Exit For
- Next
Nun sieht das mit dem ausrollen von unten sehr gut aus. Wenn allerdings weniger als 10 Teilnehmer dabei sind, landet der erste Platz nicht in der ersten Zeile. Wie kann ich in diesem Fall den Block jeweils passend nach oben rücken und unten mit Leerzeilen auffüllen?
TIA