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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2009, 14:35   #1
JDRaveN
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию Рисование на форме. Движение точки.

Щелчком мыши на пространстве формы создается точка. Радиогруппа задает направ-ление перемещения точки (вверх, вниз, влево, вправо), а фиксированный список - ско-рость перемещения (10, 20, 30 пикселя/с). В отдельном окошке выводится время, за которое точка достигает края формы. При этом точка исчезает Запуск движения - из-менение размера формы.
JDRaveN вне форума Ответить с цитированием
Старый 15.06.2009, 14:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И в чем помочь? Что ты уже сделал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.06.2009, 14:45   #3
JDRaveN
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию

Да вобщем ничего, радио набор, ниспадающий список с фиксированным набором скорости перемещения, не знаю как поставить точку на форме, как заставить её двигаться и самое главное, как реализовать счётчик времени движения точки до края формы.
JDRaveN вне форума Ответить с цитированием
Старый 15.06.2009, 15:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну насчет установки точки, я бы выбрал какой нить контрол. Например Shape:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var s:TShape;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

begin
 s:=TShape.Create(Form1);
 s.Left:=x; s.Top:=y;
 s.Shape:=stCircle;
 s.Width:=10;
 s.Height:=10;
 s.Parent:=Form1;
 s.Show;
end;

end.
Далее его и двигать проще. Меняй в таймере Left и top и он поплывет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.06.2009, 16:06   #5
JDRaveN
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию

Stilet:
Это работает а как теперь привязать, радионабор с направлением движения и скорость к этой точке? Блин помоги пожалуйста, сам не справлюсь, а надо очень сделать.
JDRaveN вне форума Ответить с цитированием
Старый 15.06.2009, 16:40   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
Сообщение от JDRaveN Посмотреть сообщение
Stilet:
Это работает а как теперь привязать, радионабор с направлением движения и скорость к этой точке? Блин помоги пожалуйста, сам не справлюсь, а надо очень сделать.
Подсказка первая:
как сказал Stilet в таймере изменяй координаты Left, Top, прибавляя к ним (одновременно или по очереди) положительное число для перемещения в одну сторону и отрицательное - в другую, не забывая про контроль краев области перемещения, скорость изменяй - варьируя значениями Interval в таймере...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 15.06.2009, 16:54   #7
JDRaveN
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию

В таймере получилось, но надо сделать так:
В радио-наборе я выбираю направление и тогда точка начинает двигаться в выбранном направлении и как это связать таймер и радио-набор.
JDRaveN вне форума Ответить с цитированием
Старый 15.06.2009, 17:10   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну например так:
Код:
Case RadioGroup.itemIndex of
 0:q:=1;
 1:q:=-1;
 2:w:=1;
 3:w:=-1;
end;
...
 Фигурка.Left:=Фигурка.Left+q;
 Фигурка.top:=Фигурка.top+w;
Смысл в том чтобы просто менять знаки направлений для координат фигуры..
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.06.2009, 17:25   #9
JDRaveN
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию

В общем у меня получилось вот, что:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
s:=TShape.Create(Form1);
s.Left:=x; s.Top:=y;
s.Shape:=stCircle;
s.Width:=2;
s.Height:=2;
s.Parent:=Form1;
s.Show;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if RadioButton1.Checked=True then s.Top:=s.Top-1;
if RadioButton2.Checked=True then s.Top:=s.Top+1;
if RadioButton3.Checked=True then s.Left:=s.Left-1;
if RadioButton4.Checked=True then s.Left:=s.Left+1;
end;

end.

теперь вместо -/+ 1 надо поставить значение из ComboBox - это будет шаг перемещения.
JDRaveN вне форума Ответить с цитированием
Старый 15.06.2009, 18:03   #10
JDRaveN
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию

Это тоже получилось, теперь надо, вставить счётчик времени движения точки до края формы и остановку точки у края формы.

Народ помогите кто-нить.... Я знаю Вы можете
JDRaveN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
даны две точки. организовать движение из точки А в точку Б окружности! Wi1D Помощь студентам 6 23.05.2009 19:55
Движение точки с векторами.Pascal. Regboll Паскаль, Turbo Pascal, PascalABC.NET 0 21.05.2009 20:14
Движение точки по окружности somwan Общие вопросы C/C++ 4 17.03.2009 16:30
движение точки на Canvas st01en Общие вопросы Delphi 32 09.02.2008 22:29
Help!!!Движение точки по поверхности сферы alex23xandr Помощь студентам 4 20.05.2007 14:45