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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2012, 17:20   #1
KotyaraYa
Пользователь
 
Регистрация: 16.12.2012
Сообщений: 10
Вопрос Как сделать ограничение на перемещение? Или я не знаю как называется это правильно. (См. внутри) Делфи

Если нажимать на кнопки ВПРАВО ВЛЕВО ВВЕРХ ВНИЗ робот Петька перемещается соответственно этим кнопкам. А как сделать так, чтобы Петька не заезжал на другие кнопки? Чтобы выдавалось, например, сообщение "Не могу дальше". Ну или без сообщения, просто чтобы остановился около других объектов на форме. Что и где нужно прописать?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
Label1: TLabel;
Shape1: TShape;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
SpeedButton4: TSpeedButton;
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
button1.Top:=button1.Top-1;
if (button1.Top<0) then
begin
button1.Top:=0;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
button1.Top:=button1.Top+1;
if (button1.Top>471) then
begin
button1.Top:=471;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
button1.Left:=button1.Left+1;
if (button1.left>649) then
begin
button1.Left:=649;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
button1.Left:=button1.Left-1;
if button1.Left<0 then
begin
button1.left:=0;
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
CH,CW:integer;
begin
randomize;
CH:=random(ClientHeight-speedbutton1.Height);
CW:=random(ClientWidth-speedbutton1.Width);
if (CH<0) or (CW<0) then
begin
CH:=CH+speedbutton1.Height;
CW:=CW+speedbutton1.Width;
speedbutton1.Top:=CH;
speedbutton1.Left:=CW;
end
else
speedbutton1.Top:=CH;
speedbutton1.Left:=CW;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
shape1.width:=shape1.width + 1;
shape1.height:=shape1.height + 1;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
shape1.width:=shape1.width - 1;
shape1.height:=shape1.height - 1;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
close;
end;
end.
Изображения
Тип файла: jpg Снимок.jpg (45.3 Кб, 148 просмотров)
KotyaraYa вне форума Ответить с цитированием
Старый 16.12.2012, 18:13   #2
Aranea tela telam
Пользователь
 
Аватар для Aranea tela telam
 
Регистрация: 11.01.2012
Сообщений: 51
По умолчанию

ну поидее можно например в событие кнопки в право написать
Код:
if кнопка вправо.left < кнопка надуть.left - кнопка вправо.width then кнопка Петька.left:=кнопка Петька.left+1;
ну и остальные примерно также)
Я учусь на своих ошибках, но порой их слишком много
Aranea tela telam вне форума Ответить с цитированием
Старый 16.12.2012, 18:19   #3
KotyaraYa
Пользователь
 
Регистрация: 16.12.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Aranea tela telam Посмотреть сообщение
ну поидее можно например в событие кнопки в право написать
Код:
if кнопка вправо.left < кнопка надуть.left - кнопка вправо.width then кнопка Петька.left:=кнопка Петька.left+1;
ну и остальные примерно также)
Пробовал прописать для вправо, но все равно заезжает на Надуть(
KotyaraYa вне форума Ответить с цитированием
Старый 16.12.2012, 18:30   #4
Aranea tela telam
Пользователь
 
Аватар для Aranea tela telam
 
Регистрация: 11.01.2012
Сообщений: 51
По умолчанию

Проверил у себя все пашет
Button1 - это кнопка вправо
Button3 - это кнопка Петька
Button2 - это просто кнопка
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Button3.Left < Button2.Left-Button3.Width) then Button3.Left:=Button3.Left+1;
end;
Я учусь на своих ошибках, но порой их слишком много
Aranea tela telam вне форума Ответить с цитированием
Старый 16.12.2012, 19:45   #5
KotyaraYa
Пользователь
 
Регистрация: 16.12.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Aranea tela telam Посмотреть сообщение
Проверил у себя все пашет
Button1 - это кнопка вправо
Button3 - это кнопка Петька
Button2 - это просто кнопка
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Button3.Left < Button2.Left-Button3.Width) then Button3.Left:=Button3.Left+1;
end;
Блин, у меня ничего не выходит. Теперь у меня ни одна кнопка почему-то не работает. Я запутался.((((
KotyaraYa вне форума Ответить с цитированием
Старый 17.12.2012, 07:42   #6
Aranea tela telam
Пользователь
 
Аватар для Aranea tela telam
 
Регистрация: 11.01.2012
Сообщений: 51
По умолчанию

Вот тебе исходник
Там небольшой пример нажатия кнопок налево и на право, Вниз и вверх примерно также делать

Новая папка.rar
Я учусь на своих ошибках, но порой их слишком много
Aranea tela telam вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как называется это приложение? коротко внутри. Vova777 Софт 9 13.08.2012 11:26
как найти файл(как он называется не знаю). Люба777 Помощь студентам 0 20.12.2011 21:06
Не знаю как правильно сделать вызов функции Homutova_Julia Помощь студентам 14 07.06.2011 23:45
Как такое сделать (извените. но даже не знаю как это называется) Van'Denis HTML и CSS 3 30.08.2009 10:46
Не знаю как это сделать:) LSDkltn БД в Delphi 2 09.11.2007 13:39