AGB  ·  Datenschutz  ·  Impressum  







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

Fehler bei Lauftext

Ein Thema von DelphiUser7 · begonnen am 1. Sep 2003 · letzter Beitrag vom 3. Sep 2003
Antwort Antwort
Seite 1 von 2  1 2      
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#1

Fehler bei Lauftext

  Alt 1. Sep 2003, 19:19
Hallo!
Ich programmiere mir gerade einen Lauftext, der von rechts nach links läuft; Dazu verwende ich eine TPanel-,eine TLabel-, und eine TTimer-Komponente; Folgende Source verwende ich, um das ganze umzusetzen:

Delphi-Quellcode:
procedure TForm1.TextTimer1Timer(Sender: TObject);
begin
  if Label1.Left = 0 then begin
    if Label1.Width = 0 then begin
      label1.left := SongPanel.Width;
      label1.Width := 145;
    end else begin
      label1.Width := label1.Width -1;
    end;
  end else begin
    label1.Left := label1.Left -1;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Texttimer1.Interval := 10;
  SongPanel.DoubleBuffered := True;
end;
Mein Problem: Sobald der Timer aktiviert ist, d.h. der Text in dem Label läuft zwar, aber er läuft über den Rand des Labels hinaus, bis an den Rand der Form. Dort bleibt er dann stehen;
Weiß vielleicht jemand eine Lösung;

Gruss
DelphiUser7
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#2

Re: Fehler bei Lauftext

  Alt 1. Sep 2003, 19:26
Hallo!

Wenn Du statt der 145 als label1.width folgendes verwendest, sollte es klappen:
label1.canvas.TextWidth(label1.caption); MfG
Peter

//Edit: und wenn Du folgendes statt Deiner Prozedur als OnTimer nimmst, wird es noch schöner:
Delphi-Quellcode:
  if label1.left = -label1.width then
    label1.left := SongPanel.width
  else label1.left := label1.Left -1;
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3

Re: Fehler bei Lauftext

  Alt 1. Sep 2003, 19:31
Hi,

http://www.delphipraxis.net/internal...ht=laufschrift

HTH
  Mit Zitat antworten Zitat
czapie

Registriert seit: 17. Nov 2002
Ort: Berlin
384 Beiträge
 
Delphi 5 Standard
 
#4

Re: Fehler bei Lauftext

  Alt 1. Sep 2003, 20:33
Änder doch einfach den Inhalt des Labels?
Immer den ersten Buchstaben wegnehmen, und dann eben wieder hinten nach ein paar Leezeichen anfügen.
War bloß ne Idee,

Czapie.
Was man zu verstehen gelernt hat, fürchtet man nicht mehr.
(Marie Curie)
http://www.cafes-in-berlin.com
  Mit Zitat antworten Zitat
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#5

Re: Fehler bei Lauftext

  Alt 1. Sep 2003, 21:40
Hallo Peter Lustig!

Ich habe zwar deine Source benutzt, die du mir aufgeschrieben hast, der Lauftext 'läuft' aber immer noch über die Grenze des Labels hinaus.
Bist du dir ganz sicher, dass du dich da nicht geirrt hast?
Bitte schau es dir nochmal an.

Gruss
DelphiUser7
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#6

Re: Fehler bei Lauftext

  Alt 1. Sep 2003, 22:27
Hallo!

Also, wie folgt funktioniert es bei mir (ganz genau, damit wir nicht von zwei unterschiedlichen Sachen reden):
1. ich packe ein Panel auf die Form
2. ich packe ein Label ins das Panel
3. ich packe einen Timer auf die Form
4. der Timer bekommt folgenden Code:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if label1.left = -label1.width then
    label1.left := Panel1.width
  else label1.left := label1.Left -1;
end;
Fertig. Damit klappt es wunderbar.

MfG
Peter
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#7

Re: Fehler bei Lauftext

  Alt 2. Sep 2003, 18:47
Hallo Peter Lustig!

Damit klappt es zwar wunderbar, aber vielleicht habe ich mich bislang etwas undeutlich ausgedrückt, denn ich meinte eigentlich, dass sich der Ausdehnungsbereich des Labels nur auf das Panel bezieht, d.h. dass das Label zwar läuft, aber immer nur innerhalb des Panels.
Und das tut es bei mir nicht!
Noch eine Frage: Hast du das Label in der Form erstellt, und dann über einfach über das Panel gezogen, oder hast du das Label direkt im Panel erstellt? Also bei mir funktioniert es überhaupt nur, wenn ich das Label
'separat' erstelle, und es dann auf das Panel ziehe; allerdings tritt dann immer noch der Fehler auf, dass der Lauftext nicht am anderen Ende der Form wieder erscheint, sondern sich am linken Rand der Form auflöst...dort wieder erscheint...auflöst...dort wieder erscheint...;

Gruss
DelphiUser7
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Fehler bei Lauftext

  Alt 2. Sep 2003, 19:22
Zitat von DelphiUser7:
Hast du das Label in der Form erstellt, und dann über einfach über das Panel gezogen, oder hast du das Label direkt im Panel erstellt? Also bei mir funktioniert es überhaupt nur, wenn ich das Label 'separat' erstelle, und es dann auf das Panel ziehe;
Wie soll das Panel zum Container des Labels werden, wenn du es auf die Form ziehst? Label aus Komponentenliste anklicken, dann Panel anklicken.

Aber selbst nach deiner Vorgehensweise darf sich der Text nicht am linken Rand wiederholen. Da hast du dich wohl beim copy/paste vertan oder falsch abgeschrieben.
  Mit Zitat antworten Zitat
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#9

Re: Fehler bei Lauftext

  Alt 2. Sep 2003, 20:22
Hallo!

Wieso beim Paste/Copy?? Wenn ich das Label in dem Panel erstelle, bewegt es sich überhaupt nicht! Wie kann das sein???
Bitte um schnelle Antwort!

Gruss
DelphiUser7
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#10

Re: Fehler bei Lauftext

  Alt 2. Sep 2003, 22:55
Hallo!

Um erst einmal Deine Frage zu beantworten:
Ich habe das Label direkt in das Panel "hineingeklickt".

Wenn es gar nicht klappt, dann mach es folgendermaßen:
1. packe ein Panel mit Namen "Panel1" auf die Form (wenn es anders lautet, nachfolgenden Quelltext umschreiben).
2. verwende folgenden Code, um ein Label "myLabel" während der Laufzeit zu erzeugen, welches sich nur im Panel bewegt.

Delphi-Quellcode:
var
  Form1: TForm1;
  myLabel : TLabel;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  myLabel := TLabel.Create(Panel1);
  myLabel.Parent := Panel1;
  myLabel.Caption := 'Testtext';
  myLabel.AutoSize := True;
  myLabel.Left := (Panel1.Width - myLabel.Width) div 2;
  myLabel.Top := (Panel1.Height - myLabel.Height) div 2;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if myLabel.left = -myLabel.width then
    myLabel.left := Panel1.width
  else myLabel.left := myLabel.Left -1;
end;
Mit diesem Code (und Timer1 auf 10ms eingestellt), sollte es funktionieren. Zumindest hat es das bei mir.

MfG
Peter
Christian S.
Admin in der Entwickler-Ecke
  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 01:43 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