я делал так, в таймере брал первую букву из Label1.Caption и перемещал её в конец и т.д., вот вам и бегущая строка:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
first,tmp: string;
begin
first := Label1.Caption[1];
tmp := Label1.Caption;
Delete(tmp,1,1);
Label1.Caption := tmp + first;
end;
в Label1.Caption желательно в конце поставить пробел, чтоб строка не сливалась
P.S. правда тут не учитывается длина в пикселях самого Label1