⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objdraws.cls

📁 print打印功能.实现套打,请下载查看具体的功能介绍.
💻 CLS
📖 第 1 页 / 共 2 页
字号:
                                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 + -