Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Прилипание к краям экрана Добавлено: 26.09.07 14:21  

Автор вопроса:  mr. Ed | Web-сайт: vario.org.ru | ICQ: 465041149 
 Доброго времени суток!
 ОЧЕНЬ надо осуществить прилипание проги к краям экрана...Помогите пожалуста!

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #1 Добавлено: 26.09.07 15:20
прилипли к правому верхнему углу
form1.left = screen.width -form1.width
form1.top = screen.top
прилипли к левому нижнему углу
form1.left = screen.left
fom1.top = screen.height - form1.height

ну и так далее

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 26.09.07 16:17
ахах))
прилипание - это элементарно!
Самое сложное - отлипание от края экрана=)

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 26.09.07 16:21
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Not Button = vbLeftButton Then Exit Sub
    ;DX = x * Screen.TwipsPerPixelX
    ;DY = y * Screen.TwipsPerPixelY
End Sub

Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Not Button = vbLeftButton Then Exit Sub
    ;DX = x
    ;DY = y
End Sub


Public lngTop As Long, lngLeft As Long, DX As Single, DY As Single
Public Sub Slide(x As Single, y As Single, OnSizeScreen As Boolean, Size As Long, f As Form)
lngLeft = f.Left + x - DX 'Автор универсальной процедуры Slide Беляев Данила <outen@mail.ru>
lngTop = f.Top + y - DY
Debug.Print x, DX, x - DX
If OnSizeScreen = False Then
    If (lngLeft + f.Width >= Screen.Width - Size * Screen.TwipsPerPixelX) And (lngLeft + f.Width <= Screen.Width + Size * Screen.TwipsPerPixelX) Then
        lngLeft = Screen.Width - f.Width
    ElseIf (lngLeft <= Size * Screen.TwipsPerPixelX) And (lngLeft >= -Size * Screen.TwipsPerPixelX) Then
        lngLeft = 0
    End If
    If (lngTop + f.Height >= Screen.Height - Size * Screen.TwipsPerPixelX) And (lngTop + f.Height <= Screen.Height + Size * Screen.TwipsPerPixelX) Then
        lngTop = Screen.Height - f.Height
    ElseIf (lngTop <= Size * Screen.TwipsPerPixelX) And (lngTop >= -Size * Screen.TwipsPerPixelX) Then
        lngTop = 0
    End If
Else
    If lngLeft + f.Width >= Screen.Width - Size * Screen.TwipsPerPixelX Then
        lngLeft = Screen.Width - f.Width
    ElseIf lngLeft <= Size * Screen.TwipsPerPixelX Then
        lngLeft = 0
    End If
    If lngTop + f.Height >= Screen.Height - Size * Screen.TwipsPerPixelX Then
        lngTop = Screen.Height - f.Height
    ElseIf lngTop <= Size * Screen.TwipsPerPixelX Then
        lngTop = 0
    End If
End If
f.Move lngLeft, lngTop
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 26.09.07 16:24
Ошибся сори. Вместо Label1_MouseDown
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If Not Button = vbLeftButton Then Exit Sub
Slide x * Screen.TwipsPerPixelX, y * Screen.TwipsPerPixelY, MoveType, ClingLevel, Me
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 mr. Ed



ICQ: 465041149 

Вопросов: 15
Ответов: 16
 Web-сайт: vario.org.ru
 Профиль | | #5
Добавлено: 26.09.07 20:54
 Огромное человеческое спасибо!Я записал ваши контакты-как только прога будет доделана-пришлю на иссследование!

Ответить

Номер ответа: 6
Автор ответа:
 mr. Ed



ICQ: 465041149 

Вопросов: 15
Ответов: 16
 Web-сайт: vario.org.ru
 Профиль | | #6
Добавлено: 26.09.07 20:59
М-да...Попробовал все коды-везде выскакивает ошибка...что за х...

Ответить

Номер ответа: 7
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 26.09.07 22:54
телепатию не практикуем!

Какая хоть? где именно в коде?

Ответить

Номер ответа: 8
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #8 Добавлено: 27.09.07 00:08
Хотябы здесь :)
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If Not Button = vbLeftButton Then Exit Sub
Slide x * Screen.TwipsPerPixelX, y * Screen.TwipsPerPixelY, MoveType, ClingLevel, Me
End Sub
Переменные MoveType и ClingLevel не существуют.

