Autor Beitrag
D.Elphi
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 128
Erhaltene Danke: 10

Windows 10 Edu x64
Tokyo Starter, BlueJ
BeitragVerfasst: Fr 25.11.11 23:39 
Moin zusammen,
ich möchte in einem Label einen Scrolltext durchlaufen lassen. Kann mir da jemand helfen - ist ein TLabel überhaupt der richtige Ansatz oder gibt es da andere Komponenten?

Für Antworten bedanke ich mich im Voraus,
D.Elphi


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 26.11.2011 um 06:15
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 25.11.11 23:44 
Ich würde eine TPaintBox nehmen und es selbst zeichnen (oder auch in einer eigenen Komponente). Denn sonst ruckelt es nur unnötig, da du in einem Label ja nicht pixelweise sondern zeichenweise scrollen würdest.
D.Elphi Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 128
Erhaltene Danke: 10

Windows 10 Edu x64
Tokyo Starter, BlueJ
BeitragVerfasst: Fr 25.11.11 23:46 
Danke schonmal für diesen Ansatz - kannst Du das evtl. näher (vielleicht mit Quelltext) erläutern? Dankeschön :)
PS: Angenommen, das Ruckeln stört mich nicht...wie sähe denn die Label-Lösung aus?
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Sa 26.11.11 08:43 
user profile iconD.Elphi hat folgendes geschrieben Zum zitierten Posting springen:

PS: Angenommen, das Ruckeln stört mich nicht...wie sähe denn die Label-Lösung aus?

Als Einsteigerfreundliche Lösung könnte man den Text einfach ins Label schreiben und das Label selbst verschieben.
Setz einen Timer aufs Formular und setz bei jedem Tick das meinlabel.left := meinlabel.left + 10;
Das ist die allereinfachste Lösung, die aber Probleme mit sich bringt. Du wirst z.B. feststellen, dass das Label nicht mehr sauber läuft, wenn Dein PC noch mit anderen Aufgaben beschäftigt ist. Aber das ist Teil des Lernprozesses :D
Fang also ruhig so an, wie ich oben beschrieben hab. Und dann verbessere das Programm.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: D.Elphi
D.Elphi Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 128
Erhaltene Danke: 10

Windows 10 Edu x64
Tokyo Starter, BlueJ
BeitragVerfasst: Sa 26.11.11 10:11 
Hallo Nersgatt,
danke für deine Lösung. Das funktioniert alles wunderbar, nur habe ich nun das Problem, dass das Label nicht mehr "zurückkommt". Wie kann ich das machen, dass es wiederholt angezeigt wird?

mfg
D.Elphi
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 26.11.11 10:18 
Für den Anfang könntest du es wieder nach links setzen, wenn es zu weit rechts angekommen ist. ;-)
D.Elphi Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 128
Erhaltene Danke: 10

Windows 10 Edu x64
Tokyo Starter, BlueJ
BeitragVerfasst: Sa 26.11.11 13:22 
Meint ihr das in etwa so?
ausblenden Delphi-Quelltext
1:
if Label1.Left := xy then Label1.Left := yx;					
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 26.11.11 13:29 
Wenn du jetzt noch den Vergleichsoperator statt dem Zuweisungsoperator im if benutzt, ja...

Für diesen Beitrag haben gedankt: D.Elphi
D.Elphi Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 128
Erhaltene Danke: 10

Windows 10 Edu x64
Tokyo Starter, BlueJ
BeitragVerfasst: Sa 26.11.11 15:14 
also "=" anstatt ":="?

Übrigens, eine Frage habe ich noch:
Angenommen, ich möchte das Ganze ein wenig erweitern und zufällige "Nachrichten" aus einer Textdatei (nennen wir sie mal blabla.txt) anzeigen lassen. Wie bringe ich das Label dazu, diese anzuzeigen? Ich weiß, dass es dafür TStringList gibt, aber wie das geht, weiß ich nicht.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 26.11.11 15:25 
Naja, du lädst die Datei in eine TStringList und suchst dir dann mit Random eine der Zeilen aus. Die kannst du dann direkt in das Label packen, wenn du das ohnehin als einfache Notlösung komplett bewegst.

Für diesen Beitrag haben gedankt: D.Elphi
D.Elphi Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 128
Erhaltene Danke: 10

Windows 10 Edu x64
Tokyo Starter, BlueJ
BeitragVerfasst: Sa 26.11.11 15:35 
Nein, meine Frage war, wie ich etwas in eine StringList einlese ;). Trotzdem schonmal danke im Voraus für deine Erklärung.
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Sa 26.11.11 16:33 
Die StringList müsste die Methoden loadFromFile und saveToFile haben.