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

  • Post author:
  • Post category:其他


  • 在上一节中已经建立好了类,那么这一节我们来调用它,先建立一个面板

    在这里插入图片描述
  • 然后修改框体名称

    在这里插入图片描述
  • 然后从左侧新建一些按钮并且以拼音为结尾进行命名

    在这里插入图片描述
Private Sub CheckBox2_zheYe_Click() '鼠标按下几折页单选时触发
    If Me.CheckBox2_zheYe Then
        Me.TextBox3_zheYeShu.Enabled = True   '让右侧方框有效
        Me.TextBox3_zheYeShu.BackColor = &HFFFFFF	'让右侧方框变白
    Else
        Me.TextBox3_zheYeShu.Enabled = False	'让右侧方框无效
        Me.TextBox3_zheYeShu.BackColor = &HCCCCCC	'让右侧方框变灰
    End If
End Sub

Private Sub UserForm_Initialize()	'面板初始化函数
    Me.OptionButton5_none.Value = True
    Me.TextBox3_zheYeShu.Enabled = False	'让右侧方框无效
    Me.TextBox3_zheYeShu.BackColor = &HCCCCCC	'让右侧方框变灰
End Sub

Private Sub CommandButton1_shengCheng_Click()  '按下生成按钮触发
    Dim a As uniformSize	'设变量a为类的类型
    Set a = New uniformSize	'创建uniformSize的对象
    If Me.TextBox1_kuan.Value <> "" Then
        a.kuan = Me.TextBox1_kuan.Value '给a中的kuan赋值
    Else
        MsgBox "未输入宽度"
        GoTo cuowu
    End If
    
    If Me.TextBox2_gao.Value <> "" Then
        a.gao = Me.TextBox2_gao.Value	'给a中的gao赋值
    Else
        MsgBox "未输入高度"
        GoTo cuowu
    End If
    
    '给出血赋值
    If Me.OptionButton5_none.Value Then
        a.chuXue = 0
    ElseIf Me.OptionButton1.Value Then
        a.chuXue = 1
    ElseIf Me.OptionButton3.Value Then
        a.chuXue = 2
    ElseIf Me.OptionButton4.Value Then
        a.chuXue = 3
    End If
    a.zheOrNot = Me.CheckBox2_zheYe  '检测是否要折页
    If a.zheOrNot Then
        a.zheYe = Me.TextBox3_zheYeShu.Value '给折页数赋值
    End If
    a.ShuZhe = Me.CheckBox3_shuZhe.Value	'检测是否要竖折
        
    Unload Me	'卸载并关闭这个面板,因为这个面板的作用已经达到,这里的Me用面板名称替代也可以
        
    On Error GoTo cuowu
    CorelDRAW.Optimization = True
    CorelDRAW.ActiveDocument.BeginCommandGroup
    CorelDRAW.ActiveDocument.Unit = cdrMillimeter
    
    a.drawRect	'执行画框函数
    a.drawGuideLine	'执行辅助线函数
    
    If a.zheOrNot Then	'如果勾选了折页
        a.drawZheYe	'执行折页线函数
    End If
	
	set a = nothing  '手动回收对象a
	
    
cuowu:
    
    CorelDRAW.ActiveDocument.EndCommandGroup
    CorelDRAW.Optimization = False
    CorelDRAW.Refresh
End Sub
  • 好了,调用的函数也已经弄好了,这里回收的时候用了

    set a = nothing

    ,直接回收这个对象,可以看到我们在这里的调用当中全部面向的是

    a

    对象,这就叫

    面向对象编程

    ,换句话说就是面向类(公司)编程,可以把各种功能全都做成各种类(公司),当然了,VB中的类不支持向构造函数中传参,所以也不存在重构函数,它的类只能是有一个固定功能,所以看到这里关于类的另一个好处也是显而易见的,那就是a只是我们创造的对象之一,那么我们还可以同时构造出相同的

    Set b = New uniformSize

    ,c,d…等等,所以有了类,我们就可以使用很短的时间创造出相似功能的对象,极大的提高了代码的重复利用率,同时也就是精简了代码行数



版权声明:本文为weixin_43716462原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。