Страница: 1 |
Страница: 1 |
Вопрос: Как сделать сетку для елементов DragAndDrop?
Добавлено: 23.05.08 18:35
Автор вопроса: Mc.WOLF
Как сделать сетку для елементов DragAndDrop (типа как в WindowsXP рабочий стол!)
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #1
Добавлено: 23.05.08 18:39
Ещё новичек.
Сетку на чём делаем? На форме? В PictureBox-е?
Где илиМЕНТы размещать собрался?
Поподробней, поподробней, не надо стесняться
Номер ответа: 2
Автор ответа:
Mc.WOLF
Вопросов: 26
Ответов: 84
Профиль | | #2
Добавлено: 23.05.08 18:55
Можна и "На форме" и "в PictureBox-е" было-б лучше если на форме!
Я хочу сделаьть что-б иконки (как на рабочем столе) стояли красиво!
Ака в Windows "Упорядочить значки" ---> "Выровнять по сетке"
Номер ответа: 3
Автор ответа:
Mc.WOLF
Вопросов: 26
Ответов: 84
Профиль | | #3
Добавлено: 23.05.08 22:56
Можна и "На форме" и "в PictureBox-е" было-б лучше если на форме!
Я хочу сделаьть что-б иконки (как на рабочем столе) стояли красиво!
Как в Windows "Упорядочить значки" ---> "Выровнять по сетке"
Номер ответа: 4
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #4
Добавлено: 23.05.08 23:44
А сейчас они есть, но стоят некрасиво?
Номер ответа: 5
Автор ответа:
Игорь
ICQ: 457394129
Вопросов: 52
Ответов: 133
Профиль | | #5
Добавлено: 24.05.08 08:10
Это нужно на месте смотреть, когда отпускать будешь где-нибудь "схваченую" иконку, то там нужно вычислить к какому столбцу иконка ближе упала на тот её и переместить, так же и для строк. В итоге получится что картинка упала куда попало, но тутже притянулась в нужное место. Как в XP
Номер ответа: 6
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #6
Добавлено: 24.05.08 13:16
Запихни на форму PictureBox с именем ico
Поставь ему Index = 0
Private DX As Single, DY As Single
Private Arrange As Boolean
Const SIZE = 48
Private Sub Form_Load()
Dim i As Integer
Randomize
ScaleMode = 3
AutoRedraw = True
ico(0).ScaleMode = 3
ico(0).AutoRedraw = True
'Сетка
For i = SIZE To ScaleWidth Step SIZE
Line (i, 0)-(i, ScaleHeight)
Next i
For i = SIZE To ScaleHeight Step SIZE
Line (0, i)-(ScaleWidth, i)
Next i
'Загржаем значки
ico(0).Move Int(Rnd * ScaleWidth), Int(Rnd * ScaleHeight), SIZE, SIZE
ico(0).BackColor = &H80C0FF
ico(0).Print 0
For i = 1 To 9
Load ico(i)
ico(i).Visible = True
ico(i).Print i
ico(i).Move Int(Rnd * (ScaleWidth - SIZE)), Int(Rnd * (ScaleHeight - SIZE))
Next i
'Упорядочивание = FALSE
Arrange = False
Caption = "Упорядочивание = " & Arrange & " (Щелкните по форме для изменения)"
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Arrange = Not Arrange
Caption = "Упорядочивание = " & Arrange
If Arrange Then Call ArrangeIcons
End Sub
Private Sub ico_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not Button = vbLeftButton Then Exit Sub
 X = X
 Y = Y
End Sub
Private Sub ico_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not Button = vbLeftButton Then Exit Sub
ico(Index).Move ico(Index).Left + X - DX, ico(Index).Top + Y - DY
End Sub
Private Sub ico_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not Arrange Then Exit Sub
ico(Index).Move ((ico(Index).Left + X) \ SIZE) * SIZE, _
 (ico(Index).Top + Y) \ SIZE) * SIZE
End Sub
Private Sub ArrangeIcons()
Dim i As Integer
For i = 0 To 9
ico(i).Move ((ico(i).Left + ico(i).Width \ 2) \ SIZE) * SIZE, _
 (ico(i).Top + ico(i).Height \ 2) \ SIZE) * SIZE
Next i
End Sub
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 24.05.08 15:04
Попробуй LVS_EX_SNAPTOGRID
Номер ответа: 8
Автор ответа:
Mc.WOLF
Вопросов: 26
Ответов: 84
Профиль | | #8
Добавлено: 25.05.08 12:43
[/Спасибки ребя ВСЕМ что помогли!!! Очень выручили!!!u]
))