CorelDRAWX4的VBA插件开发(四十四)建立类(1)汇总相似功能简化重复代码:一键建立设计外框加出血线和等分折页线

news2024/11/25 14:41:02
  • 这次主要来浅讲一下"类"这个功能,先上一下要实现的功能,建立设计外框加出血线和等分折页线,先上图
    在这里插入图片描述

  • 那什么是类呢?类其实就是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 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就可以了, 前面的六行就是成员参数,我们可以看到后面的所有的函数中都使用了这些相同的参数, 而我们知道函数是无法控制函数外参数的生命周期的,况且同时有好几个函数都要访问,那么这种把多个外参和多个函数绑在一起使用的方法就取名为类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聚观早报 | 京东百亿补贴今日上线;微软推出全能型人工智能模型

今日要闻:京东“百亿补贴”今日全面上线;小鹏回应人脸识别需对车头半跪;微软推出全能型人工智能模型;雷军建议构建完善汽车数据安全管理体系;苹果、Meta已向国内Micro LED企业下单京东“百亿补贴”今日全面上线 3 月 6…

创建springboot项目文件报红

目录 一、遇到问题 二、出现这个问题的原因 三、解决办法 三种方法 四、操作步骤 一、遇到问题 创建springboot项目的时候,会发现一些重要文件都变成红色了,但是不影响程序的运行。只是看起来会有点不舒服。 二、出现这个问题的原因 因为这个spr…

初识虚拟DOM渲染器

初识虚拟DOM渲染器什么是虚拟DOM什么是渲染器渲染器的实现组件是什么什么是虚拟DOM 首先简单说一下什么是虚拟DOM&#xff0c;虚拟DOM就是一个描述真实DOM的JS对象 例如&#xff1a; 真实的DOM元素 <div onClick"alert(click me)">click me</div>可以…

12 结构:如何系统设计框架的整体目录?

到现在&#xff0c;我们已经将 Gin 集成到框架 hade 中&#xff0c;同时又引入了服务容器和服务提供者&#xff0c;明确框架的核心思想是面向服务编程&#xff0c;一切皆服务&#xff0c;所有服务都是基于协议。后续也会以服务的形式&#xff0c;封装一个个的服务&#xff0c;让…

ESP-C2系列模组开发板简介

C2是一个芯片采用4毫米x 4毫米封装&#xff0c;与272 kB内存。它运行框架&#xff0c;例如ESP-Jumpstart和ESP造雨者&#xff0c;同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统&#xff0c;受到了全球用户的信赖。它由支持Espressif以及所有…

空间复杂度与顺序表的具体实现操作(1)

最近更新的少&#xff0c;主要是因为参加了ACM竞赛空间复杂度空间复杂度也是一个数学表达式&#xff0c;是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用了多少bytes的空间&#xff0c;因为这个也没太大意义&#xff0c;所以空间复杂度算的是变量…

项目使用windows-root证书

项目使用windows-root证书 将证书导入到本地计算机 方式1&#xff1a;使用windows-root证书配置流程(计算机本地) 输入命令(mmc)&#xff0c;进入控制台管理窗口 点击“文件”》“添加或删除管理单元”&#xff0c;进入如下界面 双击证书&#xff0c;选择“计算机账户”…

Swagger生成接口在线文档

OpenAPI规范&#xff08;OpenAPI Specification 简称OAS&#xff09;是Linux基金会的一个项目&#xff0c;试图通过定义一种用来描述API格式或API定义的语言&#xff0c;来规范RESTful服务开发过程&#xff0c;目前版本是V3.0&#xff0c;并且已经发布并开源在github上。&#…

C++核心编程<类和对象>(4)

C核心编程<类和对象>4.类和对象4.1封装4.1.1封装的意义封装的意义1封装的意义24.1.2struct和class区别4.1.3成员属性设置为私有4.2对象的初始化和清理4.2.1构造函数和析构函数1.1构造函数语法&#xff1a;类名(){}1.2析构函数语法&#xff1a; ~类名(){}4.2.2构造函数的分…

