@Zulkund

Delphi 7, Как создать бесконечно бегущую строку?

Добрый день! Подскажите, как в Delphi 7 создать бесконечно бегущую сверху-вниз строку(Титры)? Строк несколько.
  • Вопрос задан
  • 485 просмотров
Решения вопроса 1
AnnTHony
@AnnTHony
Интроверт
var
  Form1: TForm1;
  list: TStringList;

procedure TForm1.FormCreate(Sender: TObject);
begin
  label1.Caption := '';
  label1.AutoSize := True;
  label1.Color := clInactiveBorder;

  list := TStringList.Create;

  list.Add('Титры');
  list.Add('Какой-то текст');
  list.Add('');
  list.Add('1');
  list.Add('2');
  list.Add('3');
  list.Add('');
  list.Add('4');
  list.Add('5');
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
  list.Free;
end;

procedure MoveTitle();
var
  item: string;
begin
  while (True) do
    begin
      if (Form1.Button1.Tag = 0) then
        exit;
      Form1.Label1.Caption := '';
      for item in list do
        begin
          Form1.label1.Caption := Form1.label1.Caption + #13 + item;
        end;

      list.Insert(0, list[list.Count - 1]);
      list.Delete(list.Count - 1);

      Application.ProcessMessages;
      Sleep(500);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (button1.Tag = 0) then
    begin
      button1.Tag := 1;
      MoveTitle;
    end
  else
    button1.Tag := 0;
end;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kalapanga
Формально под вопрос подходит вот такое элементарное решение:
На форме TMemo высотой в Num строк (ровно или строк текста больше, чем строк на экране). Заполняем все Num строк, включая пустые. А дальше крутим их по таймеру:
s := Memo1.Lines[Num-1];
Memo1.Lines.Delete(Num-1);
Memo1.Lines.Insert(0, s);
Но, конечно, красивых (плавных) титров так не получишь.
Ответ написан
Комментировать
streetflush
@streetflush
1. Берем исходную строку.
2. Берем последний её символ.
3. Пишем на отображение.
4. Берем 2 последних символа.
5. Пишем на отображение
6.....х-1 И так пока строка не кончится.
х. Далее goto к 1му пункту.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы