CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮

  • 先上结果图,这个工具栏和按钮都是主程序自动生成的
    CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮_第1张图片

  • 在程序的运行当中,如果我们希望程序能够自己创建工具栏和按钮,可以在CDR启动事件中设置一个检测功能
    CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮_第2张图片

Private Sub GlobalMacroStorage_Start()
    Dim creatTool As Boolean: creatTool = True
    For Each Item In CorelDRAW.CommandBars
        If Item.Name = "theTestTool" Then
            creatTool = False
        End If
    Next
    If creatTool Then
        CorelDRAW.AddPluginCommand "GlobalMacros.A.theBtr", "theBtr", "theBtr"
        CorelDRAW.CommandBars.Add "theTestTool"
        With CorelDRAW.CommandBars.Item("theTestTool")
            .Visible = True
            .Controls.AddCustomButton cdrCmdCategoryMacros, "GlobalMacros.A.theBtr"
        End With
    End If
End Sub

Sub theBtr()
    MsgBox "测试成功"
End Sub
  • 我们可以看到上图中在GlobalMacroStorage中,可以在右侧的下拉列表当中看到非常多的响应事件,我们选取start就是在CDR主程序在启动完毕的时候会执行所有GlobalMacroStorage_Start函数,这个函数名是固定的,不能随便更改函数名,更改了就不会正常运行,这个函数会在启动之后运行一次,如果其它的GMS里面的主页面里也有这个函数,那么主程序也会去执行这个函数,所以这个函数在写完后要重启CDR才会生效
  • 这个自动生产的函数是Private 的,也就是说这个函数默认就是私有的.
  • 首先使用遍历for each 功能浏览一遍所有的工具栏的名称,如果没有我们这个工具栏同名则进行新建,工具栏取名theTestTool
  • 那我们讲一下这里头最关键的地方就是AddPluginCommand 这个函数了,这个函数有三个参数,一旦被建立之后就是无法修改的,所以我们必须要在这个时候就把这个三个参数确立好,头一个参数就是这个按钮的主调函数名称,这个名称如果填错了,那么我们按下了按钮程序是没有任何反应的,可以看到我填的是GlobalMacros.A.theBtr,为什么是这样子的名称呢,因为这个就是我们需要调用的函数的全路径,GlobalMacros来自于下图中的左上角文件的名称,这个是可以自己修改的,你改的是什么,这里就要相应地修改成什么
    CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮_第3张图片
  • A则来自于页面名称如下图
    CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮_第4张图片
  • 最后一个名称则是定位到具体的函数,所以这个名称GlobalMacros.A.theBtr的由来如下图所示
    CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮_第5张图片
  • 这样子就叫作函数绑定,那么两个这个函数绑定好了,那么程序还有重要的一步要做,那就是必须把这个按钮的模式设置成macros模式,与之相对应的则是plugin模式,这两种模式是有一定区别的,macros是VBA的宏模式,plugin模式则是自定义的模式,可以自己定义很多功能,并且会占用一些计算资源,我们这里用的就是VBA,那么就尽量用原本的macros模式, 因为这本来就是为VBA设计的
  • 所以在后面添加这个按钮的时候我们使用AddCustomButton函数,第一个参数就是使用macros模式 cdrCmdCategoryMacros 后面接上按钮的commandID也就是函数路径
  • 这些全都做好之后,我们可以开始写被调函数Sub theBtr()了,我们随便在里面写一个弹窗,写完后我们重启CDR,可以看到效果,我们成功了
    CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮_第6张图片
  • 附带说一下Visible = True就是让这个工具栏不要隐藏

你可能感兴趣的:(CDRX4插件,VBA)