• 有时候我们的复合框内的内容是有更多的需求,但是我们又不想另开一个窗口,怎么办呢,我们直接使用复合框内容替换就行啦
  • 先上效果图:
  • 先在面第板上拉出一个框架, 再在里面添加上三个选项按钮, 添加好之后这三个选项按钮就自动归类了.
  • 下面上代码,先把截图发一下
  • 这里只把我修改过的代码截图贴出来



  • 然后代码再上一份全部的
Private danXuanString, duoXuanString, qieHuanString As String
Dim leimu As String
Dim TextBox1_moRen_Write As Integer
Dim leimu_Write  As IntegerPrivate Sub CheckBox1_duoXuan1_Click()refreshJieGuo
End SubPrivate Sub CheckBox2_duoXuan2_Click()refreshJieGuo
End SubPrivate Sub CheckBox3_duoXuan3_Click()refreshJieGuo
End SubPrivate Sub ListBox1_danJi_Click()refreshJieGuo
End SubPrivate Sub OptionButton1_Click()refreshJieGuo
End SubPrivate Sub OptionButton2_Click()refreshJieGuo
End SubPrivate Sub OptionButton3_Click()refreshJieGuo
End SubPrivate Sub OptionButton4_leiMuA_Click()leimu_Write = 1Me.ListBox1_danJi.ClearleiMuPanDing
End SubPrivate Sub OptionButton5_leiMuB_Click()leimu_Write = 1Me.ListBox1_danJi.ClearleiMuPanDing
End SubPrivate Sub OptionButton6_leiMuC_Click()leimu_Write = 1Me.ListBox1_danJi.ClearleiMuPanDing
End SubPrivate Sub TextBox1_moRen_Change()refreshJieGuoTextBox1_moRen_Write = 1
End SubPrivate Sub ToggleButton1_Click()refreshJieGuo
End SubPrivate Sub ToggleButton2_Click()refreshJieGuo
End SubPrivate Sub ToggleButton3_Click()refreshJieGuo
End SubPrivate Sub UserForm_Initialize()Me.TextBox1_moRen.Value = system.Read("mingMing", "TextBox1_moRen")Dim theString As String: theString = system.Read("mingMing", "leimu")If InStr(1, theString, "A") ThenMe.OptionButton4_leiMuA.Value = TrueElseIf InStr(1, theString, "B") ThenMe.OptionButton5_leiMuB.Value = TrueElseIf InStr(1, theString, "C") ThenMe.OptionButton6_leiMuC.Value = TrueEnd IfMe.ListBox1_danJi.ClearleiMuPanDing
End SubPrivate Sub refreshJieGuo()If Me.OptionButton1.Value ThendanXuanString = "-" & Me.OptionButton1.CaptionElseIf Me.OptionButton2.Value ThendanXuanString = "-" & Me.OptionButton2.CaptionElseIf Me.OptionButton3.Value ThendanXuanString = "-" & Me.OptionButton3.CaptionEnd IfduoXuanString = ""If Me.CheckBox1_duoXuan1.Value Then duoXuanString = duoXuanString & "-" & Me.CheckBox1_duoXuan1.CaptionIf Me.CheckBox2_duoXuan2.Value Then duoXuanString = duoXuanString & "-" & Me.CheckBox2_duoXuan2.CaptionIf Me.CheckBox3_duoXuan3.Value Then duoXuanString = duoXuanString & "-" & Me.CheckBox3_duoXuan3.CaptionqieHuanString = ""If Me.ToggleButton1.Value Then qieHuanString = qieHuanString & "-" & Me.ToggleButton1.CaptionIf Me.ToggleButton2.Value Then qieHuanString = qieHuanString & "-" & Me.ToggleButton2.CaptionIf Me.ToggleButton3.Value Then qieHuanString = qieHuanString & "-" & Me.ToggleButton3.CaptionMe.TextBox2_jieGuo.Value = Me.TextBox1_moRen.Value & "-" & Me.ListBox1_danJi.Value & danXuanString & duoXuanString & qieHuanString
End SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)If TextBox1_moRen_Write Then system.WriteProfile "mingMing", "TextBox1_moRen", Me.TextBox1_moRen.ValueIf leimu_Write Then system.WriteProfile "mingMing", "leimu", leimu
End SubPrivate Sub leiMuPanDing()If Me.OptionButton4_leiMuA.Value Then leimu = "A"If Me.OptionButton5_leiMuB.Value Then leimu = "B"If Me.OptionButton6_leiMuC.Value Then leimu = "C"Select Case leimuCase "A"Me.ListBox1_danJi.AddItem "甲A1"Me.ListBox1_danJi.AddItem "甲A2"Me.ListBox1_danJi.AddItem "甲A3"Me.ListBox1_danJi.AddItem "甲A4"Me.ListBox1_danJi.AddItem "甲A5"Case "B"Me.ListBox1_danJi.AddItem "乙B1"Me.ListBox1_danJi.AddItem "乙B2"Me.ListBox1_danJi.AddItem "乙B3"Me.ListBox1_danJi.AddItem "乙B4"Me.ListBox1_danJi.AddItem "乙B5"Case "C"Me.ListBox1_danJi.AddItem "丙C1"Me.ListBox1_danJi.AddItem "丙C2"Me.ListBox1_danJi.AddItem "丙C3"Me.ListBox1_danJi.AddItem "丙C4"Me.ListBox1_danJi.AddItem "丙C5"Case ElseMe.ListBox1_danJi.AddItem "单击1"Me.ListBox1_danJi.AddItem "单击2"Me.ListBox1_danJi.AddItem "单击3"Me.ListBox1_danJi.AddItem "单击4"Me.ListBox1_danJi.AddItem "单击5"End Select
End Sub

