-
这次主要来浅讲一下"类"这个功能,先上一下要实现的功能,建立设计外框加出血线和等分折页线,先上图
-
那什么是类呢?类其实就是CLASS,用来封装成员参数和函数的,拆开来里面就是这些东西,那写起来其实也没有什么区别,那既然都是参数和函数,那类的出现有什么意义呢.那我想我还用一个比喻来说明
-
如果把实现一个功能比喻成盖房子,那么参数
DIM XX AS XX
就相当于是材料,如沙,石,水,砼,钢,砖,工具等等, 那么函数sub
或Function
就相当于是工人,如泥工木工钢工等等,那么想要盖好一座房子,就需要工人操作这些材料最后盖成一座房子 -
如果说我们之前的工作是自己买材料和招募工人,那么今天所讲的类就相当于是建公司, 让类(公司)组织施工材料和工人. 有了公司之后,在需要房子的时候我们直接下指令呼唤类(公司), 然后下达第二条指令命令它盖房子,然后房子就盖好了.
-
那么这中间有什么区吗,从结果上来看并没有区,结果上都实现了同一个功能,但是在实现的过程中有区别, 使用类的时候只需要面对类,否则就要一一面对每个个体, 就如同与公司合作的时候只要和公司领导结算, 否则就要和每个工人和材料都分别结算安排一次甚至很多次
-
还有什么区别吗,也有的,自己招募的工人,在干完活以后不能直接辞退,还得养着他,自己买的工具也得占着一块地方一直留着备用. 但是使用公司的话若不需要时可以不养一人不留一地,只在用的时候把它们老总唤出来即可,因为类的创建是在堆区重新划了一块地给他,一般来说没有自动回收功能时是一直占着这块地的,但是VB是一种解释形语言会自动回收类
-
不管怎么说类都是一种更高级更省心更整洁的用法,在不需要类的时候类并没有出生,没有占用空间,在需要的时候一次生出有所有的要素的对象,在使用完了之后一次性全部遣散,所以内部的要素保持了同样的寿命,有机地统一成整体
-
下面我们开始创建类,先在空白处右键插入类模块
-
然后修改类的名称
-
接下来上类中的代码
Public gao, kuan As Double '设置高和宽为双精度小数
Public chuXue As Integer '出血值为整数
Public zheOrNot As Boolean '是否要折页
Public zheYe As Integer '折页的页数
Public ShuZhe As Boolean '是否要竖折
Public theShape As Shape '设置一个临时的形状
Public Sub drawRect() '画框
CorelDRAW.ActivePage.SizeWidth = kuan + chuXue + chuXue '改变画面宽
CorelDRAW.ActivePage.SizeHeight = gao + chuXue + chuXue '改变画面高
Set theShape = CorelDRAW.ActiveLayer.CreateRectangle2(CorelDRAW.ActivePage.LeftX, CorelDRAW.ActivePage.BottomY, kuan + chuXue + chuXue, gao + chuXue + chuXue) '画个方框
End Sub
Public Sub drawGuideLine() '设置出血辅助线
If chuXue > 0 Then '只在出血值大于0时才执行
With theShape '使用with语句省略.前的对象
ActiveDocument.MasterPage.GuidesLayer.CreateGuideAngle 0, .TopY - chuXue, 0#
ActiveDocument.MasterPage.GuidesLayer.CreateGuideAngle 0, .BottomY + chuXue, 0#
ActiveDocument.MasterPage.GuidesLayer.CreateGuideAngle .LeftX + chuXue, 0, 90#
ActiveDocument.MasterPage.GuidesLayer.CreateGuideAngle .RightX - chuXue, 0, 90#
End With
End If
End Sub
Public Sub drawZheYe() '画折页线
On Error GoTo cuowu
If ShuZhe Then '如果是竖折时执行以下语句
Dim shapeHeight As Double: shapeHeight = (theShape.SizeHeight - chuXue * 2) / zheYe
Dim myShapeY As Double: myShapeY = theShape.BottomY + chuXue
For I = 0 To zheYe
CorelDRAW.ActiveDocument.MasterPage.GuidesLayer.CreateGuideAngle 0, (myShapeY + shapeHeight * I), 0#
Next I
Else '如果是横折时执行以下语句
Dim shapeWidth As Double: shapeWidth = (theShape.SizeWidth - chuXue * 2) / zheYe
Dim myShapeX As Double: myShapeX = theShape.LeftX + chuXue
For I = 0 To zheYe
CorelDRAW.ActiveDocument.MasterPage.GuidesLayer.CreateGuideAngle (myShapeX + shapeWidth * I), 0, 90#
Next I
End If
cuowu:
Select Case Err.Number
Case 91:
MsgBox "没有选中对象"
End Select
End Sub
- 我们可以看到所有类的成员前面都多了一个
Public
修饰符,那么这个Public 符号就是表示它可以从类外面进行访问,如果这个public改成private那么就变成私有, 从外面无法访问而只能从内部函数进行访问了,我们就不需要搞得这么复杂,全部用public就可以了, 前面的六行就是成员参数,我们可以看到后面的所有的函数中都使用了这些相同的参数, 而我们知道函数是无法控制函数外参数的生命周期的,况且同时有好几个函数都要访问,那么这种把多个外参和多个函数绑在一起使用的方法就取名为类