【JUC2022】第七章 AQS、ReentrantReadWriteLock 和 StampedLock

【JUC2022】第七章 AQS 文章目录【JUC2022】第七章 AQS一、AQS1.概述2.同步器3.抽象的4.队列式二、ReentrantReadWriteLock1.概述2.案例3.存在的问题三、StampedLock1.概述2.案例3.存在的问题一、AQS 1.概述 AQS(AbstractQueueSynchronizer&#xff0c;抽象的队列式同步器)&am…

tesseract -图像识别

下载链接&#xff1a;https://digi.bib.uni-mannheim.de/tesseract/如下选择最新的版本&#xff0c;这里我选择tesseract-ocr-w64-setup-5.3.0.20221222.exe有如下python模块操作tesseractpyocr 国内源&#xff1a;pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ py…

ThreadLocal 学习常见问题

ThreadLocal 这个此类提供线程局部变量。这些变量不同于通常的对应变量&#xff0c;因为每个访问一个变量的线程(通过 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是希望将状态与线程(例如&#xff0c;用户 ID 或事务 ID)关联的类中的私有静态字段。使…

vue router elementui template CDN模式实现多个页面跳转

文章目录前言一、elementui Tabs标签页和NavMenu 导航菜单是什么&#xff1f;二、使用方式1.代码如下2.页面效果总结前言 写上一篇bloghttps://blog.csdn.net/jianyuwuyi/article/details/128959803的时候因为整个前端都写在一个index.html页面里&#xff0c;为了写更少的代码…

CENTO OS上的网络安全工具(十九)ClickHouse集群部署

一、VMware上集群部署ClickHouse &#xff08;一&#xff09;网络设置 1. 通过修改文件设置网络参数 &#xff08;1&#xff09;CentOS 在CENTOS上的网络安全工具&#xff08;十六&#xff09;容器特色的Linux操作_lhyzws的博客-CSDN博客中我们提到过可以使用更改配置文件的方式…

推荐 7 个 Vue.js 插件,也许你的项目用的上(五)

当我们可以通过使用库轻松实现相同的结果时&#xff0c;为什么还要编写自定义功能&#xff1f;开发人员最好的朋友和救星就是这些第三方库。我相信一个好的项目会利用一些可用的最佳库。Vue.js 是创建用户界面的最佳 JavaScript 框架之一。这篇文章是关于 Vue.js 的优秀库系列的…

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表…

4-3 Linux启动流程

文章目录前言经典启动流程1 按下电源2 开机自检(BIOS)3 MBR引导4 GRUB菜单5 加载内核6 运行init进程7 读取/etc/inittab8 读取/etc/rc.sysinit初始化系统9 运行/etc/rc.d/rcN.d/脚本10 /etc/rc.local11 登录页面logincentos7与centos6前言 Linux系统的启动过程并不是大家想象中…

防静电监控仪可以检测现场设备是否和实际大地接触

随着电子产品集成化度越来越高&#xff0c;对于电子产品装配来说&#xff0c;静电的危害严重影响到产品的质量、成品率和可靠性, 必须对用于电子产品装配的净化间进行系统防静电措施&#xff0c;将生产过程中的静电危害程度降至最低。近年来电子企业对ESD的危害的深入认识&…

代码随想录刷题-数组-二分查找

文章目录写在前面原理习题题目1思路和代码题目-2写在前面 这个专栏是记录我刷代码随想录过程中的随想和总结。每一小节都是根据自己的理解撰写的&#xff0c;文章比较短&#xff0c;主要是为了记录和督促自己。刷完一章后&#xff0c;我会再单独整理一篇文章来总结和分享。 本…

【JVM 由浅入深】JVM入门

JVM入门1. 概述 今天我们对JVM 进行入门讲解&#xff0c;让我们了解下什么是JVM&#xff0c;是专门为Java服务的一款产品吗&#xff1f;&#xff1f;&#xff1f; 好了废话不多说了&#xff0c;让我们开始吧 2. 详解 2.1 Java 是跨平台的 为什么是Java是跨平台的呢&#xff0c…