AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeile bzw. String fließen lassen?

Ein Thema von AlexII · begonnen am 1. Okt 2009 · letzter Beitrag vom 2. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 20:32
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!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 20:39
.. vorne einen Buchtstaben löschen und hinten einen anfügen

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 20:43
Hm.... wie geht das den?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 20:46
Zitat von AlexII:
Hm.... :gruebel: wie geht das den? :gruebel:
Delphi-Quellcode:
for i:=1 to maxLaenge do
  label1.caption:=copy(s,i,i+maxLaenge);
Delphi-Referenz durchsuchencopy

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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#5

Re: Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 20:46
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.
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 20:59
So:
http://www.delphipraxis.net/internal...=954088#954088

oder so:
Delphi-Quellcode:
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;
oder janz andersch...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 21:31
Nach dieser Methode blinkt die Anzeige zu stark (zu niedrige Frequenz) und wenn man Interval verkleinert wird sie viel zu schnell.
  Mit Zitat antworten Zitat
hugo1990

Registriert seit: 27. Dez 2006
166 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 21:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Zeile bzw. String fließen lassen?

  Alt 1. Okt 2009, 22:10
Ich habe ja schon zwei nette lösungen vorgegeben.
Version a) ist Canvaswork und Version b) Buchstabenschubbsen...

Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Zeile bzw. String fließen lassen?

  Alt 2. Okt 2009, 03:02
Ich hab noch eine bessere
Das ist halt von links nach rechts. Ich denk mal du bekommst das auch dan anders rum hin
Habs getestet Flackert net so und Sieht super aus xD
Brauchst nen Timer und ne PaintBox
Delphi-Quellcode:
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;
So einfach ist das
Viel Spass damit

Gruß NickelM
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz