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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.09.2011, 18:16
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию перемещение image'в по форме не так работает

помогите плз,на форме есть несколько имейджев (в массиве),при зажатии мышки на одной из картинке, её можно перемещать,но если при перемещени она попадёт на "территорию" другой картинки,то они должны поменяться местами.
У меня какаято фигня получается.картинка на которую заехали перемещаетс нормально на новое место,а та которую перемещаем исчезает.хотя вроде судя по её новым координатам она стоит на месте предидущей картинки.
Может кто посмотрит? мне кажется я чтото намудрил в части где проверяется заехала ли перемещаемая картинка на другую,такое чувство както подругому проверять надо.
Код:
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;
Вложения
Тип файла: rar MoveObject.rar (44.1 Кбайт, 1 просмотров)

Последний раз редактировалось Snake22, 01.09.2011 в 18:18.
Ответить с цитированием
  #2  
Старый 01.09.2011, 18:26
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

а блин туплю! left и тор пестами перепутал ёма
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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