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

📄 8-5o.cls

📁 vb6.0编程实例详解,很详细的介绍,对学习VB有帮助
💻 CLS
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "DrawObject"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Attribute VB_Ext_KEY = "Collection" ,"DrawLine"
Attribute VB_Ext_KEY = "Member0" ,"DrawLine"
Option Explicit
'局部变量,保存集合
Private mCol As Collection

Public Function Add(DrawObject As Object, Optional sKey As String) As Object
'向集合中增加图元
    If Len(sKey) = 0 Then
        mCol.Add DrawObject
    Else
        mCol.Add DrawObject, sKey
    End If

    '返回已创建的对象
    Set Add = DrawObject
End Function

Public Property Get Item(vntIndexKey As Variant) As DrawLine
Attribute Item.VB_UserMemId = 0
    '引用集合中的一个元素时使用。
    'vntIndexKey 包含集合的索引或关键字,
    '这是为什么要声明为 Variant 的原因
    '语法:Set foo = x.Item(xyz) or Set foo = x.Item(5)
  Set Item = mCol(vntIndexKey)
End Property

Public Property Get Count() As Long
    '检索集合中的元素数时使用。语法:Debug.Print x.Count
    Count = mCol.Count
End Property


Public Sub Remove(vntIndex As Variant)
    '删除集合中的元素时使用。
    'vntIndex 指定需要删除的元素
    '语法:x.Remove(xyz)
    Dim i As Integer
    
    mCol.Remove vntIndex '在集合中删除指定图元
End Sub

Public Property Get NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Attribute NewEnum.VB_MemberFlags = "40"
    '本属性允许用 For...Each 语法枚举该集合。
    Set NewEnum = mCol.[_NewEnum]
End Property

Private Sub Class_Initialize()
    '创建类后创建集合
    Set mCol = New Collection
End Sub

Private Sub Class_Terminate()
    '类终止后破坏集合
    Set mCol = Nothing
End Sub

Public Function IsObject(x As Long, y As Long, mOb As Object, mStyle As Long) As Long
'判断输入点(x,y)是否在图元上
'该函数返回指定图元在集合中的位置
    Dim mObject As Object
    Dim sta As Long
    Dim i As Long
    
    For i = 1 To mCol.Count
        sta = mCol(i).IsCurrent(x, y) '判断指定点位置
        If sta > 0 Then
        '指定点指向当前线段
            Set mOb = mCol(i)
            mStyle = sta
            IsObject = i
            Exit Function '退出函数
        End If
    Next i
    Set mOb = Nothing '无图元
    mStyle = 0
    IsObject = 0
End Function

Public Sub PrintObject(Drawing As Object)
'打印全部图元
    Dim mObject As Object
    
    For Each mObject In mCol
    '遍历集合,绘制全部图元
        Call mObject.PrintObject(Drawing)
    Next
End Sub

Public Sub Draw(Drawing As Object)
'绘制全部图元
    Dim mObject As Object
    
    Drawing.Cls '清屏
    For Each mObject In mCol
    '遍历集合,绘制全部图元
        Call mObject.Draw(Drawing)
    Next
End Sub

Public Sub Save(File As Integer)
'保存图元数据到文件中
    Dim mObject As Object
    
    For Each mObject In mCol
        Call mObject.Save(File)
    Next
End Sub

Public Sub Load(File As Integer)
'读文件数据
    Dim mObject As Object
    Dim i As Integer
    
    Do While Not EOF(File)
        Input #File, i '判断类类型
        Select Case i
            Case 1 '直线
                Set mObject = New DrawLine
                mObject.Load File
                mCol.Add mObject
                Set mObject = Nothing
            Case 2 '矩形
                Set mObject = New DrawReg
                mObject.Load File
                mCol.Add mObject
                Set mObject = Nothing
        End Select
    Loop
End Sub

⌨️ 快捷键说明

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