![]() |
Zeile bzw. String fließen lassen?
Wie lasse ich ein Label String fließen? Ist für nen Player gedachte, die Anzeige des Künstlers bzw. des Liedes ist manchmal zu lang, muss deswegen von rechts nach links laufen.
Danke! |
Re: Zeile bzw. String fließen lassen?
.. vorne einen Buchtstaben löschen und hinten einen anfügen
Grüße Klaus |
Re: Zeile bzw. String fließen lassen?
Hm.... :gruebel: wie geht das den? :gruebel:
|
Re: Zeile bzw. String fließen lassen?
Zitat:
Delphi-Quellcode:
for i:=1 to maxLaenge do
label1.caption:=copy(s,i,i+maxLaenge); ![]() Vorher den String vielleicht noch so zusammenkopieren, das er die Länge von 2 x maxLänge hat. Vielleicht mit dem "Sichtfenster" etwas herumspielen. Grüße Klaus |
Re: Zeile bzw. String fließen lassen?
Nimm ein Panel, plaziere dein überlanges Label darauf und subtrahiere von dem .Left-Wert des Labels immer wieder 1. Irgendwann ist dann dein ganzer Text verschwunden. Spätestens dann solltest du dein Label.Left wieder auf 0 setzen.
Bernhard PS: Das Panel brauchst du, damit dein Text irgendwo rauslaufen kann und 2. dass dein Text eine definierte Grenze hat. Ich hab das mal gemacht, da hab ich allerdings den Text 4x hintereinander geschrieben (für kurze Texte) und dann so die Position verändert, dass es endlos fließend war. |
Re: Zeile bzw. String fließen lassen?
So:
![]() oder so:
Delphi-Quellcode:
oder janz andersch...
procedure TForm1.Timer1Timer(Sender: TObject);
function ScrollText(TheScrollingText: String): String; begin Result := Copy(TheScrollingText,2,length(TheScrollingText)-1)+TheScrollingText[1]; end; begin Form1.Caption := ScrollText(Form1.Caption); end; |
Re: Zeile bzw. String fließen lassen?
Nach dieser Methode blinkt die Anzeige zu stark (zu niedrige Frequenz) und wenn man Interval verkleinert wird sie viel zu schnell. :roteyes:
|
Re: Zeile bzw. String fließen lassen?
Zu dem Blinken würde ich sagen setz mal die Eigenschaft Doublebuffered von der From und vom Panel auf True.
Und allgemein zum Thema, ich hätte das ganze nicht mit einem Label gelöst sondern übers Canvas, aber das muss jeder selber wissen, wie er es am liebsten macht. |
Re: Zeile bzw. String fließen lassen?
Ich habe ja schon zwei nette lösungen vorgegeben.
Version a) ist Canvaswork und Version b) Buchstabenschubbsen... ;) |
Re: Zeile bzw. String fließen lassen?
Ich hab noch eine bessere :mrgreen:
Das ist halt von links nach rechts. Ich denk mal du bekommst das auch dan anders rum hin :zwinker: Habs getestet Flackert net so und Sieht super aus xD Brauchst nen Timer und ne PaintBox :mrgreen:
Delphi-Quellcode:
So einfach ist das :mrgreen:
var
Text1 : String; StartPos, Width1 : Integer; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Text1 := 'Hallo Welt'; //Dein Text den du haben willst Width1 := PaintBox1.Canvas.TextWidth(Text1); //Länge des Textes, damit mach herausfinden kann von wo man anfangen muss StartPos := -Width1; //Anfangen mit dem Text hereinschieben end; procedure TForm1.Timer1Timer(Sender: TObject); begin with PaintBox1 do begin Canvas.FillRect(ClientRect); //Alter Text löschen If StartPos <> PaintBox1.Width then //Wenn die Breite der Pos des Textes nicht erreicht hat Canvas.TextOut(StartPos,0,Text1) //Text ausgeben else StartPos := -Width1; //Wenn er das Ende erreicht hat wieder von vorne Anfangen Inc(StartPos,1); //Pos erhöhen an der 1 kannst du auch ne andere Zahl machen, damits schneller geht oder so xD end; Viel Spass damit Gruß NickelM |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz