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

📄 clsline.cls

📁 办公流程定制
💻 CLS
📖 第 1 页 / 共 4 页
字号:
        Next i
        mvarBeginPoint = mvarMidPoint(1)
        mvarEndPoint = mvarMidPoint(mvarMidPointCount)
        DrawArrow
    End If
    i = (mvarMidPointCount + 1) / 2
    k = Len(mvarLineName)
    strLong = k
    For j = 1 To k
        If Asc(Mid(mvarLineName, j, 1)) < 0 Then
            strLong = strLong + 1
        End If
    Next j
    TextOut mvarDrawFrm.hdc, mvarMidPoint(i).X / 15 - strLong * 3, mvarMidPoint(i).Y / 15 - 5, mvarLineName, strLong
End Sub
Public Sub MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i, j, k As Integer
Dim tmpPoint As POINTAPI
    mvarDrawFrm.DrawMode = 2
    mvarDrawFrm.DrawWidth = 1
    mvarDrawFrm.DrawStyle = 1

    For i = 2 To mvarMidPointCount
        mvarDrawFrm.Line (mvarMidPoint(i).X, mvarMidPoint(i).Y)-(mvarMidPoint(i - 1).X, mvarMidPoint(i - 1).Y)
    Next i
    If mvarBeginRect = 0 Then
    Else
        i = mvarBeginRect
        Call mvarRect(i).ExistState(-100, -1000)
    End If
    If Button = 100 Then Exit Sub
    If Button = 200 Then
        DrawPoint
        mvarSetActiveFlag = True
        Exit Sub
    End If
    mvarDrawFrm.DrawMode = 2
    mvarDrawFrm.DrawWidth = 1
    mvarDrawFrm.DrawStyle = 1
    For i = 1 To mvarMidPointCount
        mvarMidPoint(i).X = mvarMidPoint(i).X + X
        mvarMidPoint(i).Y = mvarMidPoint(i).Y + Y
        If i > 1 Then
        mvarDrawFrm.Line (mvarMidPoint(i).X, mvarMidPoint(i).Y)-(mvarMidPoint(i - 1).X, mvarMidPoint(i - 1).Y)
        End If
    Next i
    '起点在那个节点上
    k = 0
    For i = 1 To mRectCount
        tmpPoint = mvarMidPoint(1)
        j = mvarRect(i).LinkPointState(CSng(tmpPoint.X), CSng(tmpPoint.Y))
        If j = 0 Then
        ElseIf j = 1 Then '上中点
            Call mvarRect(i).ExistState(CSng(mvarRect(i).EndPoint.X), CSng(mvarRect(i).EndPoint.Y))
            k = i
            Exit For
        ElseIf j = 2 Then '下中点
            Call mvarRect(i).ExistState(CSng(mvarRect(i).EndPoint.X), CSng(mvarRect(i).EndPoint.Y))
            k = i
            Exit For
        ElseIf j = 3 Then '左中点
            Call mvarRect(i).ExistState(CSng(mvarRect(i).EndPoint.X), CSng(mvarRect(i).EndPoint.Y))
            k = i
            Exit For
        ElseIf j = 4 Then '右中点
            Call mvarRect(i).ExistState(CSng(mvarRect(i).EndPoint.X), CSng(mvarRect(i).EndPoint.Y))
            k = i
            Exit For
        End If
    Next i
'    mvarBeginRect = k
'    If j = 0 Then
'        BeginRectPlace = ""
'    ElseIf j = 1 Then
'        BeginRectPlace = "上"
'    ElseIf j = 2 Then
'        BeginRectPlace = "下"
'    ElseIf j = 3 Then
'        BeginRectPlace = "右"
'    ElseIf j = 4 Then
'        BeginRectPlace = "左"
'    End If
End Sub
Public Sub MoveLine(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Integer
    mvarDrawFrm.DrawMode = 2
    mvarDrawFrm.DrawWidth = 1
    mvarDrawFrm.DrawStyle = 1
    For i = 2 To mvarMidPointCount
        mvarDrawFrm.Line (mvarMidPoint(i).X, mvarMidPoint(i).Y)-(mvarMidPoint(i - 1).X, mvarMidPoint(i - 1).Y)
    Next i
    If Button = 100 Then Exit Sub
    If Button = 200 Then
        DrawPoint
        mvarSetActiveFlag = True
        Exit Sub
    End If
    If Shift > mvarMidPointCount Then Exit Sub
    If Shift = 1 Then '移动起点
        If Button = 300 Then
            If mvarMidPoint(Shift).X = mvarMidPoint(Shift + 1).X Then
                mvarBeginPoint.X = mvarBeginPoint.X + X
                mvarBeginPoint.Y = mvarBeginPoint.Y + Y
                ReDraw 0
            Else
                mvarBeginPoint.X = mvarBeginPoint.X + X
                mvarBeginPoint.Y = mvarBeginPoint.Y + Y
                ReDraw 50
            End If
        Else
            If mvarMidPoint(Shift).X = mvarMidPoint(Shift + 1).X Then
                mvarMidPoint(Shift).X = mvarMidPoint(Shift).X + X
                mvarMidPoint(Shift).Y = mvarMidPoint(Shift).Y + Y
                mvarMidPoint(Shift + 1).X = mvarMidPoint(Shift + 1).X + X
                mvarMidPoint(Shift + 1).Y = mvarMidPoint(Shift + 1).Y + Y / 2
                mvarMidPoint(Shift + 2).X = mvarMidPoint(Shift + 2).X + X
                If Shift + 2 < mvarMidPointCount Then
                    mvarMidPoint(Shift + 3).X = mvarMidPoint(Shift + 3).X + X / 2
                End If
            Else
                mvarMidPoint(Shift).Y = mvarMidPoint(Shift).Y + Y
                mvarMidPoint(Shift).X = mvarMidPoint(Shift).X + X
                mvarMidPoint(Shift + 1).Y = mvarMidPoint(Shift + 1).Y + Y
                mvarMidPoint(Shift + 1).X = mvarMidPoint(Shift + 1).X + X / 2
                mvarMidPoint(Shift + 2).Y = mvarMidPoint(Shift + 2).Y + Y
    
                If Shift + 2 < mvarMidPointCount Then
                    mvarMidPoint(Shift + 3).Y = mvarMidPoint(Shift + 3).Y + Y / 2
                End If
            End If
        End If
    ElseIf Shift = mvarMidPointCount Then '移动终点
        If Button = 300 Then
            If mvarMidPoint(Shift).X = mvarMidPoint(Shift - 1).X Then
                mvarEndPoint.X = mvarEndPoint.X + X
                mvarEndPoint.Y = mvarEndPoint.Y + Y
                ReDraw 0
            Else
                mvarEndPoint.X = mvarEndPoint.X + X
                mvarEndPoint.Y = mvarEndPoint.Y + Y
                ReDraw 50
            End If
        Else
            If mvarMidPoint(Shift).X = mvarMidPoint(Shift - 1).X Then
                mvarMidPoint(Shift).X = mvarMidPoint(Shift).X + X
                mvarMidPoint(Shift).Y = mvarMidPoint(Shift).Y + Y
                mvarMidPoint(Shift - 1).X = mvarMidPoint(Shift - 1).X + X
                mvarMidPoint(Shift - 1).Y = mvarMidPoint(Shift - 1).Y + Y / 2
                mvarMidPoint(Shift - 2).X = mvarMidPoint(Shift - 2).X + X
                If Shift - 2 > 1 Then
                    mvarMidPoint(Shift - 3).X = mvarMidPoint(Shift - 3).X + X / 2
                End If
            Else
                mvarMidPoint(Shift).Y = mvarMidPoint(Shift).Y + Y
                mvarMidPoint(Shift).X = mvarMidPoint(Shift).X + X
                mvarMidPoint(Shift - 1).Y = mvarMidPoint(Shift - 1).Y + Y
                mvarMidPoint(Shift - 1).X = mvarMidPoint(Shift - 1).X + X / 2
                mvarMidPoint(Shift - 2).Y = mvarMidPoint(Shift - 2).Y + Y
    
                If Shift - 2 > 1 Then
                    mvarMidPoint(Shift - 3).Y = mvarMidPoint(Shift - 3).Y + Y / 2
                End If
            End If
        End If
    ElseIf (Shift Mod 2) = 0 Then '移动线间的点
        If mvarMidPointCount > 3 Then
        
        If mvarMidPoint(Shift).X = mvarMidPoint(Shift - 1).X Then
            mvarMidPoint(Shift - 1).X = mvarMidPoint(Shift).X + X
            mvarMidPoint(Shift + 1).X = mvarMidPoint(Shift).X + X
            mvarMidPoint(Shift).X = mvarMidPoint(Shift).X + X
            If Shift - 1 > 0 Then
                mvarMidPoint(Shift - 2).X = mvarMidPoint(Shift - 2).X + X / 2
            End If
            If Shift + 1 < mvarMidPointCount Then
                mvarMidPoint(Shift + 2).X = mvarMidPoint(Shift + 2).X + X / 2
            End If
        Else
            mvarMidPoint(Shift - 1).Y = mvarMidPoint(Shift).Y + Y
            mvarMidPoint(Shift + 1).Y = mvarMidPoint(Shift).Y + Y
            mvarMidPoint(Shift).Y = mvarMidPoint(Shift).Y + Y
            If Shift - 1 > 1 Then
                mvarMidPoint(Shift - 2).Y = mvarMidPoint(Shift - 2).Y + Y / 2
            End If
            If Shift + 1 < mvarMidPointCount Then
                mvarMidPoint(Shift + 2).Y = mvarMidPoint(Shift + 2).Y + Y / 2
            End If
        End If
        End If
    Else   '移动线端点
        If mvarMidPoint(Shift).X = mvarMidPoint(Shift - 1).X Then
            mvarMidPoint(Shift - 1).X = mvarMidPoint(Shift - 1).X + X
            mvarMidPoint(Shift - 1).Y = mvarMidPoint(Shift - 1).Y + Y / 2
            mvarMidPoint(Shift - 2).X = mvarMidPoint(Shift - 2).X + X
            If (Shift - 2) > 1 Then
                mvarMidPoint(Shift - 3).X = mvarMidPoint(Shift - 3).X + X / 2
            End If
        Else
            mvarMidPoint(Shift - 1).Y = mvarMidPoint(Shift - 1).Y + Y
            mvarMidPoint(Shift - 1).X = mvarMidPoint(Shift - 1).X + X / 2
            mvarMidPoint(Shift - 2).Y = mvarMidPoint(Shift - 2).Y + Y
            If (Shift - 2) > 1 Then
                mvarMidPoint(Shift - 3).Y = mvarMidPoint(Shift - 3).Y + Y / 2
            End If
        End If
        If mvarMidPoint(Shift).X = mvarMidPoint(Shift + 1).X Then
            mvarMidPoint(Shift + 1).X = mvarMidPoint(Shift + 1).X + X
            mvarMidPoint(Shift + 1).Y = mvarMidPoint(Shift + 1).Y + Y / 2
            mvarMidPoint(Shift + 2).X = mvarMidPoint(Shift + 2).X + X
            If (Shift + 2) < mvarMidPointCount Then
                mvarMidPoint(Shift + 3).X = mvarMidPoint(Shift + 3).X + X / 2
            End If
        Else
            mvarMidPoint(Shift + 1).Y = mvarMidPoint(Shift + 1).Y + Y
            mvarMidPoint(Shift + 1).X = mvarMidPoint(Shift + 1).X + X / 2
            mvarMidPoint(Shift + 2).Y = mvarMidPoint(Shift + 2).Y + Y
            If (Shift + 2) < mvarMidPointCount Then
                mvarMidPoint(Shift + 3).Y = mvarMidPoint(Shift + 3).Y + Y / 2
            End If
        End If
        mvarMidPoint(Shift).X = mvarMidPoint(Shift).X + X
        mvarMidPoint(Shift).Y = mvarMidPoint(Shift).Y + Y
    End If
    
    For i = 2 To mvarMidPointCount
        mvarDrawFrm.Line (mvarMidPoint(i).X, mvarMidPoint(i).Y)-(mvarMidPoint(i - 1).X, mvarMidPoint(i - 1).Y)
    Next i
End Sub

Private Sub MergePoint()
Dim i, j As Integer
Dim MidPoint As POINTAPI
    On Error Resume Next
    If mvarMidPointCount = 3 Then Exit Sub
    If (mvarMidPoint(1).X < mvarMidPoint(3).X + 10 And mvarMidPoint(1).X > mvarMidPoint(3).X - 10) And _
        (mvarMidPoint(1).Y < mvarMidPoint(3).Y + 10 And mvarMidPoint(1).Y > mvarMidPoint(3).Y - 10) Then '合并起点
        For i = 1 To mvarMidPointCount - 2
            mvarMidPoint(i) = mvarMidPoint(i + 2)
        Next i
        mvarMidPointCount = mvarMidPointCount - 2
        Call MergePoint
        Exit Sub
    End If
    If (mvarMidPoint(mvarMidPointCount).X < (mvarMidPoint(mvarMidPointCount - 2).X + 10)) And _
        (mvarMidPoint(mvarMidPointCount).X > (mvarMidPoint(mvarMidPointCount - 2).X - 10)) And _
        (mvarMidPoint(mvarMidPointCount).Y < (mvarMidPoint(mvarMidPointCount - 2).Y + 10)) And _
        (mvarMidPoint(mvarMidPointCount).Y > (mvarMidPoint(mvarMidPointCount - 2).Y - 10)) Then '合并终点
        mvarMidPointCount = mvarMidPointCount - 2
        Call MergePoint
        Exit Sub
    End If
    For i = 5 To mvarMidPointCount - 2 Step 2
        If (mvarMidPoint(i).X < (mvarMidPoint(i - 2).X + 10)) And _
            (mvarMidPoint(i).X > (mvarMidPoint(i - 2).X - 10)) And _
            (mvarMidPoint(i).Y < (mvarMidPoint(i - 2).Y + 10)) And _
            (mvarMidPoint(i).Y > (mvarMidPoint(i - 2).Y - 10)) Then '合并终点
            mvarMidPointCount = mvarMidPointCount - 4
            If (mvarMidPoint(i + 2).X < mvarMidPoint(i - 4).X + 10) And _
                (mvarMidPoint(i + 2).X > mvarMidPoint(i - 4).X - 10) Then
                mvarMidPoint(i + 2).X = mvarMidPoint(i - 4).X
            Else
                mvarMidPoint(i + 2).Y = mvarMidPoint(i - 4).Y
            End If
            MidPoint.X = (mvarMidPoint(i + 2).X + mvarMidPoint(i - 4).X) / 2
            MidPoint.Y = (mvarMidPoint(i + 2).Y + mvarMidPoint(i - 4).Y) / 2
            mvarMidPoint(i - 3) = MidPoint
            For j = i - 2 To mvarMidPointCount
                mvarMidPoint(j) = mvarMidPoint(j + 4)
            Next j
            Call MergePoint
            Exit Sub
        End If
    Next i
    '处理开始节点
    If mvarBeginRect > 0 Then
        If mvarBeginRectPlace = "上" Then
            If mvarMidPoint(1).X = mvarMidPoint(2).X Then
                mvarMidPoint(1).X = mvarRect(mvarBeginRect).EndPoint.X
                mvarMidPoint(2).X = mvarMidPoint(1).X
                mvarMidPoint(3).X = mvarMidPoint(1).X
                mvarMidPoint(1).Y = mvarRect(mvarBeginRect).EndPoint.Y - 400
                mvarMidPoint(2).Y = (mvarMidPoint(1).Y + mvarMidPoint(3).Y) / 2
                If mvarMidPointCount > 3 Then
                    mvarMidPoint(4).X = (mvarMidPoint(3).X + mvarMidPoint(5).X) / 2
                End If
            Else
                mvarMidPoint(1).X = mvarRect(mvarBeginRect).EndPoint.X
                mvarMidPoint(1).Y = mvarRect(mvarBeginRect).EndPoint.Y - 400
                mvarMidPoint(2).Y = mvarMidPoint(1).Y
                mvarMidPoint(3).Y = mvarMidPoint(1).Y
                mvarMidPoint(2).X = (mvarMidPoint(1).X + mvarMidPoint(3).X) / 2
                If mvarMidPointCount > 3 Then
                    mvarMidPoint(4).Y = (mvarMidPoint(3).Y + mvarMidPoint(5).Y) / 2
                End If
            End If
        ElseIf mvarBeginRectPlace = "下" Then
            If mvarMidPoint(1).X = mvarMidPoint(2).X Then
                mvarMidPoint(1).X = mvarRect(mvarBeginRect).EndPoint.X
                mvarMidPoint(2).X = mvarMidPoint(1).X
                mvarMidPoint(3).X = mvarMidPoint(1).X
                mvarMidPoint(1).Y = mvarRect(mvarBeginRect).EndPoint.Y + 400
                mvarMidPoint(2).Y = (mvarMidPoint(1).Y + mvarMidPoint(3).Y) / 2
                If mvarMidPointCount > 3 Then
                    mvarMidPoint(4).X = (mvarMidPoint(3).X + mvarMidPoint(5).X) / 2
                End If
            Else
                mvarMidPoint(1).X = mvarRect(mvarBeginRect).EndPoint.X
                mvarMidPoint(1).Y = mvarRect(mvarBeginRect).EndPoint.Y + 400
                mvarMidPoint(2).Y = mvarMidPoint(1).Y
                mvarMidPoint(3).Y = mvarMidPoint(1).Y
                mvarMidPoint(2).X = (mvarMidPoint(1).X + mvarMidPoint(3).X) / 2
                If mvarMidPointCount > 3 Then
                    mvarMidPoint(4).Y = (mvarMidPoint(3).Y + mvarMidPoint(5).Y) / 2
                End If
            End If
        ElseIf mvarBeginRectPlace = "右" Then
            If mvarMidPoint(1).X = mvarMidPoint(2).X Then
                mvarMidPoint(1).Y = mvarRect(mvarBeginRect).EndPoint.Y
                mvarMidPoint(1).X = mvarRect(mvarBeginRect).EndPoint.X - 300
                mvarMidPoint(2).X = mvarMidPoint(1).X
                mvarMidPoint(3).X = mvarMidPoint(1).X
                mvarMidPoint(2).Y = (mvarMidPoint(1).Y + mvarMidPoint(3).Y) / 2
                If mvarMidPointCount > 3 Then
                    mvarMidPoint(4).X = (mvarMidPoint(3).X + mvarMidPoint(5).X) / 2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -