Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2013, 10:37   #1
romanzi
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 87
По умолчанию Изоражение выходит за пределы панели

Есть изображение, которое можно двигать по панели.
Но оно может вылетить за пределы этой самой панели.
Написал процедуру, которая не должна это допустить.
Но она работает на половину - в нижний и правый угол изображение свободно проходит.
Что я сделал не так?

Код:
procedure TForm1.IsNearWall;
var
i: integer;
begin
    for i := 1 to iterator do
      begin
        if parts_player[i].Top < 0 then
          begin
              parts_player[i].Top := 0;
          end;

        if parts_player[i].Left < 0 then
          begin
              parts_player[i].Left := 0;
          end;

           if parts_player[i].Top > Panel2.Width then
          begin
              parts_player[i].Top := Panel2.Width;
          end;

           if parts_player[i].Left > Panel2.Height then
          begin
              parts_player[i].Left := Panel2.Height;
          end;
      end;
Спасибо за помощь.
Писал на скорость.по этому мог что-то пропустить.
romanzi вне форума Ответить с цитированием
Старый 25.08.2013, 12:30   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Код:
if parts_player[i].Top + parts_player[i].Height > Panel2.Height then
          begin
              parts_player[i].Top := Panel2.Height - parts_player[i].Height;
          end;

           if parts_player[i].Left + parts_player[i].Width > Panel2.Width then
          begin
              parts_player[i].Left := Panel2.Width - parts_player[i].Width;
          end;
Путаете ширину с высотой и не делаете учёт что для правой и нижней стороны при технике ориентироваться по top left - надо учитывать ещё width height самой картинки.

П.С. а вообще, работать с интерфейсными элементами как с данными - очень неправильно, интерфейс - он только для отображения моделируемого процесса, а все расчёты должны производиться независимо.
Теория http://www.gunsmoker.ru/2010/08/9897.html

Последний раз редактировалось phomm; 25.08.2013 в 12:34.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одно окно не выходит за пределы второго BaronVik C# (си шарп) 1 24.02.2012 19:28
таблица выходит за пределы контейнера MbIJIO HTML и CSS 7 28.05.2011 17:48
Пределы страницы GoldmasteR JavaScript, Ajax 0 24.11.2010 07:02
C++ - выход за пределы массива kefir Помощь студентам 5 12.06.2010 14:09
Пределы экрана Манжосов Денис :) Общие вопросы Delphi 6 01.05.2008 10:58