CorelDRAWX4的VBA插件开发(四十四)建立类(1)汇总相似功能简化重复代码:一键建立设计外框加出血线和等分折页线
创始人
2024-05-29 14:07:28
  • 这次主要来浅讲一下"类"这个功能,先上一下要实现的功能,建立设计外框加出血线和等分折页线,先上图
    在这里插入图片描述

  • 那什么是类呢?类其实就是CLASS,用来封装成员参数和函数的,拆开来里面就是这些东西,那写起来其实也没有什么区别,那既然都是参数和函数,那类的出现有什么意义呢.那我想我还用一个比喻来说明

  • 如果把实现一个功能比喻成盖房子,那么参数DIM XX AS XX就相当于是材料,如沙,石,水,砼,钢,砖,工具等等, 那么函数subFunction就相当于是工人,如泥工木工钢工等等,那么想要盖好一座房子,就需要工人操作这些材料最后盖成一座房子

  • 如果说我们之前的工作是自己买材料和招募工人,那么今天所讲的类就相当于是建公司, 让类(公司)组织施工材料和工人. 有了公司之后,在需要房子的时候我们直接下指令呼唤类(公司), 然后下达第二条指令命令它盖房子,然后房子就盖好了.

  • 那么这中间有什么区吗,从结果上来看并没有区,结果上都实现了同一个功能,但是在实现的过程中有区别, 使用类的时候只需要面对类,否则就要一一面对每个个体, 就如同与公司合作的时候只要和公司领导结算, 否则就要和每个工人和材料都分别结算安排一次甚至很多次

  • 还有什么区别吗,也有的,自己招募的工人,在干完活以后不能直接辞退,还得养着他,自己买的工具也得占着一块地方一直留着备用. 但是使用公司的话若不需要时可以不养一人不留一地,只在用的时候把它们老总唤出来即可,因为类的创建是在堆区重新划了一块地给他,一般来说没有自动回收功能时是一直占着这块地的,但是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 SubPublic 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 WithEnd If
End SubPublic Sub drawZheYe()  '画折页线On Error GoTo cuowuIf ShuZhe Then    '如果是竖折时执行以下语句Dim shapeHeight As Double: shapeHeight = (theShape.SizeHeight - chuXue * 2) / zheYeDim myShapeY As Double: myShapeY = theShape.BottomY + chuXueFor I = 0 To zheYeCorelDRAW.ActiveDocument.MasterPage.GuidesLayer.CreateGuideAngle 0, (myShapeY + shapeHeight * I), 0#Next IElse		'如果是横折时执行以下语句Dim shapeWidth As Double: shapeWidth = (theShape.SizeWidth - chuXue * 2) / zheYeDim myShapeX As Double: myShapeX = theShape.LeftX + chuXueFor I = 0 To zheYeCorelDRAW.ActiveDocument.MasterPage.GuidesLayer.CreateGuideAngle (myShapeX + shapeWidth * I), 0, 90#Next IEnd Ifcuowu:Select Case Err.NumberCase 91:MsgBox "没有选中对象"End SelectEnd Sub
  • 我们可以看到所有类的成员前面都多了一个Public修饰符,那么这个Public 符号就是表示它可以从类外面进行访问,如果这个public改成private那么就变成私有, 从外面无法访问而只能从内部函数进行访问了,我们就不需要搞得这么复杂,全部用public就可以了, 前面的六行就是成员参数,我们可以看到后面的所有的函数中都使用了这些相同的参数, 而我们知道函数是无法控制函数外参数的生命周期的,况且同时有好几个函数都要访问,那么这种把多个外参和多个函数绑在一起使用的方法就取名为类

相关内容

热门资讯

脑机接口遇到音乐治疗,AI真能... 志愿者体验“央音一号”。受访者供图 在走进中央音乐学院“央音一号”实验室之前,中青报·中青网记者对脑...
伊朗警告:若遭攻击必将还击 据外媒报道,伊朗议长卡利巴夫11日说,如果美国对伊朗发动打击,伊朗将把以色列以及美国在中东地区的军事...
SpaceX再部署7500颗星... 来源:@央视财经微博 【#SpaceX再部署7500颗星...
商络电子:向不特定对象发行可转... 商络电子公告,公司于2026年1月9日收到深圳证券交易所出具的《关于受理南京商络电子股份有限公司向不...
王毅原定访问索马里计划推迟 中... 新京报讯 据中国驻索马里使馆消息,有媒体报道,中共中央政治局委员、外交部长王毅原定1月9日访问索马里...