Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Laufschrift an Panelgröße anpassen (https://www.delphipraxis.net/77986-laufschrift-panelgroesse-anpassen.html)

Sunlight7 28. Sep 2006 18:24

Re: Laufschrift an Panelgröße anpassen
 
Zitat:

Zitat von Sunlight7
Natürlich empfielt es sich, das Zeichnen zu optimieren, zB. zuerst auf ein Bitmap, damit es nicht flimmert. :???:

Dann bist Du sicher, das nix flimmert und keine Streifen überbleiben, falls zB. der Nutzer eine andere Standardschrift(art/größe) hat.

Sunlight7 28. Sep 2006 18:33

Re: Laufschrift an Panelgröße anpassen
 
Zitat:

Zitat von NamenLozer
(eleganter gings nicht...)

Es geht schon :zwinker:

Damit kann der Text mehrfach nebeneinander angezeigt werden:

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

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

procedure TForm1.Timer1Timer(Sender: TObject);
   var temp:Integer;
begin
   Dec(x, StepWidth);
   Refresh;
   temp:=x;
   While temp<ClientWidth do begin
      Canvas.TextOut(temp, 0, MyText);
      Inc(temp, TextWidth+Space);
   end;
   If x<-TextWidth+Space then Inc(x, TextWidth+Space);
end;
:???:

newuser01 28. Sep 2006 19:10

Re: Laufschrift an Panelgröße anpassen
 
Delphi-Quellcode:
//funktioniert sehr gut nur nicht mit Buffer.Canvas.TextOut(temp, 0, sLaufSchrift);
while temp < PaintBox.Width do
begin
PaintBox.Canvas.TextOut(temp, 0, sLaufSchrift);
Inc(temp, TextWidth + Space);
end;

if x1 <- TextWidth + Space then Inc(x1, TextWidth + Space);

newuser01 28. Sep 2006 19:15

Re: Laufschrift an Panelgröße anpassen
 
Delphi-Quellcode:
//jetzt funktioniert es :-D
while temp < PaintBox.Width do
begin
PaintBox.Canvas.TextOut(temp, 0, sLaufSchrift);
Inc(temp, TextWidth + Space);
end;

bitblt(PaintBox.Canvas.Handle,1,1,PaintBox.Width,PaintBox.Height,Buffer.Canvas.Handle,0,0,Srccopy);

if x1 <- TextWidth + Space then Inc(x1, TextWidth + Space);

Namenloser 28. Sep 2006 20:18

Re: Laufschrift an Panelgröße anpassen
 
Hmm, aber bei einem größeren zwischenraum (Space = 100) funktioniert das nicht mehr ganz richtig. Der linke text verschwindet schon, bevor er ganz durchgelaufen ist.

Sunlight7 28. Sep 2006 20:36

Re: Laufschrift an Panelgröße anpassen
 
Zitat:

Zitat von NamenLozer
Hmm, aber bei einem größeren zwischenraum (Space = 100) funktioniert das nicht mehr ganz richtig. Der linke text verschwindet schon, bevor er ganz durchgelaufen ist.

Das kommt davon, wenn man Code voher net ausprobiert, bzw. sieht man dann die "Macht" von () :mrgreen:

Lösung:
Delphi-Quellcode:
If x<-(TextWidth+Space) then Inc(x, TextWidth+Space);
Habs probiert, es läuft durch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz