AGB  ·  Datenschutz  ·  Impressum  







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

Laufschrift an Panelgröße anpassen

Ein Thema von newuser01 · begonnen am 27. Sep 2006 · letzter Beitrag vom 28. Sep 2006
Antwort Antwort
Seite 1 von 3  1 23      
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#1

Laufschrift an Panelgröße anpassen

  Alt 27. Sep 2006, 18:13
Hallo

Ich erzeuge in einem Timer diese Laufschrift

Delphi-Quellcode:
sLaufText := lSong.Caption; //caption übergeben
sTmp := sLaufText[1]; //1.zeichen wird sich gemerkt
delete(sLaufText, 1, 1); //1.zeichen wird anschließend gelöscht
sLaufText := sLaufText + sTmp; //caption + gemerktes zeichen wird sLaufText übergeben
labelID3.Caption := sLaufText; //sLaufText wieder an caption übergeben
Nun ist aber das label auf einem Panel mit der größe Height := 97 und Width := 416 bei dem label selber ist AutoSize auf false und die größe des labels entspricht der große des Panels. Wenn jetzt aber das Label (lSong.Caption) zb: nur wenige Zeichen enthält und diese geringer in der gesamtlänge als das Panel insgesamt lang ist, dann fängt die Laufschrift ja nicht genau rechts am ende vom Panel an, sondern schon weiter links je nachdem wieviel Zeichen das Label übergeben wurden. Ich möchte aber erreichen das die Laufschrift immer rechts am ende vom Panel beginnt egal ob das label ein Wort enthält was vielleicht nur zwei Buchstaben (zeichen) besitzt. Wie könnte ich das realisieren ?
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Laufschrift an Panelgröße anpassen

  Alt 27. Sep 2006, 18:19
Den String anfänglich links mit entsprechender Anzahl von Leerzeichen auffüllen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Laufschrift an Panelgröße anpassen

  Alt 27. Sep 2006, 18:20
machs mit Canvas.Textout damit sollte es noch genauer gehn
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#4

Re: Laufschrift an Panelgröße anpassen

  Alt 27. Sep 2006, 18:42
vielleicht so

Delphi-Quellcode:
while Length(sLauftext) < Panel.Width do
begin
sLauftext := ' ' + sLauftext;
end;
Problem wäre nur das die Schleife ja im Timer ständig wiederholt wird geht also auch nicht
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#5

Re: Laufschrift an Panelgröße anpassen

  Alt 27. Sep 2006, 18:53
Das ginge schon, wenn Du Dir die Leerzeichen und die Breite des Panels änderst, dann muß die Schleife nur noch ausgeführt werden, wenn sich die Breite ändert.

Ich hab mir mal eine Komponente geschrieben, die sowas kann, hab da auf das Canvas gezeichnet und x immer um 1 reduziert.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#6

Re: Laufschrift an Panelgröße anpassen

  Alt 27. Sep 2006, 18:59
Sunlight hättest du vielleicht ein kleines Beispiel ich weiß diesbezüglich echt nich weiter mein Kopf Qualmt
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#7

Re: Laufschrift an Panelgröße anpassen

  Alt 27. Sep 2006, 19:14
Nicht zu kompliziert denken, das geht ganz einfach:

Delphi-Quellcode:
const MyText='Ich wandere von rechts nach links ;-)';
      StepWidth=1;
var x:Integer;
    TextWidth:Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
   x:=ClientWidth;
   TextWidth:=Canvas.TextWidth(MyText)
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Dec(x, StepWidth);
   Refresh;
   Canvas.TextOut(x, 0, MyText);
   If x<-TextWidth then x:=ClientWidth;
end;
Natürlich empfielt es sich, das Zeichnen zu optimieren, zB. zuerst auf ein Bitmap, damit es nicht flimmert.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#8

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 13:04
Hallo Sunlight dein Beispiel funktioniert sehr gut und ich dacke dir dafür. Die Laufschrift fängt jetzt rechts an der PaintBox an und sobald diese links durchgelaufen ist beginnt sie wieder genau rechts am Anfang der Paintbox. Soweit so gut jetzt möchte ich aber wie schon oben im Code beschrieben das die Laufschrift sobald sie zum Teil links verschwindet das rechts Nachschub kommt so wie es oben in dem Code geschieht. Kannst du mir dabei noch weiterhelfen ?
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 13:50
Delphi-Quellcode:
const MyText='Ich wandere von rechts nach links ;-)';
      StepWidth=1;
var x:Integer;
    TextWidth:Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
   x:=ClientWidth;
   TextWidth:=Canvas.TextWidth(MyText)
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Dec(x, StepWidth);
   Refresh;
   Canvas.TextOut(x, 0, MyText);
   Canvas.TextOut(clientwidth+x, 0, MyText);
   If x<-clientwidth-textwidth-textwidth then x:=ClientWidth;
end;
Müsste gehen...
edit: doch nicht :/
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#10

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 14:06
Geht fast der erste Durchlauf funktioniert aber ab dem zweiten Durchlauf bleibt der kommende text von rechts in der Mitte stehn und es kommt wieder neuer Text von rechts und der zuvor stehengebliebene verschwindet wieder u.s.w auch kein schlechter efekt wir kommen der Sache langsam auf der Spur
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:31 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