Lobo » 08.01.2004 (Чт) 17:30
Делал я что-то такое... Если, конечно, я правильно понял - написано невразумительно!
Лови пример (код формы).
Option Explicit
Private mvStartX As Variant
Private mvStartY As Variant
Private mvXold As Variant
Private mvYold As Variant
Private mboDrag As Boolean
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Starts drag mode
mboDrag = True
mvStartX = X
mvStartY = Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Selects a region if left button is pressed
Dim i As Integer
Dim j As Integer
If mboDrag And Button = vbLeftButton Then
'Draw selection rectangle:
If IsEmpty(mvXold) Or IsEmpty(mvYold) Then
mvXold = mvStartX
mvYold = mvStartY
Else
DrawMode = vbInvert
DrawStyle = vbDot
Line (mvStartX, mvStartY)-(mvXold, mvYold), , B
Line (mvStartX, mvStartY)-(X, Y), , B
DrawStyle = vbSolid
DrawMode = vbCopyPen
mvXold = X
mvYold = Y
End If
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Draws a seat or a group of seats
Dim intX As Integer
Dim intY As Integer
If Button = vbRightButton Or Button = vbMiddleButton Then
Exit Sub
End If
'Release selection rectangle:
If mboDrag Then
If mvXold <> mvStartX Or mvYold <> mvStartY Then
DrawMode = vbInvert
DrawStyle = vbDot
Line (mvStartX, mvStartY)-(X, Y), , B
DrawStyle = vbSolid
DrawMode = vbCopyPen
End If
End If
intX = CInt(X)
intY = CInt(Y)
'Restore state to that before drag:
mboDrag = False
mvStartX = Empty
mvStartY = Empty
mvXold = Empty
mvYold = Empty
End Sub