помогите плз,на форме есть несколько имейджев (в массиве),при зажатии мышки на одной из картинке, её можно перемещать,но если при перемещени она попадёт на "территорию" другой картинки,то они должны поменяться местами.
У меня какаято фигня получается.картинка на которую заехали перемещаетс нормально на новое место,а та которую перемещаем исчезает.хотя вроде судя по её новым координатам она стоит на месте предидущей картинки.
Может кто посмотрит? мне кажется я чтото намудрил в части где проверяется заехала ли перемещаемая картинка на другую,такое чувство както подругому проверять надо.
Код:
procedure TForm1.ImsMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var i,x2,y2:integer;
begin
if move then
begin
Ims[mm].left:= Ims[mm].Left+x-x0;
Ims[mm].Top:= Ims[mm].Top+y-y0;
for i:=0 to Length(Ims)-1 do
{mm-номер в массиве выделенной картинки} //если картинка поподает на территорию другой картинки то меняем их местами
if (i<>mm) and ( Ims[mm].left+50>=Ims[i].Left)and ( Ims[mm].left<=Ims[i].Left+50) //50 ширина картинки
and ( Ims[mm].top+50>=Ims[i].top)and ( Ims[mm].top<=Ims[i].top+50) //и высота
then
begin
move:=false;//останавливаем перемещение
x2:= ims[i].top;//запоминаем прежние координаты
y2:= ims[i].Left;
ims[i].top:=x1;//глобальные переменные в которых хранятся начальные коорд.перемещаемой картинки
ims[i].left:=y1;
//x1:=x2;
//y1:=y2;
Ims[mm].left:=x2;//применяем прежние коорд. к нашему имейджу
Ims[mm].Top:=y2;
break;//завершаем цикл
scrollbox1.refresh;
end
end;
end;