Показать сообщение отдельно
  #10  
Старый 13.11.2010, 15:31
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Цитата:
Сообщение от fuzo
создаю новый проект копирую код, добавляю таймер. Но почемуто на форме ничег оне происходит
Нужно было сперва создать обработчики событий OnPaint и OnTimer, а уже потом вставлять в них код или на вкладке Events назначить процедуры в качестве обработчиков. Иначе эти процедуры не будут связаны с объектами.
Вот я сделал всё в виде одной процедуры, так будет проще:
Код:
procedure WalkingMan(Canvas: TCanvas; Width: Integer; var X1, X2, I: Integer);
begin
  if X1 < Width then
      X1 := X1 + 20
  else
      X1 := 20;
  if I < 7 then
    Inc(I)
  else
    I := 0;
  case I of
    0:X2 := 20;
    1:X2 := 15;
    2:X2 := 10;
    3:X2 := 5;
    4:X2 := 0;
    5:X2 := 5;
    6:X2 := 10;
    7:X2 := 15;
  end;
  with Canvas do
  begin
    FillRect(Canvas.ClipRect);
    Ellipse(X1 - 20, 10, X1 + 20, 50);
    MoveTo(X1, 50);
    LineTo(X1, 100);
    MoveTo(X1 - X2, 100);
    LineTo(X1, 50);
    LineTo(X1 + X2, 100);
    MoveTo(X1 - X2, 150);
    LineTo(X1, 100);
    LineTo(X1 + X2, 150);
  end;
end;
Объяви три глобальных переменных типа Integer:
Код:
var
  Form1: TForm1;
  A, B, C: Integer;
и в OnTimer вызывай эту процедуру таким образом:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  WalkingMan(Form1.Canvas, Form1.Width, A, B, C);
end;
Ответить с цитированием