![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 04.11.2011
Сообщений: 2
|
![]()
Есть объект который передвигается по форме с помощью нажатий клавиш (стрелочек). Подскажите как сделать так, что бы когда объект доходил до края формы, прекращал свое движение.
Вот код: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg; type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; const var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Self.KeyPreview:=true; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=VK_UP then begin image1.Visible:=false; image2.Visible:=false; image4.Visible:=false; image3.Visible:=true; image1.Top:=image1.Top-10; image2.Top:=image2.Top-10; image3.Top:=image1.Top-10; image4.Top:=image4.Top-10; if x<=0 then key:=vk_space; end; if Key=VK_DOWN then begin image1.Visible:=false; image3.Visible:=false; image2.Visible:=false; image4.Visible:=true; image1.Top:=image1.Top+10; image2.Top:=image2.Top+10; image3.Top:=image1.Top+10; image4.Top:=image4.Top+10; end; if Key=VK_LEFT then begin image1.Visible:=false;; image2.Visible:=true; image3.Visible:=false; image4.Visible:=false; image1.Left:=image1.Left-10; image2.Left:=image2.Left-10; image3.Left:=image3.Left-10; image4.Left:=image4.Left-10; end; if Key=VK_RIGHT then begin image1.Visible:=true; image2.Visible:=false; image3.Visible:=false; image4.Visible:=false; image1.Left:=image1.Left+10; image2.Left:=image2.Left+10; image3.Left:=image3.Left+10; image4.Left:=image4.Left+10; end; end; end. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 13.11.2011
Сообщений: 24
|
![]()
У формы и у объекта есть свойства Width и Height. Это ширина и высота. Свойства Top и Left объекта - это координаты верхнего левого угла объекта относительно верхнего левого угла контейнера, на котором он находится. Top - сверху вниз, Left - слева направо.
Если двигаем объект вверх, проверять что бы новый Top объекта был >= 0, иначе не двигаем. Если двигаем объект вниз, проверять что бы новый Top объекта был <= (Height формы - Height объекта). Иначе не двигаем. Если двигаем объект влево, проверять что бы новый Left объекта был >= 0, иначе не двигаем. Если двигаем объект вправо, проверять что бы новый Left объекта был <= (Width формы - Width объекта). Иначе не двигаем. С реализацией проблем не будет? ![]() |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 04.11.2011
Сообщений: 2
|
![]()
Не получилось сделать. Можешь привести пример кода хотя бы для перемещения одного image/
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 13.11.2011
Сообщений: 24
|
![]() Код:
Последний раз редактировалось Felian; 18.12.2011 в 00:14. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как получить объект формы по сендеру | maloun | Общие вопросы Delphi | 13 | 07.07.2011 12:43 |
Обьект невозможно переместить за пределы листа. Что это такое? | kzld | Microsoft Office Excel | 5 | 02.11.2010 10:41 |
Splitter & VertScrollBar. Перетаскивание за пределы формы. | HIC | Общие вопросы Delphi | 2 | 31.08.2010 14:58 |
Чтобы приложение не уходило за пределы моей формы | Marsel737 | Общие вопросы Delphi | 24 | 28.01.2010 09:56 |
Как сделать границы формы другого цвета,формы?? | Дима я | Общие вопросы Delphi | 3 | 22.06.2009 07:24 |