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 2 von 3     12 3      
Namenloser

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

Re: Laufschrift an Panelgröße anpassen

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

procedure TForm1.FormCreate(Sender: TObject);
begin
   x:=ClientWidth;
   x2:=clientwidth+clientwidth; //Edit: sieht besser aus, weil der text dann von rechts startet
   TextWidth:=Canvas.TextWidth(MyText)
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Dec(x, StepWidth);
   Dec(x2, StepWidth);
   Refresh;
   Canvas.TextOut(x, 0, MyText);
   Canvas.TextOut(x2, 0, MyText);
   If x<0 then x2:=ClientWidth+x;
   If x2<0 then x:=ClientWidth+x2;
end;
funzt
(eleganter gings nicht...)
  Mit Zitat antworten Zitat
newuser01

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 14:21
Ja funzt aber sind die Bindestriche zwischen den kommenden Text beabsichtigt oder ein Efekt ?
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Namenloser

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 14:22
Welche Bindestriche? o.O
bei mir sind da keine...
  Mit Zitat antworten Zitat
newuser01

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 14:25
Hat sich erledigt wenn man Step auf 1 setzt ist der Bindestrichefekt weg hatte vorher Step auf 2 und Timer-interval auf 50 da kam dieser Efekt
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
newuser01

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 14:27
und noch vielen DANK an allen beteiligten für die wieder mal schnelle Hilfe !!! TOP
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Namenloser

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 14:39
Kanns sein, dass du das Refresh rausgenommen hast?
  Mit Zitat antworten Zitat
newuser01

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 15:16
Ich hab es jetzt so im OnCreate und im Timer

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
 x1 := PaintBox.Width;
 x2 := PaintBox.Width + PaintBox.Width;
 TextWidth:= PaintBox.Canvas.TextWidth(sLaufSchrift);
end;

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
begin
Dec(x1, StepWidth);
Dec(x2, StepWidth);
Refresh;
PaintBox.Canvas.TextOut(x1, 0, sLaufSchrift);
PaintBox.Canvas.TextOut(x2, 0, sLaufSchrift);
if x1 < 0 then x2 := PaintBox.Width + x1;
if x2 < 0 then x1 := PaintBox.Width + x2;
end;
Ich hab allerdings festgestellt der sogenannte Bindestrichefekt ist kein Bindestrich sondern immer das letzte Zeichen von sLaufSchrift was warum auch immer weiter gezeichnet wird egal ob Step 1 oder 2 u.s.w ist bekomm ich auch nicht weg außer ich ersetze "Refresh" durch "PaintBox.Refresh" dann geht es, flackert aber dann nur unschön rum
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
newuser01

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 16:09
Ich habe das Problem erstmal gelöst in dem ich dem Text der in "sLaufSchrift" steht ein Leerzeichen angehangen habe. Zumindest wird jetzt nicht immer der letzte Buchstabe weiter gezeichnet

Delphi-Quellcode:
var
sLaufSchrift:String;

sLaufSchrift := sArtist + '-' + sTitle + ' ';
Ich sollte vielleicht noch erwähnen das "sLaufSchrift" nicht als const-variable Deklariert ist sondern normal als globale Stringvariable
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Namenloser

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 16:25
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var buffer: TBitmap;
begin
  buffer := TBitmap.Create;
  buffer.width := paintbox.width;
  buffer.height := paintbox.height;
  Dec(x1, StepWidth);
  Dec(x2, StepWidth);
  buffer.Canvas.TextOut(x1, 0, sLaufSchrift);
  buffer.Canvas.TextOut(x2, 0, sLaufSchrift);
  if x1 < 0 then x2 := PaintBox.Width + x1;
  if x2 < 0 then x1 := PaintBox.Width + x2;
  bitblt(paintbox.canvas.handle,0,0,paintbox.width,paintbox.height,buffer.canvas.handle,0,0,srccopy);
  buffer.free;
end;
die hintergrundfarbe lässt sich ja mit FillRect und brush.color einstellen.

Wäre etwas besser als die Methode mit dem Leerzeichen am Ende. Außerdem würd ich mir überlegen, eine Klasse oder einen record für dier Laufschrift anzulegen.

So in der Art:
Delphi-Quellcode:
TLaufschrift = record
  x1,x2: integer;
  stepwidth: integer;
  sLaufschrift: string:
end;

[...]

var
Laufschrift: Tlaufschrift;
etc...
  Mit Zitat antworten Zitat
newuser01

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

Re: Laufschrift an Panelgröße anpassen

  Alt 28. Sep 2006, 17:02
DANKE ! funktioniert
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 22:29 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