Normalerweise schiebt man Buchstabe für Buchstabe in die gewünschte Richtung.
Zwangsweise kommt es dann zum Ruckeln, weil die kleinste Bewegung eine Buchstabenbreite ist.
Besser ist es, man bewegt das Element, das die Grafik enthält.
Dann ist die kleinstmögliche Bewegung eine Pixelbreite.
Delphi-Quellcode:
unit Unit2;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ExtCtrls,
Vcl.StdCtrls,
Vcl.ComCtrls;
type
TForm2 =
class(TForm)
Label1: TLabel;
Timer1: TTimer;
Label2: TLabel;
Speed1: TTrackBar;
Edit1: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NeuBerechnen(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
lw, n : INTEGER;
mytext :
String;
implementation
{$R *.dfm}
procedure TForm2.NeuBerechnen(Sender: TObject);
begin
myText:= Edit1.Text;
Timer1.Interval:= 110- Speed1.Position;
Label2.Caption:= '
Timer1.Interval: '+ INTTOSTR(Timer1.Interval);
Label1.Caption:= myText + '
'+ Label2.Caption;
lw:= Form2.Width + Label1.Width;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
n:=0;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
NeuBerechnen(Self);
inc(n);
Label1.Left:= Form2.Width-n;
if n> lw
then begin n:=0; Label1.Left:= Form2.Width-20;
end;
end;
end.