Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Движение фигуры вдоль формы


Автор: koshkarjov 6.10.2012, 15:59
Здравствуйте! Нужно написать программу движения небольшой фигуры (крестик) вдоль формы.
Программу написал, но при запуске вместо движения крестика выходит не совсем то. Это показано на скриншоте ниже.
user posted image
Где я ошибся?

Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure TimerTimer(Sender: TObject);

    private
      { Private declarations }
    public
      { Public declarations }
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//установить начальные значения при активизации формы
procedure TForm1.FormCreate(Sender: TObject);
var
  x,y:integer;
begin
  x:=0;
  y:=100;
  Form1.Color:=clNavy;
  Timer.Interval:=50;
end;

//процедура создания фигуры
procedure figura(x,y:integer; color:tcolor);
const
  dx=5; dy=5;
var
  buf:tcolor;
begin
  with Form1.Canvas do
    begin
      buf:=Pen.Color;
      Pen.Color:=color;
      MoveTo(x,y);
      LineTo(x,y-4*dy);
      MoveTo(x+2*dx,y-2*dy);
      LineTo(x-2*dx,y-2*dy);
      Pen.Color:=buf;
    end;
end;

//перерисовка изображения
procedure TForm1.TimerTimer(Sender: TObject);
var
  x,y:integer;
begin
  figura(x,y,Form1.Color); //закрашиваем под цвет формы
  if x<Form1.ClientWidth then x:=x+5 else begin x:=0; y:=random(50)+100; end;
  figura(x,y,clWhite);
end;

end.

Проект также прикладываю ниже.

Автор: koshkarjov 6.10.2012, 23:05
Уже не актуально!

Объявил x и y глобальными переменными и все заработало smile
user posted image

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)