代码释义:
Dim leimu As String 这是新建了一个字符串,里面用来保存,我们选择的是A类还是B类还是C类,稍候里面只要保存进一个英文字母
Dim leimu_Write As Integer这是为了监控我们是否更改了类目而定义,如果一旦鼠标点到了这个选项,我就会给这个整数改成1,然后面关闭窗口的时候会检测一下这个值,如果这个值是1就把当前我们选择的类目写入INI文件里面,INI文件是在硬盘里面,这样当我们关闭程序再打开,程序就会从INI文件里面读取这个值,根据我们上次关闭之前的选择来显示.(任何数据没有保存在硬盘上,在下次启动 的时候都是会消失的,所以要把这个量写入初始化文件INI中)

Private Sub OptionButton4_leiMuA_Click()leimu_Write = 1Me.ListBox1_danJi.ClearleiMuPanDing
End Sub
  • leimu_Write 的值就是在这个OptionButton4_leiMuA_Click点击事件里面更改的,当我们点击的时候,这个值就变成了1,这样做主要是为了避免每次关闭窗口都要去写入INI文件,避免了加重硬盘的负荷.
  • Me.ListBox1_danJi.Clear这一句是把复合框内原本的内容清除掉
  • Dim theString As String: theString = system.Read("mingMing", "leimu")这是从INI文件中获取上次的leimu类目的状态
  • If InStr(1, theString, "A") Then然后是判断语句,如果theString这个字符串从第1个字符开始搜索"A",如果搜到了返回这个字符的位置,所以这里是返回的非零值,如果没有搜到就会返回0, 而在判断语句中,0就表示false,其它数都表示true,所以这里如果搜到了,就会继续执行后面的then语句, 还有如果前面的if判定成功,那么后面的elseif语句就不会再执行了.所以无论后面还有多少个elseif没有判定完都不会再执行, 换句话说,如果前面的if一直判定失败是false状态,那么程序就会一行一行执行到最后一行. 从时间复杂度来说 这也是if语句比不上select语句的原因.
  • Me.OptionButton4_leiMuA.Value = True这句就是把选项点亮
  • Select Case leimu我们在leiMuPanDing功能中用了select语句,这个语句的优点就是只要判定一次就能定位到需要执行的那一行,Select Case 放在最前面是固定用法,后面放接受判定的值,而这次要判定的值就是leimu
  • Case "A"就是说如果判定的为字母’‘A’'就执行A下面的这些代码,如果是B就执行B下面的,如果是C就执行C下面的
  • Case Else是如果符合的就执行else下面的
  • End Select是select的结束语,是固定用法

