📄 objdraws.cls
字号:
If blnx Then
.x2 = .x2 + (tmpright - .x1): .x1 = tmpright
Else
.x1 = .x1 + (tmpright - .x2): .x2 = tmpright
End If
Case AlignTop:
If blny Then
.y1 = .y1 + (tmptop - .y2): .y2 = tmptop
Else
.y2 = .y2 + (tmptop - .y1): .y1 = tmptop
End If
Case AlignVCenter:
If blny Then
.y1 = .y1 + (tmpvcenter - tmph / 2 - .y2)
.y2 = tmpvcenter - tmph / 2
Else
.y2 = .y2 + (tmpvcenter - tmph / 2 - .y1)
.y1 = tmpvcenter - tmph / 2
End If
Case AlignBottom:
If blny Then
.y2 = .y2 + (tmpbottom - .y1): .y1 = tmpbottom
Else
.y1 = .y1 + (tmpbottom - .y2): .y2 = tmpbottom
End If
End Select
Else
Select Case AlignParm
Case AlignLeft: .Left = tmpleft
Case AlignHCenter: .Left = tmphcenter - .Width / 2
Case AlignRight: .Left = tmpright - .Width
Case AlignTop: .Top = tmptop
Case AlignVCenter: .Top = tmpvcenter - .Height / 2
Case AlignBottom: .Top = tmpbottom - .Height
End Select
End If
End With
i = i + 1
tmpobj.MoveHd
End If
Next
Call AdjustPage
End If
End Sub
'ActiveAll
Public Sub ActiveAll()
Dim tmpobj As ObjDraw
For Each tmpobj In mCol
If tmpobj.ObjCtl.Visible Then
tmpobj.IsActive = True
tmpobj.IsCurrent = False
End If
Next
mvarnActCount = mCol.Count
mCol(mCol.Count).IsCurrent = True
mvarnCurID = mCol(mCol.Count).nID
End Sub
'CloneActObj
Public Sub CloneActObj(Optional tmpFix As Integer = 15)
Dim tmpobj As ObjDraw, tmpindex As Integer
For Each tmpobj In mCol
With tmpobj
If .IsActive And .ObjCtl.Visible Then
If .eType = mObjLine Then
tmpindex = g_ActFrm.ObjLine.UBound + 1
Load g_ActFrm.ObjLine(tmpindex)
With g_ActFrm.ObjLine(tmpindex)
.x1 = tmpobj.ObjCtl.x1 - tmpFix: .x2 = tmpobj.ObjCtl.x2 - tmpFix
.y1 = tmpobj.ObjCtl.y1 - tmpFix: .y2 = tmpobj.ObjCtl.y2 - tmpFix
.Visible = True
End With
LinkCtl tmpindex, mObjLine, g_ActFrm.ObjLine(tmpindex), 0
ElseIf .eType = mObjText Then
tmpindex = g_ActFrm.ObjText.UBound + 1
Load g_ActFrm.ObjText(tmpindex)
With g_ActFrm.ObjText(tmpindex)
.Left = tmpobj.ObjCtl.Left - tmpFix: .Width = tmpobj.ObjCtl.Width - tmpFix
.Top = tmpobj.ObjCtl.Top - tmpFix: .Height = tmpobj.ObjCtl.Height - tmpFix
.Visible = True
End With
LinkCtl tmpindex, mObjText, g_ActFrm.ObjText(tmpindex), 0
ElseIf .eType = mObjImg Then
tmpindex = g_ActFrm.ObjImg.UBound + 1
Load g_ActFrm.ObjImg(tmpindex)
With g_ActFrm.ObjImg(tmpindex)
.Left = tmpobj.ObjCtl.Left - tmpFix: .Width = tmpobj.ObjCtl.Width - tmpFix
.Top = tmpobj.ObjCtl.Top - tmpFix: .Height = tmpobj.ObjCtl.Height - tmpFix
.Visible = True
End With
LinkCtl tmpindex, mObjImg, g_ActFrm.ObjImg(tmpindex), 0
End If
End If
End With
Next
End Sub
'ChkRange
Public Function ChkRange(x1 As Single, y1 As Single, x2 As Single, y2 As Single, tmpact As ObjDraw) As Long
Dim tmpobj As ObjDraw
mvarnActCount = 0
mvarnCurID = 0
For Each tmpobj In mCol
If tmpobj.CheckRange(IIf(x1 > x2, x2, x1), IIf(y1 > y2, y2, y1), IIf(x1 > x2, x1, x2), IIf(y1 > y2, y1, y2)) Then
mvarnActCount = mvarnActCount + 1
tmpobj.IsActive = True
If mvarnCurID = 0 Then nCurID = tmpobj.nID
' If Not tmpobj.Locked And mvarnCurID = 0 Then nCurID = tmpobj.nID
End If
Next
Set tmpobj = Nothing
If mvarnActCount > 0 Then
If mvarnCurID > 0 Then
Set tmpact = mCol.Item("Obj" & mvarnCurID)
Set tmpact.Handls = mCol.Item("Obj" & mvarnCurID).Handls
Set tmpact.ObjCtl = mCol.Item("Obj" & mvarnCurID).ObjCtl
End If
ChkRange = True
Exit Function
End If
Set tmpact = Nothing
End Function
'ChkPoint
Public Function ChkPoint(X As Single, Y As Single, tmpact As ObjDraw) As Boolean
Dim tmpobj As ObjDraw
nActCount = 0
For Each tmpobj In mCol
If tmpobj.CheckPoint(X, Y) Then
mvarnActCount = 1
nCurID = tmpobj.nID
If tmpobj.Locked Then tmpobj.IsActive = True
Set tmpact = tmpobj
Set tmpact.Handls = tmpobj.Handls
Set tmpact.ObjCtl = tmpobj.ObjCtl
Set tmpobj = Nothing
ChkPoint = True
Exit Function
End If
Next
Set tmpact = Nothing
Set tmpobj = Nothing
End Function
'StartMoveMore
Public Function StartMoveMore(X As Single, Y As Single, tmpact As ObjDraw) As Boolean
Dim tmpobj As ObjDraw
Set tmpact = Nothing
With mCol
If mvarnCurID = 0 Then Exit Function
If .Item("Obj" & mvarnCurID).Locked Then Exit Function
If .Item("Obj" & mvarnCurID).IsCurrent Then .Item("Obj" & mvarnCurID).IsCurrent = False
For Each tmpobj In mCol
If tmpobj.CheckPoint(X, Y) Then
If tmpobj.Locked Then
tmpobj.IsActive = True
Else
nCurID = tmpobj.nID
StartMoveMore = True
End If
Set tmpact = tmpobj
Set tmpact.Handls = tmpobj.Handls
Set tmpact.ObjCtl = tmpobj.ObjCtl
Exit For
End If
Next
End With
If Not StartMoveMore Then Exit Function
For Each tmpobj In ObjActs
If Not tmpobj.Locked Then
tmpobj.IsDraging = True
tmpobj.OnStartDrag X, Y
End If
Next
Set tmpobj = Nothing
End Function
'MovingMore
Public Sub MovingMore(X As Single, Y As Single, Optional bLim As Boolean = True, Optional LimX As Single = 0, Optional LimY As Single = 0)
Dim tmpobj As ObjDraw
If mvarnCurID = 0 Then Exit Sub
If mCol.Item("Obj" & mvarnCurID).Locked Then Exit Sub
For Each tmpobj In ObjActs
If Not tmpobj.Locked And tmpobj.ObjCtl.Visible Then
tmpobj.OnDraging X, Y, bLim, LimX, LimY
End If
Next
End Sub
'EndMoveMore
Public Sub EndMoveMore(X As Single, Y As Single)
Dim tmpobj As ObjDraw
If mvarnCurID = 0 Then Exit Sub
If mCol.Item("Obj" & mvarnCurID).Locked Then Exit Sub
For Each tmpobj In ObjActs
If Not tmpobj.Locked And tmpobj.ObjCtl.Visible Then
tmpobj.OnEndDrag X, Y
End If
Next
End Sub
'Add
Public Function Add(mvarObjDraw As ObjDraw, strkey As String) As ObjDraw
Dim tmpobj As New ObjDraw
With tmpobj
.ActHdID = mvarObjDraw.ActHdID
.eType = mvarObjDraw.eType
.EditFlag = mvarObjDraw.EditFlag
Set .Handls = mvarObjDraw.Handls
.HdCount = mvarObjDraw.HdCount
.IsActive = mvarObjDraw.IsActive
.IsCurrent = mvarObjDraw.IsCurrent
.IsDraging = mvarObjDraw.IsDraging
.IsSizing = mvarObjDraw.IsSizing
.EditFlag = mvarObjDraw.EditFlag
.Locked = mvarObjDraw.Locked
.nID = mvarObjDraw.nID 'ADDed
.IsFix = mvarObjDraw.IsFix
.Clip = mvarObjDraw.Clip
.DataType = mvarObjDraw.DataType
.Format = mvarObjDraw.Format
.IsScroll = mvarObjDraw.IsScroll
.Sumed = mvarObjDraw.Sumed
.SumedPage = mvarObjDraw.SumedPage
.Format = mvarObjDraw.Format
Set .ObjCtl = mvarObjDraw.ObjCtl
.OldX = mvarObjDraw.OldX
.OldY = mvarObjDraw.OldY
.BStyle = mvarObjDraw.BStyle
.BWidth = mvarObjDraw.BWidth
.FColor = mvarObjDraw.FColor
End With
mCol.Add tmpobj, strkey
Set tmpobj = Nothing
End Function
'Item
Public Property Get Item(vntIndexKey As Variant) As ObjDraw
Attribute Item.VB_UserMemId = 0
Set Item = mCol(vntIndexKey)
End Property
'Count
Public Property Get Count() As Long
Count = mCol.Count
End Property
'Clear
Public Sub Clear()
Dim i As Integer
Do While mCol.Count > 1
mCol.Remove 1
Loop
End Sub
'Remove
Public Sub Remove(vntIndexKey As Variant)
mCol.Remove vntIndexKey
End Sub
'NewEnum
Public Property Get NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Attribute NewEnum.VB_MemberFlags = "40"
Set NewEnum = mCol.[_NewEnum]
End Property
'Initialize
Private Sub Class_Initialize()
'创建类后创建集合
Set mCol = New Collection
End Sub
'Terminate
Private Sub Class_Terminate()
'类终止后破坏集合
Set mCol = Nothing
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -