Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VB6] создание границ формы


Автор: psyhyatr 6.2.2010, 17:16
здраствуйте,я уже видел похожую тему созданную два года назад но там нету ни одного ответа....

мне надо чтобы созданная внутри кнопка придя к границе формы уходила в другую сторону.с движениями проблем нет и с координатами границ
формы тоже.проблема в том что кнопка доходит до границы и не останавлиется....может быть у кого то найдется минута помочь?...если можно коротоко прокоментировать мою ошибку.я только начал учить программирование,так что имейте ввиду при объяснении. спасибо  всем за помощь smile 

Автор: Sanaff 6.2.2010, 23:15
Я пока не обрёл телепатических способностей, поэтому скромное желание увидеть ваш код. ))
Чем кнопка двигается, как вы определили границы и процедуру "ухода в другую стророну" мне неведомо...

Добавлено через 10 минут и 41 секунду
Код, конечно, накидать могу, но легче исправить имеющийся ;)

Автор: psyhyatr 7.2.2010, 01:53
Код

Option Explicit
Dim dy As Integer
Private Sub cmdarkanoid_Click()
cmdarkanoid.Top = cmdarkanoid.Top - dy
'cmdarkanoid.top= 0 ; 6400
'cmdarkanoid.left= 0 ; 7100
If cmdarkanoid.Top < 0 Then
dy = -dy
End If
If cmdarkanoid.Top > 6400 Then
dy = -dy
End If
If cmdarkanoid.Top < 3200 Then
cmdarkanoid.Left = cmdarkanoid.Left + dy
End If

Private Sub Form_Load()
dy = 100

End Sub



границы вроде нашел как разметить,покрайней мере топ.так теперь застрял с движением кнопки...координаты формы в коментах

Автор: Sanaff 7.2.2010, 09:59
Попробуйте так:
Код

Option Explicit
Dim dy As Integer, dx As Integer, sizx As Integer, sizy As Integer
Private Sub cmdarkanoid_Click()
'cmdarkanoid.top= 0 ; 6400
'cmdarkanoid.left= 0 ; 7100

If cmdarkanoid.Top < 0 Or cmdarkanoid.Top + cmdarkanoid.Height > sizy Then
  dy = -dy
End If
If cmdarkanoid.Left < 0 Or cmdarkanoid.Left + cmdarkanoid.Width > sizx Then
  dx = -dx
End If

'передвижение кнопки
cmdarkanoid.Left = cmdarkanoid.Left + dx
cmdarkanoid.Top = cmdarkanoid.Top + dy

End Sub

Private Sub Form_Load()
dy = 100 'вниз
dx = 100 'вправо

'размеры формы
Form1.Width = 7100
Form1.Height = 6400

'размеры рабочей области. они меньше. ( 6975 х 6000 )
sizx = Form1.ScaleWidth
sizy = Form1.ScaleHeight

End Sub



Отображения на форме и графику - лучше считать в Pixels, а не Twip. Pixels хоть совпадают с точками монитора. мне лично так удобнее. Узнать сколько твипов в пикселе - Screen.TwipsPerPixelX
Перевести форму в пиксельный формат - Form1.scalemode= 3





Автор: psyhyatr 7.2.2010, 21:42
SANAFF

СПАСИБО ВАМ ОГРОМНОЕ!! smile  smile СЕЙЧАС БУДУ РАЗБИРАТЬ!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)