CorelDRAWX4的VBA插件开发(二十五)多类目选择实现复合框内容置换相关推荐

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

    在上一节中已经建立好了类,那么这一节我们来调用它,先建立一个面板 然后修改框体名称 然后从左侧新建一些按钮并且以拼音为结尾进行命名 Private Sub CheckBox2_zheYe_Click( ...

  2. CorelDRAWX4的VBA插件开发(二十四)复合选框组件与联合命名面板

    我们在处理文档的时候碰上的最多的问题就是与字符串相当的问题,这里再拿出来单把各种使用命名的小组件讲一下,我们先上效果图: 我们可以在上图看到最终结果,可以让一行文件名跟随各种组件进行更改,下下面我们先 ...

  3. CorelDRAWX4的VBA插件开发(三十五)调用C++实现一键智能群组(第4节)递归调用框选工具

    上一节没有讲到的递归函数diguiSelect,这一单独列出来讲一下 INT diguiSelect(long count, DOUBLE LX, DOUBLE BY, DOUBLE RX, DOUB ...

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

    这次主要来浅讲一下"类"这个功能,先上一下要实现的功能,建立设计外框加出血线和等分折页线,先上图 那什么是类呢?类其实就是CLASS,用来封装成员参数和函数的,拆开来里面就是这些东 ...

  5. CorelDRAWX4的VBA插件开发(三十四)调用C++实现一键智能群组(第3节)主调函数以及三个被调函数

    这一节就进入到了群组的实质性的内容,先把群组Qunzu()函数展示一下 先展示主调函数Qunzu(),函数里面还有四个被调函数等会儿再说 BOOL Qunzu() {//undo开 这个是一键多步撤销 ...

  6. CorelDRAWX4的VBA插件开发(二十七)使用C++制作动态连接库DLL辅助VBA构键强大功能-(1)前言和准备工作

    我们在使用VBA的时候会很多的局限性,包括调用库和递归函数,对指针结构体和类都不友好,对时间复杂度和空间复杂度都优化得不够,换言之VB就不是从性能出发的语言,所以难免力不从心 所以这里用C++为VBA ...

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

    先上结果图,这个工具栏和按钮都是主程序自动生成的 在程序的运行当中,如果我们希望程序能够自己创建工具栏和按钮,可以在CDR启动事件中设置一个检测功能 Private Sub GlobalMacroSt ...

  8. CorelDRAWX4的VBA插件开发(二十三)INI初始化文件的读写和路径的保存

    我们在上一节当中写了一个选择路径的功能, 所以我们希望这个路径在每一次打开的时候都会重新显示出上次选择的, 这就需要借用到外部文件来储存了, 要把这个内容写在硬盘上, 这种文件一般就是所谓的后缀为.i ...

  9. Python学习日记(二十五) 接口类、抽象类、多态

    接口类 继承有两种用途:继承基类的方法,并且做出自己的改变或扩展(代码重用)和声明某个子类兼容于某基类,定义一个接口类interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子 ...

最新文章

  1. 技术人的不惑之路...... | 每日趣闻
  2. django language_Python+Django— 入门通关(三)| admin:后台管理界面
  3. python logging使用_Python实战之logging模块使用详解
  4. JavaScript开发中几个常用知识点总结
  5. Android动态添加Fragment
  6. Linux网络编程基础
  7. 为什么xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?
  8. Kavex GameDev-Resources
  9. h5前端开发,96道前端面试题
  10. 中南大学保研去华科计算机,巨无霸学校保研清北比率,武大山大中大华科川大吉大大工中南。...
  11. 硬盘存储双寡头之争 希捷重注中国市场或赢大丰收
  12. 【离散系统】传递函数和状态空间方程离散化
  13. c语言循环单链表实现约瑟夫环问题
  14. 东南大学信息科学工程学院在计算机,【东南大学计算机科学与工程学院】疑问咨询贴...
  15. excel报表管理系统mysql_教育扶贫数据库管理系统下载安装|教育扶贫数据库管理系统(mysql收集excel表格)官方版下载_v1.0_9号软件下载...
  16. 自动控制原理——线性系统的根轨迹分析法
  17. 年后准备跳槽一定要注意这几点。谨防踩坑
  18. Pinyin4j的简单使用
  19. 特斯拉允许行车过程中玩游戏,车主:谢谢“好意”,已投诉
  20. mini pci-e中包含pcie和usb

热门文章

  1. xshell 登录计算节点_集群服务器节点远程登录使用教程
  2. 安卓入门-动画(Animation)(由简单的单一动画到复杂的时间顺序叠加动画)(XML实现方式+JAVA实现方式)
  3. 一篇NDSS的关于虚拟局域网的论文分析
  4. Java 线上cpu占用过高分析
  5. 菊风创新远程银行解决方案,助力打造全能型智慧银行!
  6. 从权力的游戏中学到的7大安全课程
  7. 联想开机按f12之后,选择U盘启动没反应,进不去
  8. FireBird CXP12新一代采集卡—AS-FBD-4XCXP12-3PE8在机器视觉中的应用
  9. 如何给魅族M8安装主题
  10. C++的学习心得和知识总结 第十二章(完)