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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2009, 21:01   #1
LexaBeliy
 
Аватар для LexaBeliy
 
Регистрация: 12.10.2008
Сообщений: 7
Вопрос Перемещение TImage

Мужики, помогите. Я в Delphi новичёк. У меня стоит Delphi 7.
Мне нужно, чтобы кликнув мышью по картинке, она (картинка) переместилась в другое место. В интернете искал, так толком ничего полезного не нашёл. Кто знает, объясните поподробнее.
LexaBeliy вне форума Ответить с цитированием
Старый 01.09.2009, 21:08   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Можно так:

Код:
var
  Form1: TForm1;
  MouseDownSpot : TPoint;
  Capturing : bool;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 DoubleBuffered:= True;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Capturing := true;
	MouseDownSpot.X := x;
	MouseDownSpot.Y := Y;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 	if Capturing then
	begin
		Image1.Left := Image1.Left - (MouseDownSpot.x - x);
		Image1.Top :=  Image1.Top - (MouseDownSpot.y - y);
	end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 	if Capturing then
	begin
		Capturing := false;
		Image1.Left := Image1.Left - (MouseDownSpot.x - x);
		Image1.Top := Image1.Top - (MouseDownSpot.y - y);
	end;
end;
uberchel вне форума Ответить с цитированием
Старый 01.09.2009, 21:13   #3
LexaBeliy
 
Аватар для LexaBeliy
 
Регистрация: 12.10.2008
Сообщений: 7
По умолчанию

Большое спасибо!!! Сейчас попробую.
LexaBeliy вне форума Ответить с цитированием
Старый 01.09.2009, 23:18   #4
LexaBeliy
 
Аватар для LexaBeliy
 
Регистрация: 12.10.2008
Сообщений: 7
По умолчанию

Это получается, что рисунок перемещается мышью.
Но мне нужно переместить просто одним кликом, т.е. нажал, и рисунок сам плавно переместится в нужное место.
LexaBeliy вне форума Ответить с цитированием
Старый 01.09.2009, 23:41   #5
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

А откуда вы берёте координаты этого "нужного места"?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 01.09.2009, 23:54   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

LexaBeliy вот держи. Как то в инете нашел.
Вложения
Тип файла: rar prim.rar (166.7 Кб, 25 просмотров)
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 01.09.2009, 23:57   #7
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

з.ы. DomiNick, никогда особо не обращал внимания на вашу подпись. Прикольно
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 07.09.2009, 23:06   #8
LexaBeliy
 
Аватар для LexaBeliy
 
Регистрация: 12.10.2008
Сообщений: 7
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
LexaBeliy вот держи. Как то в инете нашел.
Спасибо за помощь! То что нужно!!!
LexaBeliy вне форума Ответить с цитированием
Старый 08.09.2009, 10:41   #9
Rebel123
C++ новичок
Форумчанин
 
Аватар для Rebel123
 
Регистрация: 13.06.2009
Сообщений: 160
По умолчанию

Ну вот тебе примерчик.........

То есть тебе нужно так: На клике по Картинке чтоб Она переместилась!
Вот тебе код:

Код:
procedure TForm1.Image1Click(Sender: TObject);
begin
Image1.Left:=50 // (но за место цифры 50, можешь поставить любую по желанию, то есть смотри на свойство твоей картинки а именно на свойтсо Left и там уже определяй сколько тебе нужно поставить)
Image1.Top:=50 // (так же определяешь нужное тебе расположение картинки)
end;
Rebel123 вне форума Ответить с цитированием
Старый 09.09.2009, 11:43   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
Код:
procedure TForm1.Image1Click(Sender: TObject);
begin
Image1.Left:=50 // (но за место цифры 50, можешь поставить любую по желанию, то есть смотри на свойство твоей картинки а именно на свойтсо Left и там уже определяй сколько тебе нужно поставить)
Image1.Top:=50 // (так же определяешь нужное тебе расположение картинки)
end;
При таком коде Image будет всегда находиться в одном и том же месте.
Корректнее в том же обработчике:
Код:
Form1.Image1.Left:= Form1.Image1.Left + dx // dx -приращение изменения координат Image по горизонт.
Form1.Image1.Top:= Form1.Image1.Top + dy // dy -приращение изменения координат Image по вертик..
А лучший алгоритм - это когда по первому клику выделяется необходимый Image,
а по второму , если на том же Image - снимается выделение;
если не на Image , то указывает новые координаты.
Так можно обрабатывать несколько Image.
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 09.09.2009 в 11:49.
DeKot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение TImage Романнн Общие вопросы Delphi 1 27.10.2008 18:38
TImage maxvodo.dll Мультимедиа в Delphi 3 24.10.2008 21:29
Timage Черничный Компоненты Delphi 10 04.07.2008 12:50
Timage RealSHELS Общие вопросы Delphi 7 05.05.2008 20:12
TImage Andrey9392 Компоненты Delphi 6 06.04.2007 10:43