Анимация появления текста как при вводе

Материал из DRKB


Добавьте на форму 2 картинки, одну для горизонтального, другую для вертикального текста.

// Вертикальный вывод ( <Текст>, <Картинка для вывода>, <Задержка между буквами> )
procedure VerticalTypewriter(Text: string; Image: TImage; Delay: Integer);
var
  x, y, i: Integer;
begin
  Image.Canvas.Refresh();
  Application.ProcessMessages();
  y := 1;

  for i := 1 to Length(AText) do
  begin
    Application.ProcessMessages();
    y := y + Image.Canvas.TextHeight(Text[i]);
    x := Image.Width div 2 - (Image.Canvas.TextWidth(Text[i]) div 2);
    Image.Canvas.TextOut(x, y, Text[i]);
    Sleep(Delay);
  end;
end;

// Горизонтальный вывод ( <Текст>, <Картинка для вывода>, <Задержка между буквами>, <Пробел между буквами>)
procedure HorizontalTypewriter(Text: string; Image: TImage; Delay, Space: Integer);
var
  x, y, i: Integer;
begin
  Image.Canvas.Refresh();
  Application.ProcessMessages();
  x := 1;

  for i := 1 to Length(Text) do
  begin
    Application.ProcessMessages();
    y := Image.Picture.Height div 2 - (Image.Canvas.TextHeight(Text[i]) div 2);
    x := x + Image.Canvas.TextWidth(Text[i]) + Space;
    Image.Canvas.TextOut(x, y, Text[i]);
    Sleep(Delay);
  end;
end;


// Примеры вызова:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //                  <text>          <image>  <delay>
  VerticalTypewriter('HELLO BIG-X',   Image1,  100     );
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //                    <text>         <image>  <delay>  <space>
  HorizontalTypewriter('Hello Big-X',  Image2,  100,     1       );
end;


Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 03656