Здравствуйте. Нам в школе задали сделать одну задачу, но я совершенно не представляю себе, как это реализовать( Помогите, пожалуйста. Задача состоит в следующем: предположим, что с левой стороны формы расположены три имейджа, а в левой стороне формы расположены к примеру 3 панели с подписями. необходимо перетащить имейдж на соответствующую панель. И если эта панель подходит - то изображение остается на ней, если же нет, то возвращается на исходное положение. ну к примеру, одна из картинок - Ниагарский водопад и ее надо разместить на панель с подписью Ниагарски водопад и т.д. ТОлько во время перетасквания, имейдж привязывается к курсору и движется за ним.
Помогите пожалуйста, буду очень благодарен
Перетаскивание имейджа
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
это называется drag'n'drop

Как это называется, я знаю) Как реализовать, чтобы имейдж привязывался к курсору?)
На OnMouseDown на имаге поставить какой-нибудь флаг, на OnMouseUp - сбросить. На OnMouseMove - если флаг установлен, менять координаты имаги в соответствии с координатами Mouse.CursorPos. Когда флаг сбрасывается, проверять координаты имаги по отношению к панелям - если поверх какой-нибудь панели, обработать и сказать, верно или нет.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Исходники: http://rapidshare.com/files/303534676/rr.zip.htmlDennis777 писал(а):Как это называется, я знаю) Как реализовать, чтобы имейдж привязывался к курсору?)
[syntax='Delphi']
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source is TImage then
begin
TImage(Source).Left := X;
TImage(Source).Top := Y;
end;
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Source is TImage);
TImage(Source).Left := X;
TImage(Source).Top := Y;
edit1.Text:=IntToStr(x);
edit2.Text:=IntToStr(y);
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.BeginDrag(True) ;
end;
[/syntax]
Дальше думаю не составит труда дописать.
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)