![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Задача очень простая - есть форма, на ней несколько картинок, надо чтоб при клике по картинке и нажатой кнопке ее можно было таскать в пределах формы. Попробовал помучать DelphiX, но так и не понял что именно мне от него надо (
Помогите, пожаааалуйста! |
#2
|
|||
|
|||
![]() |
#3
|
|||
|
|||
![]() ошибка 500. а хоть что там примерно?
|
#4
|
|||
|
|||
![]() Так те в DelphiX Спарйты надо или просто Imag'ы?
|
#5
|
|||
|
|||
![]() Объявляешь перменные
Код:
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
|
|||
|
|||
![]() большое спасибо!
|