Ответить

Номер ответа: 9
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #9 Добавлено: 27.09.07 00:15
Option Explicit

Public lngTop As Long, lngLeft As Long, DX As Single, DY As Single
Public Sub Slide(x As Single, y As Single, OnSizeScreen As Boolean, Size As Long, f As Form)
lngLeft = f.Left + x - DX 'Автор универсальной процедуры Slide Беляев Данила <outen@mail.ru>
lngTop = f.Top + y - DY
If OnSizeScreen = False Then
    If (lngLeft + f.Width >= Screen.Width - Size * Screen.TwipsPerPixelX) And (lngLeft + f.Width <= Screen.Width + Size * Screen.TwipsPerPixelX) Then
        lngLeft = Screen.Width - f.Width
    ElseIf (lngLeft <= Size * Screen.TwipsPerPixelX) And (lngLeft >= -Size * Screen.TwipsPerPixelX) Then
        lngLeft = 0
    End If
    If (lngTop + f.Height >= Screen.Height - Size * Screen.TwipsPerPixelX) And (lngTop + f.Height <= Screen.Height + Size * Screen.TwipsPerPixelX) Then
        lngTop = Screen.Height - f.Height
    ElseIf (lngTop <= Size * Screen.TwipsPerPixelX) And (lngTop >= -Size * Screen.TwipsPerPixelX) Then
        lngTop = 0
    End If
Else
    If lngLeft + f.Width >= Screen.Width - Size * Screen.TwipsPerPixelX Then
        lngLeft = Screen.Width - f.Width
    ElseIf lngLeft <= Size * Screen.TwipsPerPixelX Then
        lngLeft = 0
    End If
    If lngTop + f.Height >= Screen.Height - Size * Screen.TwipsPerPixelX Then
        lngTop = Screen.Height - f.Height
    ElseIf lngTop <= Size * Screen.TwipsPerPixelX Then
        lngTop = 0
    End If
End If
f.Move lngLeft, lngTop
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Not Button = vbLeftButton Then Exit Sub
    ;DX = x * Screen.TwipsPerPixelX
    ;DY = y * Screen.TwipsPerPixelY
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If Not Button = vbLeftButton Then Exit Sub
Slide x * Screen.TwipsPerPixelX, y * Screen.TwipsPerPixelY, False, 15, Me
End Sub
Во-первых, хотелось бы, чтобы прилипание работало при перетаскивании форму за заголовок.
Во-вторых, форма "липнет" к нижней границе экрана, а должна "липнуть" к пуску (если он там и виден).

Давайте сделаем качественную функцию! :)

Ответить

Номер ответа: 10
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #10 Добавлено: 27.09.07 00:19
Чуть не забыл, установить в свойствах формы ScaleMode = vbPixels

Ответить

Номер ответа: 11
Автор ответа:
 Nikoly



Вопросов: 12
Ответов: 26
 Профиль | | #11 Добавлено: 27.09.07 00:50
Прилиание это что, чтоб форма стояла в нужном месте, или чтоб становилась туда после перетаскивания, или чтоб ее сдвинуть нельзя было.Что надо то.

Ответить

Номер ответа: 12
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #12 Добавлено: 27.09.07 01:17
Скопируй код из ответа №9 и не забудь сделать указание из ответа №10, и ты поймёшь, что такое прилипание к границам экрана.

А теперь нужно это доработать.

Ответить

Номер ответа: 13
Автор ответа:
 Nikoly



Вопросов: 12
Ответов: 26
 Профиль | | #13 Добавлено: 27.09.07 01:41
Все сделал,ничего ни прилипает, правда таскается за все места . Может "ScaleMode = vbPixels" не туда поставил. Имя формы не понял какое в примере.

Ответить

Номер ответа: 14
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #14 Добавлено: 27.09.07 12:09
Кого ещё отправить в поиск? :)

Ответить

Номер ответа: 15
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #15 Добавлено: 27.09.07 18:39
Может "ScaleMode = vbPixels" не туда поставил
Это не обязательно прописывать, можно просто указать в Properties формы (строка "ScaleMode", значение "3 - Pixel";)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам