AGB  ·  Datenschutz  ·  Impressum  







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

Richtige Laufschrift

Ein Thema von theomega · begonnen am 23. Jul 2002 · letzter Beitrag vom 12. Mär 2004
Antwort Antwort
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

Richtige Laufschrift

  Alt 23. Jul 2002, 18:34
Hallo
ich versuche gerade ein Programm zu schreiben, das alle 100 MiliSekunden einen String akualisiert und der soll dann sofort auf eine Laufschrift ausgegeben werden. Das Problem bei allen Alufschriftkomponeneten ist, das sie, sobald sich der String ändert, wieder von vorne anfangen. Will heißen das man meinen String fast gernicht sieht.

Weiß jemand eine Alternative, die diesen Fehler nicht hat????


Tnxs

bdominik
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 23. Jul 2002, 18:45
Hi,

vielleicht kannst du die Aktuelle Position auslesen und beim ändern wieder setzen.

So ungefähr: StartPosition := Letzte Position.

Wo es momentan ist kannst du ja auch so rausfinden. Schau also ob du die Startpos. setzen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#3
  Alt 25. Jul 2002, 13:13
Eine andere Möglichkeit wäre, die Laufschrift so zu lösen, das sich die Komponente die den String enthält von selber bewegt. Damit bewegt sich auch der Text, und sobald sich der String ändert ändert sich eben nur der String und nicht die Position. Das einzige was komplizierter wäre, wäre das 'rausscrollen' auf einer Seite, denn hier müsste die Position wieder um die Länge des entfernten Buchstabens zurückspringen. Aber dennoch müsste eine Label-Kompo ohne grosse Schwierigkeiten um so eine Scrolling-Methode erweitert werden können.

Die Start- und die Endposition ist durch "Left" und "Left + Width" festgelegt, die Scrollrichtung kann eine neue Eigenschaft sein und die Buchstabenlänge des entfernten Buchstabens ist auch leicht rauszufinden. Dürfte von daher also kein Hexenwerk sein.

Grüßle,

Sebastian
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Alfons_G

Registriert seit: 7. Jun 2002
Ort: München
296 Beiträge
 
Delphi 2007 Architect
 
#4
  Alt 25. Jul 2002, 19:01

ich gehe mal davon aus, dass sich die Länge des Strings nicht ändert, sonst ist es kaum möglich, ein brauchbares optisches Bild zu erreichen.
Die übliche Art, eine Laufschrift zu erzeugen, besteht darin, vom String das vordere Zeichen zwischenzuspeichern, abzuschneiden und hinten wieder anzufügen.
Code:
strMeinText := 'Meine schöne lange Laufschrift ...';
...
// In Timer-Ereignis
...
strBuffer := Copy (strMeinText, 1,1);
strMeinText := Copy(strMeinText,2,Length(strMeinText) ) + strBuffer;
LaufLabel.Caption := strMeinText;
Hierbei wird natürlich, wenn Du den String ersetzt, dieser von Anfang an gezeigt.

Für Deine gewünschte Fumktion musst Du zusätzlich eine Integer-Variable mitführen, welche sich die aktuelle Anfangsposition merkt. Also:
Code:
strBuffer := Copy (strMeinText, 1,1);
Inc(intPosition);
if intPosition > Length(strMeinText) then
  intPosition := 1;
strMeinText := Copy(strMeinText,2,Length(strMeinText) ) + strBuffer;
LaufLabel.Caption := strMeinText;
Sobald Du Deinen String änderst, ruftst Du eine Funktion auf, die Dir Deinen neuen String so zurechtbastelt, wie wenn er schon in der Laufschrift gestanden wäre:
Code:
strMeinText := AktuellerText(strMeinText, intPosition);
...
function AktuellerText (Text: string; Position: integer): string;
var
  Buffer: string;
begin
  Buffer := Copy(Text, 1, Position);
  Text := Copy(Text, Position + 1, Length(Text));
  Result := Text + Buffer;
end;
Ich hab' es jetzt allerdings nicht getestet, sondern direkt im Browser getippt

Alfons Grünewald



Alfons Grünewald
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Richtige Laufschrift

  Alt 12. Mär 2004, 09:00
Zitat:
strBuffer := Copy (strMeinText, 1,1);
Wäre nicht eleganter "strBuffer := strMeinText[1]"?
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#6

Re: Richtige Laufschrift

  Alt 12. Mär 2004, 09:41
Hab jetzt nicht alles gelesen, aber wenn du den Code für ne Laufschrift brachst dann hier:
Code:
procedure Timer1Timer(Sender: TObject);
var wort         : string;
    zeichen,hilfe : char;
    i            : integer;
begin
  wort:=label1.caption;
  hilfe:=wort[1];
  for i:=1 to length(wort) do
    if i<length(wort)
      then
        begin
          zeichen:=wort[i+1];
          wort[i+1]:=hilfe;
          hilfe:=zeichen;
        end
      else wort[1]:=zeichen;
  label1.Caption:=wort;
end;
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:12 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