Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ограничение площади движения объекта

7.6K
14 июня 2004 года
Midnight_shadow
3 / / 14.06.2004
Здравствуйте!
Подскажите пожалуйста, как ограничить площадь движения объекта по форме?
Т.е. имеется объект, который при нажатии клавиши влево или вправо двигается соответственно по форме,
и постоянно "улетает" за её пределы, надо ограничить площадь его движения. Заранее спасибо.
648
15 июня 2004 года
Tiraspolsky
220 / / 23.07.2003
Цитата:
Originally posted by Midnight_shadow
Здравствуйте!
Подскажите пожалуйста, как ограничить площадь движения объекта по форме?
Т.е. имеется объект, который при нажатии клавиши влево или вправо двигается соответственно по форме,
и постоянно "улетает" за её пределы, надо ограничить площадь его движения. Заранее спасибо.



Непонятно, чего тебе надо. Выразись яснее. Может у тебя клавиши влево и вправо просто залипают.

258
15 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Наверное он не знает как поставить проверку на достижение границ формы...
7.6K
15 июня 2004 года
Midnight_shadow
3 / / 14.06.2004
Цитата:
Originally posted by SergeySV
Наверное он не знает как поставить проверку на достижение границ формы...



Да, об этом я и спрашиваю....ну так как??=)

258
16 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Например так:
Код:
Dim bolExit As Boolean ' Выход из цикла (а то процесс висит еще после закрытия гл. формы)

Private Sub Form_Activate()
  Dim vX As Integer, vY As Integer ' Значения -1/1, направление движения
  Dim iStep As Integer ' Шаг смещения
  Dim iSizeCaption As Integer ' Высота заголовка формы
 
  ' Начальная инициализация
  vX = 1
  vY = 1
  iStep = 1
  iSizeCaption = 380
 
  Do
    ' проверка выхода за границы формы по горизонтали
    If Command1.Left + Command1.Width + vX * iStep > Form1.Width Or _
       Command1.Left + vX * iStep < 0 Then
         
         ' меняем направление движения на против.
         vX = -1 * vX
    End If
   
    ' проверка выхода за границы формы по вертикали
    If Command1.Top + Command1.Height + vY * iStep > Form1.Height - iSizeCaption Or _
       Command1.Top + vY * iStep < 0 Then
         
         ' меняем направление движения на против.
         vY = -1 * vY
    End If
   
    ' изменяем положение
    Command1.Left = Command1.Left + vX * iStep
    Command1.Top = Command1.Top + vY * iStep
   
    ' остановка программы для принудительной обработки сообщений,
    ' например: перерисовка формы
    DoEvents
  Loop Until bolExit
End Sub
7.6K
16 июня 2004 года
Midnight_shadow
3 / / 14.06.2004
Цитата:
Originally posted by SergeySV
Например так:
Код:
Dim bolExit As Boolean ' Выход из цикла (а то процесс висит еще после закрытия гл. формы)

Private Sub Form_Activate()
  Dim vX As Integer, vY As Integer ' Значения -1/1, направление движения
  Dim iStep As Integer ' Шаг смещения
  Dim iSizeCaption As Integer ' Высота заголовка формы
 
  ' Начальная инициализация
  vX = 1
  vY = 1
  iStep = 1
  iSizeCaption = 380
 
  Do
    ' проверка выхода за границы формы по горизонтали
    If Command1.Left + Command1.Width + vX * iStep > Form1.Width Or _
       Command1.Left + vX * iStep < 0 Then
         
         ' меняем направление движения на против.
         vX = -1 * vX
    End If
   
    ' проверка выхода за границы формы по вертикали
    If Command1.Top + Command1.Height + vX * iStep > Form1.Height - iSizeCaption Or _
       Command1.Top + vX * iStep < 0 Then
         
         ' меняем направление движения на против.
         vY = -1 * vY
    End If
   
    ' изменяем положение
    Command1.Left = Command1.Left + vX * iStep
    Command1.Top = Command1.Top + vY * iStep
   
    ' остановка программы для принудительной обработки сообщений,
    ' например: перерисовка формы
    DoEvents
  Loop Until bolExit
End Sub



Большое Вам спасибо. Сейчас попробую. Ещё раз спасибо.

258
16 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Ага, токо я там ошибку небольшую нашел, уже подправил - где по вертикали vX на vY надо заменить
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог