Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.10.2007, 20:15
Llanowar Llanowar вне форума
Прохожий
 
Регистрация: 25.10.2007
Сообщения: 3
Репутация: 10
По умолчанию Drag'n'drop картинок

Задача очень простая - есть форма, на ней несколько картинок, надо чтоб при клике по картинке и нажатой кнопке ее можно было таскать в пределах формы. Попробовал помучать DelphiX, но так и не понял что именно мне от него надо (
Помогите, пожаааалуйста!
Ответить с цитированием
  #2  
Старый 25.10.2007, 22:41
aleksnine aleksnine вне форума
Начинающий
 
Регистрация: 08.03.2007
Сообщения: 151
Репутация: 12
По умолчанию

http://narod.yandex.ru/cgi-bin/yandm...0=360118000&p=
Ответить с цитированием
  #3  
Старый 27.10.2007, 15:38
Llanowar Llanowar вне форума
Прохожий
 
Регистрация: 25.10.2007
Сообщения: 3
Репутация: 10
По умолчанию

ошибка 500. а хоть что там примерно?
Ответить с цитированием
  #4  
Старый 27.10.2007, 16:06
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Так те в DelphiX Спарйты надо или просто Imag'ы?
Ответить с цитированием
  #5  
Старый 29.10.2007, 16:15
wildshaman wildshaman вне форума
Прохожий
 
Регистрация: 13.10.2007
Сообщения: 21
Репутация: 10
По умолчанию

Объявляешь перменные
Код:
var
x0, y0: integer;
move: boolean;

Теперь напишем обработчик OnMouseDown для картинки:


Код:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
begin
Shift: TShiftState; X, Y: Integer);
   move:=true;
   x0:=x; //запоминаем начальные координаты
   y0:=y; //запоминаем начальные координаты

end;


Теперь напишем обработчик OnMouseMove длякартинки:




Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if move then
begin
   image1.Left:=image1.Left+x-x0; // Изменяем позицию левого края
   image1.Top:=image1.Top+y-y0; // Изменяем позицию верхнего края
end;
end;


Ну и наконец обработчик OnMouseUp для картинки будет таким:

Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
move := false;
end;


Но такой же алгоритм перемещения можно реализовать немного красивее. У некоторых компонентов, в том числе и Image, есть такая классная процедура SetBounds(Left,Top,Width,Height), которая может изменять сразу все четыре параметра. Таким образом событие OnMouseMove можно изменить так:


Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if move then
   image1.SetBounds(image1.Left+x-x0, image1.Top+y-y0,
   image1.width, image1.height);
end;
Ответить с цитированием
  #6  
Старый 01.11.2007, 03:26
Llanowar Llanowar вне форума
Прохожий
 
Регистрация: 25.10.2007
Сообщения: 3
Репутация: 10
По умолчанию

большое спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:59.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025