Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/116: Рейтинг темы: голосов - 116, средняя оценка - 4.74
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79

Движение обьекта с помощью кнопок

05.11.2008, 10:16. Показов 22338. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, вот я разместил на своей форме 2 кнопки и картинку. Как сделать так, чтобы при нажатии 1 кнопки (влево) картинка двигалась влево, второй кнопки (вправо) вправо. Подскажите, а?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2008, 10:16
Ответы с готовыми решениями:

Движение обьекта
Как сделать чтобы объект двигался еще снизу вверх? uses crt,graph; var x,y,r,a,x0:integer; procedure Trg(x,y,d:integer); var...

Движение обьекта и тд
Приветствую всех. У меня 2 вопроса. 1.Можно ли организовать открытие word,excel-документов в бразуере по средставам java-script`а?Если...

Движение обьекта
Здраствуйте, как можно остановить цикл While в котором движеться обьект по определенной траектории, например обьект движеться от 0 до 600...

56
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 17:33  [ТС]
Студворк — интернет-сервис помощи студентам
В том то и дело, что исходников то нет! Я хочу просто узнать, как сделать так, чтобы Image или Shape двигались под воздействием стрелок. Дайте код, а? Пожалуйста!
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 17:35
Delphi
1
2
form1.Shape1.Left:=form1.Shape1.Left+10; {движение вправо}
form1.Shape1.Left:=form1.Shape1.Left-10; {движение влево}
Это подставляешь туда где у тебя вот это
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Key = 39) then
 Form1.Left := Form1.left + 10
else if (Key = 37) then
 Form1.Left := Form1.left - 10;
end;[/code]вместо 
Form1.Left:=Form1.left +- 10;
1
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 17:50  [ТС]
У меня опять проблема. Посмотрите скриншот!
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 18:00
точку с запятой убери в операторе перед else
Code
1
2
if ... then ... [COLOR=Red];[/COLOR]
else if ... then ... ;
1
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 18:06  [ТС]
Спасибо огромнейшее всем! Я всем напишу благодарность! А проблему я решил - вместо else if написал if! Теперь все работает! Я вот тут подумываю: может мне игру а этом мотиве создать? Только мне нужны сведения. Например сталкивается Shape движующийся с Шэйпом неподвижным (ограничением) и мне надо узнать как бы сделать, когда он сталкивается с шейпом неподвижным, нужно чтобы он за его территорию не залезал. И чтобы за территорию окна формы не выходило. Еще раз огромное всем спасибо!
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 18:16
У него кроме свойств
Left и Top, которые обозначают левую верхнюю точку обьекта (верхняя и левая границы объекта), есть еще и свойства типа Width, Height (или наподобе) они обозначают ширину объекта и высоту.
соответственно :
Left + Width = правая граница обьекта
Top + Height = нижняя граница обьекта

сравниваешь типа
if (form1.Shape1.top > (form1.Shape2.top+form1.Shape2.height)) then form.Shape1.top := form1.Shape1.top - 10;

из вышеописанного видим что здесь сравниваются координаты нижней границы одного объекта (Shape2) и верхенй границы другого (Shape1) и если верхняя граница одного объекта находится ниже нижней границы другого, то мы этот объект двигаем вверх.

то же самое и со сторонами только там будет Left+Width

построй условия и пробуй...
0
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 18:20  [ТС]
А куда фрагмент засунуть?
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 18:26
Там у тебя есть процедурка по нажатию клавиши вызывающаяся.
Вполне логично делать проверку после того как определенно какая кнопка нажата, но перед самим перемещением.
И если она граничит с другим объектом, то перемещение соответственно не делать.

Добавлено через 1 минуту 49 секунд
Это не фрагмент.
Я тебе привел пример как сравнить две границы объектов.
И даже подсказал куда засунуть.
А полную проверку всех границ - сам придумай.
0
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 18:44  [ТС]
А ладно, брошу эту затею. Спасибо, ребят, за ценную информацию!

Добавлено через 11 минут 2 секунды
Кстати скажите: как сделать так, чтобы Шейп не выходил за грани формы? Просто очень надо...
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 18:49
эти условия верны если координаты шейпа в левом верхнем углу формы = 0.
Delphi
1
2
3
4
form1.Shape1.top > 0
form1.Shape1.top+form1.Shape1.height < form1.height
form1.Shape1.left > 0
form1.Shape1.left+form1.Shape1.width < form1.width
Добавлено через 57 секунд
Я просто не помню чему они там равны
0
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 18:50  [ТС]
Опять же, куда засунуть это?
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 18:52
опять же - туда же
после условия нажатия кнопки, и перед перемещением.

ты нажал кнопку - проверяешь что за кнопка нажата (сдвиг влево или вправо) соответственно потом проверяешь после смещения не вылезет ли она за границы формы, если нет - перемещаешь.
0
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 18:58  [ТС]
Укажи, куда надо, у меня не выходит:
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 19:11
это у тебя:
Code
1
if (key=...) then [смещение];
это как надо
Code
1
if (key=...) then if [проверка условия] then [смещение];
0
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 19:26  [ТС]
Вот посмотри, сейчас вроде все правильно сделал, ан нет:


Добавлено через 1 минуту 18 секунд
И извини меня пожалуйста за нубство, ведь мне еще 12 лет... Уже занимаюсь созданием программ, программированием. Коплю знания! Недаром у меня пометка: "Любопытный юзер"
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 19:46
Да можно все условия проверять НО !!!!
У тебя так ругаться будет.
надо писать чтото вроде этого:

If (условие 1)and(условие 2)and.....and(условие х) then [выполнится только при выполнении всех условий];


одно условие это выражение типа (x>y) or (x<y) or (x=y)

кстати - если условия через оr писать, то оператор после then выполнится при истинности одного из условий.


пример
if ((a > 2) and (b = 9)) or ((a < 2) and ( b=5 )) then [выполнится при а больше двух И b равном девяти, ИЛИ при а меньшим двум И b равном пяти.]
0
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 19:50  [ТС]
Напиши пример, пожалуйста в коде! Очень просто хочу знать, но пока еще не понял. Пожалуйста! Мне очень нужны конкретные примеры!
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 19:53
... тебе надо глубже копать...
Начни с паскаля - советую.
Ты не можешь условия составить, а уже пользуешься объектами.
0
 Аватар для Star
3 / 3 / 0
Регистрация: 04.11.2008
Сообщений: 79
05.11.2008, 19:57  [ТС]
Ну че ты сразу...
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
05.11.2008, 20:00
Star, Я конечно понимаю что хочется всего и сразу, но вначале пойми как пользоваться оператором IF, и как составлять условия. как минимум.
Ты же даже не понимаешь что ты делаешь ...
Что печально.

ЗЫЖ: я тебе оператор и примеры условий расписал - проще некуда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2008, 20:00

Движение обьекта по синусоиде
В моей программе содержится обьект который создается и перемещается по заданным координатам. А по нажатии красной кнопки ВКЛ\ВЫКЛ он должен...

Движение обьекта по спирали
Нарисовал при помощи метода polygon фигуру, как сделать так чтобы она двигалась начиная с центра экрана по спирали?

Рэндомное движение обьекта
Осуществляется случайное движение объекта в неком квадрате, каждое перемещение объекта - итерация цикла. Потому при движении объект сильно...

Движение обьекта TImage?
Добрый день подскажите пожалуйста как с помощью стрелок двигать обьект в TImage??? Если это возможно? Заранее спасибо за ответы!!!

Движение обьекта по кратчайшему пути до точки
Всем привет! дается поле ~14x14 клеток. каждая клетка - обьект Image. Все картинки находятся в двумерном массиве 14х14, так что свободный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru