Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 17:45   #1
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию delphi ряд прямоугольников

Да нужно чтобы был ряд этих прямоугольников, который шел через какой то интервал времени
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    StartProgramm: TMenuItem;
    exit: TMenuItem;
    procedure Timer1Timer(Sender: TObject);
    procedure exitClick(Sender: TObject);
    procedure StartProgrammClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  x,y:integer;
  dx,dy:integer;

implementation

{$R *.dfm}
procedure Ris(var dx,dy:integer);
begin
     // стереть окружность
  form1.Canvas.Pen.Color := form1.Color;
  form1.Canvas.Rectangle(x, y, x + 20, y + 20);
  x := x + dx; // нарисовать окружность на новом месте
  y:=y+dy;
  form1.Canvas.Pen.Color := clBlack;
  form1.Canvas.Rectangle(x, y, x + 20, y + 20);
end;

procedure TForm1.exitClick(Sender: TObject);
begin
  ShowMessage('Спасибо что использовали нашу программу');
  halt;
end;



procedure TForm1.StartProgrammClick(Sender: TObject);
begin
  x := 0;
  y := 20;
  dx := 5;
  timer1.Interval := 50; // период возникновения события OnTimer - 0.5 сек
  form1.canvas.brush.color := form1.color;

end;

procedure Tform1.Timer1Timer(Sender: TObject);
begin
  Ris(dx,dy);
end;

end.
Я просто не понимаю как это создать
tanek вне форума Ответить с цитированием
Старый 07.03.2010, 18:06   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Очень просто, заводим какую-нибудь переменную sosed, в которой храним расстояние между двумя соседними прямоугольниками, и дальше делаем что-нибудь такое
Код:
procedure Ris(var dx,dy:integer);
begin
  for i := 0 to 5 do begin
    form1.Canvas.Pen.Color := form1.Color;
    form1.Canvas.Rectangle(x+i*sosed, y, x+i*sosed + 20, y + 20);
  end; //стёрли
  
  x := x + dx;
  y:=y+dy; //подвинули

  for i := 0 to 5 do begin 
    form1.Canvas.Pen.Color := clBlack;
    form1.Canvas.Rectangle(x+i*sosed, y, x+i*sosed + 20, y + 20);
  end; //нарисовали
end;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 07.03.2010, 18:28   #3
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

В этом случае они сразу ресуются на форме. а как сделать так, чтобы сначала вышел один прямоугольник потом через расстояние sosed вышел второй и т.д.?????
tanek вне форума Ответить с цитированием
Старый 07.03.2010, 18:37   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Заведите глобальную переменную count, в которой будет хранится текущее количество прямоугольников. Тогда Ris изменится так
Код:
procedure Ris(var dx,dy:integer);
begin
  for i := 0 to count do begin
    form1.Canvas.Pen.Color := form1.Color;
    form1.Canvas.Rectangle(x+i*sosed, y, x+i*sosed + 20, y + 20);
  end; //стёрли
  
  count := count + 1;
  x := x + dx;
  y:=y+dy; //подвинули

  for i := 0 to count do begin 
    form1.Canvas.Pen.Color := clBlack;
    form1.Canvas.Rectangle(x+i*sosed, y, x+i*sosed + 20, y + 20);
  end; //нарисовали
end;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 07.03.2010, 19:00   #5
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

Greblin все равно не то получается....
у меня вот что получилось (приложение 10.jpg) а должно быть что то такое(приложение 4tasck.rar)
Изображения
Тип файла: jpg 10.JPG (11.8 Кб, 69 просмотров)
Вложения
Тип файла: rar 4tasck.rar (37.3 Кб, 6 просмотров)
tanek вне форума Ответить с цитированием
Старый 07.03.2010, 19:15   #6
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Вот, ловите
Расстояние между ними надо было побольше сделать. И чтоб они в обратном порядке в цикле +i*sosed заменить на -i*sosed
Вложения
Тип файла: rar tanek.rar (3.0 Кб, 9 просмотров)
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 07.03.2010, 19:28   #7
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

Greblin спасибо вам вы мне очень помогли....)))
tanek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ряд Тейлора в Delphi. В чёи ошибка? NamelessEndless Помощь студентам 2 10.12.2009 23:39
Delphi. ряд Тейлора Archetype Помощь студентам 5 10.12.2009 18:23
ряд Фурье(Delphi,график) menX Помощь студентам 1 23.04.2009 21:26
5 прямоугольников Carbon Помощь студентам 10 08.11.2007 10:08