如何在线条上标号?

gary1982_chu 2013-11-09 04:50:44
在WinForm中有chart做了一个图,总共有10段线条构成,我想给每一段线条标号,如何才能实现呢?大侠给出个招吧,谢谢!
类似于这样的格式。------1-----。-------2-----
...全文
71 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
第一章 原理图设计 3 一、新建设计数据库 3 二、方便的文件查找功能 4 三、直接浏览原理图库器件 5 四、增强的选中功能 6 五.文本字符在线编辑 6 六、器件标号的重新注释 6 七、库中器件管脚的热点捕捉 8 八、删除元件库中器件的确认功能 8 九、产生元件类和网络类 8 十、端口、图纸入口功能增加 9 十一、丰富的输入、输出功能 9 第二章 PCB设计 10 一、层管理功能 10 二、强大的机械层管理 10 三、设计规则 11 四、增强的元件布局 12 五、库编辑器增强的拷贝粘贴功能 14 六、在PCB中修改元件封装 14 七、放置工具条增加功能(Place) 14 八、Option中只显示用到的层 15 九、在已覆铜区域放线条,可以自动重新铺铜 15 十、过孔显示网络名称 15 十一、强大的全局编辑功能 16 十二、选择功能加强 16 十三、增强的解散功能 17 十四、增强的补泪滴功能 17 十五、布线在焊盘上时,切换层不增加过孔 17 十六、状态条信息的增强 18 十七、3D显示 18 十八、新的自适应移屏方式,与板尺寸无关 18 十九、可以对个别焊盘或过孔设置阻焊 19 二十、PCB封装库增加Redo、Undo功能 19 二十一、打印功能增强 19 二十二、第三方接口增强 20 二十三、强大的CAM管理功能 21 第三章 原理图仿真 22 一、仿真(Simulation)菜单项 22 二、仿真库 33 三、仿真电路分析 36 第四章 PLD设计 42 一、PLD菜单项 42 二、CUPL语言设计 43 三、原理图设计PLD 47
protel dxp的元件封装 一、 Protel DXP中的基本PCB库: 原理图元件库的扩展名是.SchLib,PCB板封装库的扩展名.PcbLib,它们是在软件安装路径的“\Library\...”目录下面的一些封装库中。 根据元件的不同封装我们将其封装分为二大类:一类是分立元件的封装,一类是集成电路元件的封装 1、分立元件类: 电容:电容分普通电容和贴片电容:普通电容在Miscellaneous Devices.IntLib库中找到,它的种类比较多,总的可以分为二类,一类是电解电容,一类是无极性电容,电解电容由于容量和耐压不同其封装也不一样,电解电容的名称是“RB.*/.*”,其中.*/.*表示的是焊盘间距/外形直径,其单位是英寸。无极性电容的名称是“RAD-***”,其中***表示的是焊盘间距,其单位是英寸。 贴片电容在 \Library\PCB\Chip Capacitor-2 Contacts.PcbLib中,它的封装比较多,可根据不同的元件选择不同的封装,这些封装可根据厂家提供的封装外形尺寸选择,它的命名方法一般是CC****-****,其中“-”后面的“****”分成二部分,前面二个**是表示焊盘间的距离,后面二个**表示焊盘的宽度,它们的单位都是10mil,“-”前面的“****”是对应的公制尺寸。 电阻:电阻分普通电阻和贴片电阻:普通电阻在Miscellaneous Devices.IntLib库中找到,比较简单,它的名称是“AXIAL -***”,其中***表示的是焊盘间距,其单位是英寸。 贴片电阻在Miscellaneous Devices.IntLib库中只有一个,它的名称是“R2012-0806”,其含义和贴片电容的含义基本相同。其余的可用贴片电容的封装套用。 二极管:二极管分普通二极管和贴片二极管:普通二极管在Miscellaneous Devices.IntLib库中找到,它的名称是“DIODE -***”,其中***表示一个数据,其单位是英寸。贴片二极管可用贴片电容的封装套用。 三极管:普通三极管在Miscellaneous Devices.IntLib库中找到,它的名称与Protel99 SE的名称“TO-***”不同,在Protel DXP中,三极管的名称是“BCY-W3”目录中,以后就可以十分方便地调用了。其实对Protel 99、Protel2.5等以前的版本的封装元件库也可以用导入的方法将封装元件库导入Protel DXP中。 三、 在Protel DXP中创建新的封装元件: 创建新的封装元件在Protel DXP中有二种方法,一是手工创建,二是用向导创建 1、 用手工绘制封装元件: 用绘图工具箱 2、 用向导创建封装元件: 用向导创建封装元件根据封装元件的不同其步骤也有所不同,但是基本的方法大致是相同的,下面我们对最基本的方法简单介绍一下: ①、单击*.PcbLib(在那个元件库创建就单击那个元件库),将*.PcbLib作为当前被编辑的文件; ②、单击【Tools】/【New Component】,在对话框中选择准备创建元件的封装类型,下面的表格是各封装类型对照表: 序号 名 称 说 明 1 Ball Grid Arrays(BGA) BGA类型 2 Capacitors CAP无极性电容类型 3 Diodes 二极管类型 4 Dual in-line Package(DIP) DIP类型 5 Edge Connectors EC边沿连接类型 6 Leadless Chip Carier(LCC) LCC类型 7 Pin Grid Arrays(PGA) OGA类型 8 Quad Packs(QUAD) GUAD类型 9 Resistors 二脚元件类型 10 Small Outline Package(SOP) SOP类型 11 Staggered Ball Gird Arrayd (SBG) SBG类型 12 Staggered Pin Gird Arrayd (SPGA) SPGA类型 假定我们选择Dual in-line Package(DIP)的封装类型,并选择单位制为“Imperial”(英制,一般均选择英制),然后单击“Next”; ③、在这个对话框中是设置焊盘的大小,我们如果是创建一个DIP封装的元件,可以采用默认值,当然如果创建的不是典型的DIP封装元件,要根据焊盘流过的电流大小设置,对于电流较大的元件焊盘要设置的稍大一点,设置好后单击“Next”; ④、在这个对话框中是设置焊盘之间的X方向和Y方向间距的,如果我们是创建一个DIP封装的元件,可以采用默认值,当然如果创建的不是典型的DIP封装元件,要根据焊盘流过的电流大小设置,对于电流较大的元件焊盘的间距要设置的稍大一点,设置好后单击“Next”; ⑤、在这个对话框中是设置丝印层中丝印线条的宽度的,为了使丝印比较清晰最好印线条的宽度的设置为2-5mil,比较流行的设置是5 mil,设置好后单击“Next”; ⑥、在这个对话框中是设置焊盘的数目,我们如果是创建一个DIP封装的元件,根据封装设置;如果创建的不是DIP封装的元件,要根据焊盘的多少设置,当然由于是DIP封装设置一般要采用双数,如果设置和具体的封装有区别,在后面我们还可以修改,设置好后单击“Next”; ⑦、在这个对话框中是设置封装元件的名称的,在文本输入框输入即可,输入好后单击“Next”; ⑧、进入向导完成对话框,单击“Finish”结束向导。如果我们创建的是DIP元件,基本已经完成,但是我们创建的不是DIP元件,可能和元件封装有一定的差别,我们可以进行手工修改; ⑨、用手工绘制的方法进行修改,修改的内容包括增加或减少焊盘、对某个焊盘进行大小和名称的重新设置、对某个焊盘进行移动、重新绘制元件封装的轮廓线等等。全部设置和修改完成并经过反复检查认为没有问题后,点击【Edit】/【Set Reference】/【*】设置参考点。点击【Report】/【Component Rule Check】执行元件设计规则检查,如果在输出报表没有错误,则设计是成功的。点击主工具条的存盘键进行存盘。 四、 在Protel DXP中封装元件在封装元件库间的复制: 有的时候我们需要将一个封装元件库中的某个封装元件复制到另一个封装元件库中,复制的方法比较多,我们在这里介绍二种比较常用和比较简单的方法供参考: 方法一、单击*.PcbLib(被复制的封装元件所在的元件库),将*.PcbLib作为当前被编辑的文件,用鼠标右键点击被复制的封装元件,在下拉菜单单击“Copy”;单击*1.PcbLib(被复制的封装元件要复制到的元件库),将*1.PcbLib作为当前被编辑的文件,用鼠标右键点封装元件列表最上面的空白处,在下拉菜单单击“Paste”,然后保存即可; 方法二、单击*.PcbLib(被复制的封装元件所在的元件库),将*.PcbLib作为当前被编辑的文件,用鼠标左键点击被复制的封装元件,使被复制的封装元件到编辑区,点击【Edit】/【Select】/【All】选择编辑区的全部内容,再点击【Edit】/【Coyp】进行复制;单击*1.PcbLib(被复制的封装元件要复制到的元件库),将*1.PcbLib作为当前被编辑的文件,用鼠标左键点击【Tools】/【New Component】新建一个元件,关闭向导对话框,继续点击【Edit】/【Paste】将封装元件复制到编辑区,点击【Tools】/【Rename Component】对元件重命名,然后保存即可。 上述方法同样适合原理图元件库中元件的复制。 五、 在Protel DXP中创建自己的封装元件库: 我们在制作PCB板时不是需要在Protel DXP中的所有的元件库,而是仅仅需要其中的部分元件库和封装库,或者是某个库中的部分元件或封装元件,如果我们将这些元件或封装元件创建自己的元件库和封装元件库,给我们带来很大的方便,在查找过程中也特别容易了。在某个磁盘分区,新建一个目录如“PDXP LIB”,在这个目录下再新建二个目录“SCH”和“PCB”,在“SCH”目录中可以创建自己的电路原理图的元件库,由于本文主要讨论PCB封装元件库,这里我们不再讨论,在“PCB”中我们创建PCB封装元件库。在Protel DXP的单击【File】/【New】/【PCB Library】新建一个空的PCB元件库,并用另外的名称如“分立元件.PcbLib”存盘到“X:/PDXP LIB/PCB/”中,其中“X:”是上面目录的所在盘符。在这个库中用运上面新建封装元件的方法和封装元件在封装元件库间的复制方法将分立元件的封装全部放置在这个库中。用同样的方法,创建“DIP.PcbLib”、“贴片电容.PcbLib”、“接插件.PcbLib”、“PLCC.PcbLib”、“SOP.PcbLib”等等等等封装元件库,在这些库中用运上面新建封装元件的方法和封装元件在封装元件库间的复制方法将相应元件的封装全部放置在这个库中。在分类过程中,最好分的比较细一点,虽然看起来库比较多,但是一则管理比较方便,维护、修改、添加等都十分容易,二则在调用元件时一目了然,作者就是这样管理和用运的,比在原来的库中用运方便的多。 六、 创建和修改封装元件时注意的一些问题: 1、我们建议自己创建的元件库保存在另外的磁盘分区,这样的好处是如果在Protel DXP软件出现问题或操作系统出现问题时,自己创建的元件库不可能因为重新安装软件或系统而丢失,另外对元件库的管理也比较方便和容易。 2、对于自己用手工绘制元件时必须注意元件的焊接面在底层还是在顶层,一般来讲,贴片元件的焊接面是在顶层,而其他元件的焊接面是在底层(实际是在MultiLayer层)。对贴片元件的焊盘用绘图工具中的焊盘工具放置焊盘,然后双击焊盘,在对话框将Saple(形状)中的下拉单修改为Rectangle(方形)焊盘,同时调整焊盘大小X-Size和Y-Size为合适的尺寸,将Layer(层)修改到“Toplayer”(顶层),将Hole Size(内经大小)修改为0mil,再将Designator中的焊盘名修改为需要的焊盘名,再点击OK就可以了。有的初学者在做贴片元件时用填充来做焊盘,这是不可以的,一则本身不是焊盘,在用网络表自动放置元件时肯定出错,二则如果生产PCB板,阻焊层将这个焊盘覆盖,无法焊接,请初学者们特别注意。 3、在用手工绘制封装元件和用向导绘制封装元件时,首先要知道元件的外形尺寸和引脚间尺寸以及外形和引脚间的尺寸,这些尺寸在元件供应商的网站或供应商提供的资料中可以查到,如果没有这些资料,那只有用千分尺一个尺寸一个尺寸地测量了。测量后的尺寸是公制,最好换算成以mil为单位的尺寸(1cm=1000/2.54=394mil 1mm=1000/25.4=39.4mil),如果要求不是很高,可以取1cm=400mil,1mm=40mil。 4、如果目前已经编辑了一个PCB电路板,那么单击【Design】/【Make PCB Library】可以将PCB电路板上的所有元件新建成一个封装元件库,放置在PCB文件所在的工程中。这个方法十分有用,我们 在编辑PCB文件时如果仅仅对这个文件中的某个封装元件修改的话,那么只修改这个封装元件库中的相关元件就可以了,而其他封装元件库中的元件不会被修改。 protel dxp快捷键大全 enter——选取或启动 esc——放弃或取消 f1——启动在线帮助窗口 tab——启动浮动图件的属性窗口 pgup——放大窗口显示比例 pgdn——缩小窗口显示比例 end——刷新屏幕 del——删除点取的元件(1个) ctrl+del——删除选取的元件(2个或2个以上) x+a——取消所有被选取图件的选取状态 x——将浮动图件左右翻转 y——将浮动图件上下翻转 space——将浮动图件旋转90度 crtl+ins——将选取图件复制到编辑区里 shift+ins——将剪贴板里的图件贴到编辑区里 shift+del——将选取图件剪切放入剪贴板里 alt+backspace——恢复前一次的操作 ctrl+backspace——取消前一次的恢复 crtl+g——跳转到指定的位置 crtl+f——寻找指定的文字 alt+f4——关闭protel spacebar——绘制导线,直线或总线时,改变走线模式 v+d——缩放视图,以显示整张电路图 v+f——缩放视图,以显示所有电路部件 home——以光标位置为中心,刷新屏幕 esc——终止当前正在进行的操作,返回待命状态 backspace——放置导线或多边形时,删除最末一个顶点 delete——放置导线或多边形时,删除最末一个顶点 ctrl+tab——在打开的各个设计文件文档之间切换 alt+tab——在打开的各个应用程序之间切换 a——弹出edit\align子菜单 b——弹出view\toolbars子菜单 e——弹出edit菜单 f——弹出file菜单 h——弹出help菜单 j——弹出edit\jump菜单 l——弹出edit\set location makers子菜单 m——弹出edit\move子菜单 o——弹出options菜单 p——弹出place菜单 r——弹出reports菜单 s——弹出edit\select子菜单 t——弹出tools菜单 v——弹出view菜单 w——弹出window菜单 x——弹出edit\deselect菜单 z——弹出zoom菜单 左箭头——光标左移1个电气栅格 shift+左箭头——光标左移10个电气栅格 右箭头——光标右移1个电气栅格 shift+右箭头——光标右移10个电气栅格 上箭头——光标上移1个电气栅格 shift+上箭头——光标上移10个电气栅格 下箭头——光标下移1个电气栅格 shift+下箭头——光标下移10个电气栅格 ctrl+1——以零件原来的尺寸的大小显示图纸 ctrl+2——以零件原来的尺寸的200%显示图纸 ctrl+4——以零件原来的尺寸的400%显示图纸 ctrl+5——以零件原来的尺寸的50%显示图纸 ctrl+f——查找指定字符 ctrl+g——查找替换字符 ctrl+b——将选定对象以下边缘为基准,底部对齐 ctrl+t——将选定对象以上边缘为基准,顶部对齐 ctrl+l——将选定对象以左边缘为基准,靠左对齐 ctrl+r——将选定对象以右边缘为基准,靠右对齐 ctrl+h——将选定对象以左右边缘的中心线为基准,水平居中排列 ctrl+v——将选定对象以上下边缘的中心线为基准,垂直居中排列 ctrl+shift+h——将选定对象在左右边缘之间,水平均布 ctrl+shift+v——将选定对象在上下边缘之间,垂直均布 f3——查找下一个匹配字符 shift+f4——将打开的所有文档窗口平铺显示 shift+f5——将打开的所有文档窗口层叠显示 shift+单左鼠——选定单个对象 crtl+单左鼠,再释放crtl——拖动单个对象 shift+ctrl+左鼠——移动单个对象 按ctrl后移动或拖动——移动对象时,不受电器格点限制 按alt后移动或拖动——移动对象时,保持垂直方向 按shift+alt后移动或拖动——移动对象时,保持水平方向 小结:PCB使用技巧 1、元器件标号自动产生或已有的元器件标号取消重来 Tools工具|Annotate…注释 All Part:为所有元器件产生标号 Reset Designators:撤除所有元器件标号 2、单面板设置: Design设计|Rules…规则|Routing layers Toplayer设为NotUsed Bottomlayer设为Any 3、自动布线前设定好电源线加粗 Design设计|Rules…规则|Width Constraint 增加:NET,选择网络名VCC GND,线宽设粗 4、PCB封装更新,只要在原封装上右键弹出窗口内的footprint改为新的封装号 5、100mil=2.54mm;1mil=1/1000英寸 6、快捷键"M",下拉菜单内的Dram Track End 拖拉端点====拉PCB内连线的一端点处继续连线。 7、定位孔的放置 在KeepOutLayer层(禁止布线层)中画一个圆,Place|Arc(圆心弧)center,然后调整其半径和位置 8、设置图纸参数 Design|Options|Sheet Options (1)设置图纸尺寸:Standard Sytle选择 (2)设定图纸方向:Orientation选项----Landscape(小平方向)----Portrait(垂直方向) (3)设置图纸标题栏(Title BlocK):选择Standard为标准型,ANSI为美国国家协会标准型 (4)设置显示参考边框Show Reference Zones (5)设置显示图纸边框Show Border (6)设置显示图纸模板图形Show Template Graphics (7)设置图纸栅格Grids 锁定栅格Snap On,可视栅格设定Visible (8)设置自动寻找电器节点 10、元件旋转: Space键:被选中元件逆时针旋转90 在PCB中反转器件(如数码管),选中原正向器件,在拖动或选中状态下, X键:使元件左右对调(水平面); Y键:使元件上下对调(垂直面) 11、元件属性: Lib Ref:元件库中的型号,不允件修改 Footprint:元件的封装形式 Designator:元件序号如U1 Part type:元件型号(如芯片名AT89C52 或电阻阻值10K等等)(在原理图中是这样,在PCB中此项换为Comment) 12、生成元件列表(即元器件清单)Reports|Bill of Material 13、原理图电气法则测试(Electrical Rules Check)即ERC 是利用电路设计软件对用户设计好的电路进行测试,以便能够检查出人为的错误或疏忽。 原理图绘制窗中Tools工具|ERC…电气规则检查 ERC对话框各选项定义: Multiple net names on net:检测“同一网络命名多个网络名称”的错误 Unconnected net labels:“未实际连接的网络标号”的警告性检查 Unconnected power objects:“未实际连接的电源图件”的警告性检查 Duplicate sheet mnmbets:检测“电路图编号重号” Duplicate component designator:“元件编号重号” bus label format errors:“总线标号格式错误” Floating input pins:“输入引脚浮接” Suppress warnings:“检测项将忽略所有的警告性检测项,不会显示具有警告性错误的测试报告” Create report file:“执行完测试后程序是否自动将测试结果存在报告文件中” Add error markers:是否会自动在错误位置放置错误符号 Descend into sheet parts:将测试结果分解到每个原理图中,针对层次原理图而言 Sheets to Netlist:选择所要进行测试的原理图文件的范围 Net Identifier Scope:选择网络识别器的范围 14、系统原带库Miscellanous Devices.ddb中的DIODE(二级管)封装应该改,也就把管脚说明 1(A) 2(K)改为A(A) K(K) 这样画PCB导入网络表才不会有错误:Note Not Found 15、PCB布线的原则如下 (1)输入输出端用的导线应尽量避免相邻平行。最好加线间地线,以免发生反馈藕合。 (2)印制摄导线的最小宽度主要由导线与绝缘基扳间的粘附强度和流过它们的电流值决定。 当铜箔厚度为0.05mm、宽度为1~15mm时.通过2A的电流,温度不会高于3℃,因此导线宽度为1.5mm(60mil)可满足要求。对于集成电路,尤其是数字电路,通常选0.02~0.3mm(0.8~12mil)导线宽度。当然,只要允许,还是尽可能用宽线.尤其是电源线和地线。导线的最小间距主要由最坏情况下的线间绝缘电阻和击穿电压决定。对于集成电路,尤其是数字电路,只要工艺允许,可使间距小至5~8mm。 (3)印制导线拐弯处一般取圆弧形,而直角或夹角在高频电路中会影响电气性能。此外,尽量避免使用大面积铜箔,否则.长时间受热时,易发生铜箔膨胀和脱落现象。必须用大面积铜箔时,最好用栅格状.这样有利于排除铜箔与基板间粘合剂受热产生的挥发性气体。 (4)焊盘:焊盘中心孔要比器件引线直径稍大一些。焊盘太大易形成虚焊。焊盘外径D一般不小于(d+1.2)mm,其中d为引线孔径。对高密度的数字电路,焊盘最小直径可取(d+1.0)mm。 16、工作层面类型说明 ⑴、信号层(Signal Layers),有16个信号层,TopLayer BottomLayer MidLayer1-14。 ⑵、内部电源/接地层(Internal Planes),有4个电源/接地层Planel1-4。 ⑶、机械层(Mechanical Layers),有四个机械层。 ⑷、钻孔位置层(Drill Layers),主要用于绘制钻孔图及钻孔的位置,共包括Drill Guide 和Drill drawing两层。 ⑸、助焊层(Solder Mask),有TopSolderMask和BottomSolderMask两层,手工上锡。 ⑹、锡膏防护层(Paste Mask)有TopPaste和BottomPaster两层。 ⑺、丝印层(Silkscreen),有TopOverLayer和BottomOverLayer两层,主要用于绘制元件的外形轮廓。 ⑻、其它工作层面(Other): KeepOutLayer:禁止布线层,用于绘制印制板外边界及定位孔等镂空部分。 MultiLayer:多层 Connect:连接层 DRCError:DRC错误层 VisibleGrid:可视栅格层 Pad Holes:焊盘层。 Via Holes:过孔层。 17、PCB自动布线前的设置 ⑴Design|Rules…… ⑵Auto Route|Setup…… Lock All Pro-Route:锁定所有自动布线前手工预布的连线。
实验一 利用原理图输入法设计4位全加器 一、实验目的: 掌握利用原理图输入法设计简单组合电路的方法,掌握MAX+plusII的层次化设计方 法。通过一个4位全加器的设计,熟悉用EDA软件进行电路设计的详细流程。 二、实验原理: 一个4位全加器可以由4个一位全加器构成,全加器的进位以串行方式实现,即将低 位加法器的进位输出cout与相邻的高位加法器的低位进位输入信号cin相接。 1位全加器f-adder由2个半加器h-adder和一个或门按照下列电路来实现。 半加器h-adder由与门、同或门和非门构成。 四位加法器由4个全加器构成 三、实验内容: 1. 熟悉QuartusII软件界面,掌握利用原理图进行电路模块设计的方法。 QuartusII设计流程见教材第五章:QuartusII应用向导。 2.设计1位全加器原理图 (1)生成一个新的图形文件(file->new->graphic editor) (2)按照给定的原理图输入逻辑门(symbol->enter symbol) (3)根据原理图连接所有逻辑门的端口,并添加输入/输出端口 (4)为管脚和节点命名: 在管脚上的PIN_NAME处双击鼠标左键,然后输入名字; 选中需命名的线,然后输入名字。 (5)创建缺省(Default)符号: 在 File菜单中选择 Create Symbol Files for Current File 项,即可创建一个设计的符号,该符号可被高层设计调用。 3.利用层次化原理图方法设计4位全加器 (1)生成新的空白原理图,作为4位全加器设计输入 (2)利用已经生成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图. 4.新建波形文件(file->new->Other Files->Vector Waveform File),保存后进行仿真(Processing ->Start Simulation),对4位全加器进行时序仿真。给出波形图,并分析仿真结果是否正确。 "1位半加器: " "原理图: " " " " " "仿真波形: " " " "1位全加器: " "原理图: " " " "仿真波形: " " " "4位全加器: " "原理图: " " " "仿真波形: " " " "4位全加器仿真结果正确: " "例:0011(A)+0111(B)+0(CI)结果为1010(S),进位CO为0。 " 5.思考 如何在原理图中输入一个总线,并与其他总线连接? "先选中细线,然后右击,选"bus " "line",总线是以粗线条表示。与其他总线连接:例如一根8位的总线 bus1[7..0]欲与 " "另三根分别为1、3、4个位宽的连线相接,则它们的标号可分别表示为bus1[0],bus1[3" "..1],bus1[7..4]。 " 实验二 简单组合电路的设计 一、实验目的: 熟悉QuartusII VHDL文本设计流程全过程。学习简单组合电路的设计、多层次电路设计、仿真和硬件测 试。 二、实验原理 VHDL硬件描述语言是一种可以从多个层次上对数字逻辑电路进行建模的国际标准(IEEE) ,本次实验是用VHDL设计一个简单的数字组合逻辑电路,并结合QuartusII环境和实验电 路进行硬件测试。 三、实验内容: 1. 根据实验一中一位全加器的电路原理图,改用VHDL语言文本输入方法,设计一位全加器 ,要求采用结构化的描述方法。设计完成后,利用QuartusII集成环境进行时序分析、 仿真,记录仿真波形和时序分析数据。 2. 用VHDL语言设计一个四选一数据选择器电路。 要求先设计一个二选一数据选择器mux21,然后利用元件例化语句设计四选一数据选择 器mux41,同样请给出时序分析数据和仿真结果。 3)硬件测试(选用器件 EPF10K10 Pin84) 管脚锁定: 1)一位全加器 a PIO23(I/O19) 30 SW1 b PIO24(I/O20) 35 SW2 ci PIO25(I/O21) 36 SW3 s PIO21(I/O16) 27 LED10 co PIO19(I/O8) 29 LED12 2)四选一数据选择器 a1 PIO23 30 SW1 a0 PIO24 35 SW2 d3 PIO27 38 SW5 d2 PIO28 39 SW6 d1 PIO29 47 SW7 d0 PIO30 42 SW8 yout 29 LED12 四、思考题 比较原理图输入法和文本输入法的优缺点。 "实验结果: " "一位全加器的VHDL描述: " "半加器的VHDL描述: " "LIBRARY IEEE; " "USE IEEE.STD_LOGIC_1164.ALL; " "ENTITY h_adder IS " "PORT (a,b:IN STD_L
自动生成VBA窗体菜单 '*************************** '* 菜单类 * '*************************** Option Explicit Private WithEvents MenuBar_MenuItem As MSForms.Label '菜单项 Private WithEvents WorkForm As MSForms.UserForm '工作窗口 Private WithEvents MenuBar As MSForms.Image '菜单栏 Private BackMenu_BackGroud As MSForms.Image '菜单背景图片 Private BackMenu_Caption As MSForms.Label '菜单标题标签 Private Const DISTANCE As Integer = 5 '菜单与左边框距离 Private Const MENUTOP As Integer = 2 '菜单项顶点Y轴位置 Private Const MENUHEIGHT As Integer = 14 '菜单项高度 Private intIndex As Integer '索引变量 Private sAction As String '宏名称变量 Private Property Let Index(N As Byte) '指定索引属性 intIndex = N End Property Private Property Get Index() As Byte '获得陇望蜀索引属性 Index = intIndex End Property Private Property Let OnAction(sAct As String) '行为属性 sAction = sAct End Property Private Property Get OnAction() As String OnAction = sAction End Property Public Sub AddMenu(wform As MSForms.UserForm, sCaption As String, sAction As String, Optional Acc As String = vbNullString) Dim MenuLeft As Single, MenuWidth As Single '由两个标签和一个图形控件组成一个主菜单项 MenuCount = MenuCount + 1 '主菜单项总数加1 Index = MenuCount '设置索引 Set WorkForm = wform With WorkForm Set MenuBar = .FormMenuBar Set BackMenu_Caption = .Controls.Add("forms.label.1") '添加一个标签,显示菜单标题 With BackMenu_Caption .Accelerator = Acc .AutoSize = True .BackStyle = fmBackStyleTransparent .Caption = sCaption .Font = "宋体" .Font.Size = 9 .Name = "BackMenu_Caption" & MenuCount .TextAlign = fmTextAlignCenter .Top = MENUTOP + 3 .WordWrap = False .Visible = True End With If MenuCount = 1 Then MenuLeft = DISTANCE Else With .Controls("BackMenu_Caption" & MenuCount - 1) MenuLeft = .Left + .Width End With End If MenuWidth = BackMenu_Caption.Width + 10 Set BackMenu_BackGroud = .Controls.Add("forms.image.1") '添加一个image,作为背景图片 With BackMenu_BackGroud .Name = "BackMenu_BackGroud" & MenuCount .BorderStyle = fmBorderStyleNone .Move MenuLeft, MENUTOP, MenuWidth, MENUHEIGHT .BackStyle = fmBackStyleTransparent .PictureSizeMode = fmPictureSizeModeStretch BackMenu_Caption.AutoSize = False BackMenu_Caption.Left = .Left BackMenu_Caption.Width = .Width End With BackMenu_Caption.ZOrder '将标签置前 Set MenuBar_MenuItem = .Controls.Add("forms.label.1") '添加一个Label,用于触发事件 With MenuBar_MenuItem .Name = "MenuBar_MenuItem" & MenuCount .BorderStyle = fmBorderStyleNone .BackStyle = fmBackStyleTransparent With BackMenu_BackGroud MenuBar_MenuItem.Move .Left, .Top, .Width, .Height End With End With End With OnAction = sAction End Sub Private Sub MenuBar_MenuItem_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then bMenuSelected = True: Menu_Select End Sub Private Sub MenuBar_Click() UnSelectLastMenu bMenuSelected = False End Sub Private Sub MenuBar_MenuItem_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) UnSelectLastMenu Call Menu_Select End Sub Private Sub MenuBar_MouseMove1(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Not bMenuSelected Then UnSelectLastMenu End Sub Private Sub WorkForm_Click() '窗体单击时 UnSelectLastMenu bMenuSelected = False End Sub Private Sub WorkForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Not bMenuSelected Then UnSelectLastMenu '窗体 End Sub Private Sub Menu_Select() '选择菜单 On Error Resume Next Dim Pt_Menu_RightBottom As POINTAPI, Pt_Menu_LeftTop As POINTAPI With WorkForm UnSelectLastMenu Set LastSelect_Menu = BackMenu_BackGroud With BackMenu_BackGroud .BorderStyle = fmBorderStyleSingle .BorderColor = RGB(0, 0, 128) .BackStyle = fmBackStyleOpaque If bMenuSelected = False Then WorkForm.Controls("BackMenu_BackGroud" & Index).BackColor = &HFFC0C0 Else WorkForm.Controls("BackMenu_BackGroud" & Index).BackColor = &HE0E0E0 pt.X = MenuBar_MenuItem.Left * 1.33 pt.Y = (MenuBar_MenuItem.Top + MenuBar_MenuItem.Height) * 1.33 + 3 ClientToScreen hForm, pt If OnAction "" Then Application.Run OnAction End If End If End With End With End Sub Private Sub UnSelectLastMenu() '取消上次选择 If Not LastSelect_Menu Is Nothing Then With LastSelect_Menu .Picture = LoadPicture() .BackStyle = fmBackStyleTransparent .BorderStyle = fmBorderStyleNone End With End If End Sub '********本模块结束********** '*************************** '* 菜单执行模块 * '*************************** Public Type POINTAPI X As Long Y As Long End Type Public Declare Function FindWindow Lib "user32.dll" Alias"FindWindowA"(ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function ClientToScreen Lib"user32"(ByVal hwnd As Long, lpPoint As POINTAPI) As Long Public Popup_Menu As CommandBar '指定弹出式菜单 Public LastSelect_Menu As MSForms.Image '最后选择的菜单 Public MenuCount As Integer '子菜单数量 Public hForm As Long '窗口句柄 Public intLevel As Integer '级别标识,用于设置Radio菜单(游戏菜单中:初级,中级,高级) Public bAbortEnabled As Boolean '标识放弃菜单项是否可用 Public bItemCheck As Boolean '标识音效菜单是否CheckOn Public bMenuSelected As Boolean '标识菜单是否点击 Public pt As POINTAPI '定义点 Public faceid As Integer '图标ID Public faceidselect As Integer '选择的图标 Public fistid As Integer '第一个图标号 Public lastid As Integer '最后一个图标号 Public selectrow,selectcol as integer Public Mcro(50) AS String SUB 文件() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "打开 ", "", False, True,33,"" AddCustomCommandBarPopup1 "新建 ", "BB", False, True,18,"" AddCustomCommandBarPopup2 ("另存为 ") Set cmb = Application.CommandBars("CELL").Controls("另存为 ") AddCustomCommandBarPopup3 cmb, "OFFICE 97-2003文件 ", "DD", False, True, 3, "" Set cmb = Application.CommandBars("CELL").Controls("另存为 ") AddCustomCommandBarPopup4 cmb, "OFFICE 2007工作表 " Set cmb = Application.CommandBars("CELL").Controls("另存为 ").Controls("OFFICE 2007工作表 ") AddCustomCommandBarPopup3 cmb, "office 2007启用宏的工作表 ", "FF", False, True, 0, "" Set cmb = Application.CommandBars("CELL").Controls("另存为 ").Controls("OFFICE 2007工作表 ") AddCustomCommandBarPopup3 cmb, "OFFICE 2007工作表 ", "GG", False, True, 253, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 公式() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "文本 ", "WB", False, True,7,"" AddCustomCommandBarPopup2 ("名称 ") Set cmb = Application.CommandBars("CELL").Controls("名称 ") AddCustomCommandBarPopup3 cmb, "定义 ", "DY", False, True, 0, "" Set cmb = Application.CommandBars("CELL").Controls("名称 ") AddCustomCommandBarPopup4 cmb, "单元格 " Set cmb = Application.CommandBars("CELL").Controls("名称 ").Controls("单元格 ") AddCustomCommandBarPopup3 cmb, "合并 ", "HB", False, True, 592, "" Set cmb = Application.CommandBars("CELL").Controls("名称 ").Controls("单元格 ") AddCustomCommandBarPopup3 cmb, "从属 ", "CS", False, True, 564, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 开发工具() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "插入 ", "CR", False, True,548,"" AddCustomCommandBarPopup1 "模式 ", "MS", False, True,590,"" AddCustomCommandBarPopup2 ("宏 ") Set cmb = Application.CommandBars("CELL").Controls("宏 ") AddCustomCommandBarPopup3 cmb, "录制宏 ", "LZH", False, True, 205, "" Set cmb = Application.CommandBars("CELL").Controls("宏 ") AddCustomCommandBarPopup3 cmb, "安全性 ", "AQX", False, True, 279, "" Set cmb = Application.CommandBars("CELL").Controls("宏 ") AddCustomCommandBarPopup3 cmb, "查看代码 ", "CKDM", False, True, 289, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 窗口() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "并列比较 ", "BLBJ", False, True,250,"" AddCustomCommandBarPopup1 "冻结 ", "DJ", False, True,288,"" AddCustomCommandBarPopup1 "隐藏 ", "YC", False, True,237,"" AddCustomCommandBarPopup1 "拆分 ", "CF", False, True,292,"" AddCustomCommandBarPopup1 "取消冻结 ", "QXDJ", False, True,232,"" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 工具() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "拼写检查 ", "PXJC", False, True,246,"" AddCustomCommandBarPopup2 ("保护 ") Set cmb = Application.CommandBars("CELL").Controls("保护 ") AddCustomCommandBarPopup3 cmb, "保护工作表 ", "BHGZB", False, True, 277, "" Set cmb = Application.CommandBars("CELL").Controls("保护 ") AddCustomCommandBarPopup3 cmb, "保护工作薄 ", "BHGZBB", False, True, 312, "" Set cmb = Application.CommandBars("CELL").Controls("保护 ") AddCustomCommandBarPopup3 cmb, "工作表菜单栏 ", "gzbcdl", False, True, 142, "" Set cmb = Application.CommandBars("CELL").Controls("保护 ") AddCustomCommandBarPopup3 cmb, "图表菜单栏 ", "tbgjl", False, True, 164, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 常用() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "格式 ", "gs", False, True,108,"" AddCustomCommandBarPopup1 "数据透视表 ", "sjtsb", False, True,125,"" AddCustomCommandBarPopup1 "图表 ", "tb", False, True,127,"" AddCustomCommandBarPopup1 "审阅 ", "sy", False, True,124,"" AddCustomCommandBarPopup1 "窗体 ", "ct", False, True,128,"" AddCustomCommandBarPopup1 "停止录制 ", "tzlz", False, True,185,"" AddCustomCommandBarPopup2 ("外部数据 ") Set cmb = Application.CommandBars("CELL").Controls("外部数据 ") AddCustomCommandBarPopup3 cmb, "公式审核 ", "gssh", False, True, 129, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ") AddCustomCommandBarPopup3 cmb, "全屏显示 ", "qpxs", False, True, 130, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ") AddCustomCommandBarPopup3 cmb, "循环引用 ", "xhye", False, True, 132, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ") AddCustomCommandBarPopup4 cmb, "VisualBasic " Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "Web ", "web", False, True, 173, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "控件工具箱 ", "kjgjx", False, True, 174, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "退出设计模式 ", "tcsjms", False, True, 162, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "刷新 ", "sx", False, True, 165, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "监视窗口 ", "jsck", False, True, 168, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "数据透视表字段列表 ", "sjtsbzdb", False, True, 170, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "边框 ", "bk", False, True, 178, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "保护 ", "bh", False, True, 160, "" Set cmb = Application.CommandBars("CELL").Controls("外部数据 ").Controls("VisualBasic ") AddCustomCommandBarPopup3 cmb, "文本到语音 ", "wbdyy", False, True, 164, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 列表() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "并排比较 ", "bpbj1", False, True,180,"" AddCustomCommandBarPopup1 "绘图 ", "bpbj2", False, True,182,"" AddCustomCommandBarPopup1 "数据透视图菜单 ", "bpbj3", False, True,184,"" AddCustomCommandBarPopup2 ("工作簿标签 ") AddCustomCommandBarPopup2 ("单元格 ") Set cmb = Application.CommandBars("CELL").Controls("单元格 ") AddCustomCommandBarPopup3 cmb, "列 ", "bpbj6", False, True, 190, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ") AddCustomCommandBarPopup3 cmb, "行 ", "bpbj7", False, True, 192, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ") AddCustomCommandBarPopup3 cmb, "单元格 ", "bpbj8", False, True, 194, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ") AddCustomCommandBarPopup3 cmb, "柱形图 ", "bpbj9", False, True, 196, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ") AddCustomCommandBarPopup3 cmb, "行 ", "bpbj10", False, True, 198, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ") AddCustomCommandBarPopup4 cmb, "工作表 " Set cmb = Application.CommandBars("CELL").Controls("单元格 ").Controls("工作表 ") AddCustomCommandBarPopup3 cmb, "XLM 单元格 ", "bpbj12", False, True, 202, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ").Controls("工作表 ") AddCustomCommandBarPopup3 cmb, "文档 ", "bpbj13", False, True, 204, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ").Controls("工作表 ") AddCustomCommandBarPopup3 cmb, "桌面 ", "bpbj14", False, True, 206, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ").Controls("工作表 ") AddCustomCommandBarPopup3 cmb, "非默认拖放 ", "bpbj15", False, True, 208, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ").Controls("工作表 ") AddCustomCommandBarPopup3 cmb, "自动填充 ", "bpbj16", False, True, 210, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ").Controls("工作表 ") AddCustomCommandBarPopup3 cmb, "按钮 ", "bpbj17", False, True, 212, "" Set cmb = Application.CommandBars("CELL").Controls("单元格 ").Controls("工作表 ") AddCustomCommandBarPopup3 cmb, "对话框 ", "bpbj18", False, True, 214, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 序列() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "图形区 ", "bpbj20", False, True,218,"" AddCustomCommandBarPopup1 "基底和墙纸 ", "bpbj21", False, True,220,"" AddCustomCommandBarPopup1 "趋势线 ", "bpbj22", False, True,222,"" AddCustomCommandBarPopup1 "图表 ", "bpbj23", False, True,224,"" AddCustomCommandBarPopup1 "设置数据系列格式 ", "bpbj24", False, True,226,"" AddCustomCommandBarPopup2 ("设置数据轴格式 ") Set cmb = Application.CommandBars("CELL").Controls("设置数据轴格式 ") AddCustomCommandBarPopup3 cmb, "设置图例项格式 ", "bpbj26", False, True, 230, "" Set cmb = Application.CommandBars("CELL").Controls("设置数据轴格式 ") AddCustomCommandBarPopup3 cmb, "编辑栏 ", "bpbj27", False, True, 232, "" Set cmb = Application.CommandBars("CELL").Controls("设置数据轴格式 ") AddCustomCommandBarPopup3 cmb, "数据透视表上下文菜单 ", "bpbj28", False, True, 234, "" Set cmb = Application.CommandBars("CELL").Controls("设置数据轴格式 ") AddCustomCommandBarPopup3 cmb, "查询 ", "bpbj29", False, True, 236, "" Set cmb = Application.CommandBars("CELL").Controls("设置数据轴格式 ") AddCustomCommandBarPopup3 cmb, "查询布局 ", "bpbj30", False, True, 238, "" Set cmb = Application.CommandBars("CELL").Controls("设置数据轴格式 ") AddCustomCommandBarPopup4 cmb, "自动计算 " Set cmb = Application.CommandBars("CELL").Controls("设置数据轴格式 ").Controls("自动计算 ") AddCustomCommandBarPopup3 cmb, "对象/图形区 ", "bpbj32", False, True, 242, "" Set cmb = Application.CommandBars("CELL").Controls("设置数据轴格式 ").Controls("自动计算 ") AddCustomCommandBarPopup3 cmb, "标题栏(图表) ", "bpbj33", False, True, 244, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 框架() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "数据透视图快捷菜单 ", "bpbj35", False, True,248,"" AddCustomCommandBarPopup1 "拼音信息 ", "bpbj36", False, True,250,"" AddCustomCommandBarPopup1 "自动合计 ", "bpbj37", False, True,252,"" AddCustomCommandBarPopup1 "选择性粘贴下拉框 ", "bpbj38", False, True,254,"" AddCustomCommandBarPopup2 ("查找格式 ") Set cmb = Application.CommandBars("CELL").Controls("查找格式 ") AddCustomCommandBarPopup3 cmb, "替换格式 ", "bpbj40", False, True, 258, "" Set cmb = Application.CommandBars("CELL").Controls("查找格式 ") AddCustomCommandBarPopup3 cmb, "列表区域快捷菜单 ", "bpbj41", False, True, 260, "" Set cmb = Application.CommandBars("CELL").Controls("查找格式 ") AddCustomCommandBarPopup3 cmb, "列表区域布局快捷菜单 ", "bpbj42", False, True, 262, "" Set cmb = Application.CommandBars("CELL").Controls("查找格式 ") AddCustomCommandBarPopup3 cmb, "XML 区域快捷菜单 ", "bpbj43", False, True, 264, "" Set cmb = Application.CommandBars("CELL").Controls("查找格式 ") AddCustomCommandBarPopup3 cmb, "列表区域布局快捷菜单 ", "bpbj44", False, True, 266, "" Set cmb = Application.CommandBars("CELL").Controls("查找格式 ") AddCustomCommandBarPopup3 cmb, "艺术字 ", "bpbj45", False, True, 268, "" AddCustomCommandBarPopup2 ("图片 ") Set cmb = Application.CommandBars("CELL").Controls("图片 ") AddCustomCommandBarPopup3 cmb, "阴影设置 ", "bpbj47", False, True, 272, "" AddCustomCommandBarPopup2 ("三维设置 ") Set cmb = Application.CommandBars("CELL").Controls("三维设置 ") AddCustomCommandBarPopup3 cmb, "绘图画布 ", "bpbj49", False, True, 276, "" Set cmb = Application.CommandBars("CELL").Controls("三维设置 ") AddCustomCommandBarPopup3 cmb, "组织结构图 ", "bpbj50", False, True, 278, "" Set cmb = Application.CommandBars("CELL").Controls("三维设置 ") AddCustomCommandBarPopup3 cmb, "图示 ", "bpbj51", False, True, 280, "" Set cmb = Application.CommandBars("CELL").Controls("三维设置 ") AddCustomCommandBarPopup3 cmb, "墨迹绘图与书写 ", "bpbj52", False, True, 282, "" Set cmb = Application.CommandBars("CELL").Controls("三维设置 ") AddCustomCommandBarPopup3 cmb, "墨迹注释 ", "bpbj53", False, True, 284, "" AddCustomCommandBarPopup2 ("边框 ") Set cmb = Application.CommandBars("CELL").Controls("边框 ") AddCustomCommandBarPopup3 cmb, "边框 ", "bpbj55", False, True, 288, "" Set cmb = Application.CommandBars("CELL").Controls("边框 ") AddCustomCommandBarPopup4 cmb, "绘图边框 " Set cmb = Application.CommandBars("CELL").Controls("边框 ").Controls("绘图边框 ") AddCustomCommandBarPopup3 cmb, "图表类型 ", "bpbj57", False, True, 292, "" Set cmb = Application.CommandBars("CELL").Controls("边框 ").Controls("绘图边框 ") AddCustomCommandBarPopup3 cmb, "图案 ", "bpbj58", False, True, 294, "" Set cmb = Application.CommandBars("CELL").Controls("边框 ").Controls("绘图边框 ") AddCustomCommandBarPopup3 cmb, "字体颜色 ", "bpbj59", False, True, 296, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 填充颜色() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "线条颜色 ", "bpbj61", False, True,300,"" AddCustomCommandBarPopup2 ("绘图与书写笔 ") Set cmb = Application.CommandBars("CELL").Controls("绘图与书写笔 ") AddCustomCommandBarPopup3 cmb, "批注笔 ", "bpbj63", False, True, 304, "" Set cmb = Application.CommandBars("CELL").Controls("绘图与书写笔 ") AddCustomCommandBarPopup3 cmb, "绘图和书写笔 ", "bpbj64", False, True, 306, "" Set cmb = Application.CommandBars("CELL").Controls("绘图与书写笔 ") AddCustomCommandBarPopup3 cmb, "注释笔 ", "bpbj65", False, True, 308, "" Set cmb = Application.CommandBars("CELL").Controls("绘图与书写笔 ") AddCustomCommandBarPopup3 cmb, "叠放次序 ", "bpbj66", False, True, 310, "" Set cmb = Application.CommandBars("CELL").Controls("绘图与书写笔 ") AddCustomCommandBarPopup3 cmb, "微移 ", "bpbj67", False, True, 312, "" Set cmb = Application.CommandBars("CELL").Controls("绘图与书写笔 ") AddCustomCommandBarPopup3 cmb, "对齐或分布 ", "bpbj68", False, True, 314, "" AddCustomCommandBarPopup2 ("旋转或翻转 ") Set cmb = Application.CommandBars("CELL").Controls("旋转或翻转 ") AddCustomCommandBarPopup3 cmb, "直线 ", "bpbj70", False, True, 318, "" Set cmb = Application.CommandBars("CELL").Controls("旋转或翻转 ") AddCustomCommandBarPopup4 cmb, "连接符 " Set cmb = Application.CommandBars("CELL").Controls("旋转或翻转 ").Controls("连接符 ") AddCustomCommandBarPopup3 cmb, "自选图形 ", "bpbj72", False, True, 322, "" Set cmb = Application.CommandBars("CELL").Controls("旋转或翻转 ").Controls("连接符 ") AddCustomCommandBarPopup3 cmb, "标注 ", "bpbj73", False, True, 324, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 流程图() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "箭头总汇 ", "bpbj75", False, True,328,"" AddCustomCommandBarPopup1 "星与旗帜 ", "bpbj76", False, True,330,"" AddCustomCommandBarPopup1 "基本形状 ", "bpbj77", False, True,332,"" AddCustomCommandBarPopup1 "插入形状 ", "bpbj78", False, True,334,"" AddCustomCommandBarPopup2 ("形状 ") Set cmb = Application.CommandBars("CELL").Controls("形状 ") AddCustomCommandBarPopup3 cmb, "非活动图表 ", "bpbj80", False, True, 338, "" Set cmb = Application.CommandBars("CELL").Controls("形状 ") AddCustomCommandBarPopup3 cmb, "Excel 控件 ", "bpbj81", False, True, 340, "" AddCustomCommandBarPopup1 "曲线 ", "bpbj82", False, True,342,"" AddCustomCommandBarPopup1 "曲线结点 ", "bpbj83", False, True,344,"" AddCustomCommandBarPopup1 "曲线段 ", "bpbj84", False, True,346,"" AddCustomCommandBarPopup1 "图片上下文菜单 ", "bpbj85", False, True,348,"" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB OLE对象() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "ActiveX 控件 ", "bpbj87", False, True,352,"" AddCustomCommandBarPopup1 "艺术字上下文菜单 ", "bpbj88", False, True,354,"" AddCustomCommandBarPopup1 "旋转方式 ", "bpbj89", False, True,356,"" AddCustomCommandBarPopup1 "连接符 ", "bpbj90", False, True,358,"" AddCustomCommandBarPopup1 "脚本标记快捷菜单 ", "bpbj91", False, True,360,"" AddCustomCommandBarPopup1 "Canvas Popup ", "bpbj92", False, True,362,"" AddCustomCommandBarPopup1 "Organization Chart Popup ", "bpbj93", False, True,364,"" AddCustomCommandBarPopup2 ("图表 ") Set cmb = Application.CommandBars("CELL").Controls("图表 ") AddCustomCommandBarPopup3 cmb, "选择 ", "bpbj95", False, True, 368, "" Set cmb = Application.CommandBars("CELL").Controls("图表 ") AddCustomCommandBarPopup4 cmb, "版式 " Set cmb = Application.CommandBars("CELL").Controls("图表 ").Controls("版式 ") AddCustomCommandBarPopup3 cmb, "符号栏 ", "bpbj97", False, True, 372, "" Set cmb = Application.CommandBars("CELL").Controls("图表 ").Controls("版式 ") AddCustomCommandBarPopup3 cmb, "任务窗格 ", "bpbj98", False, True, 374, "" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 添加命令() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "内置菜单 ", "bpbj100", False, True,378,"" AddCustomCommandBarPopup1 "剪贴板 ", "bpbj101", False, True,380,"" AddCustomCommandBarPopup1 "信封 ", "bpbj102", False, True,382,"" AddCustomCommandBarPopup1 "联机会议 ", "bpbj103", False, True,384,"" AddCustomCommandBarPopup1 "SnagIt ", "bpbj104", False, True,386,"" Popup_Menu.ShowPopup pt.X, pt.Y END SUB SUB 关于() Clear_menu '清除弹出菜单上菜单项 Dim cmb As CommandBarControl AddCustomCommandBarPopup1 "我的VBA ", "WDVBA", False, True,400,"" AddCustomCommandBarPopup1 "帮助 ", "BZ", False, True,402,"" Popup_Menu.ShowPopup pt.X, pt.Y END SUB Public Sub ClearBar() '清除Cell弹出式菜单中菜单项 Dim ctr As CommandBarControl With Popup_Menu .Enabled = True For Each ctr In .Controls ctr.Delete Next End With End Sub Sub RemoveCustomMenu() '恢复系统菜单的各弹出菜单 Application.CommandBars("CELL").Reset End Sub Sub clear_menu() Dim cmb As Object For Each cmb In Application.CommandBars("cell").Controls Application.CommandBars("cell").Controls(cmb.Caption).Delete Next End Sub Sub AddCustomCommandBarPopup1(Caption As String, Macro As String, NewGroup As Boolean, Enable As Boolean, FId As Integer, ShortT As String) '添加一级菜单选项 Dim cbb As CommandBarButton Set cbb = Application.CommandBars("CELL").Controls.Add(msoControlButton) cbb.Caption = Caption If FId > 0 Then cbb.faceid = FId If ShortT "" Then cbb.ShortcutText = ShortT cbb.OnAction = Macro cbb.BeginGroup = NewGroup cbb.Enabled = Enable End Sub Function AddCustomCommandBarPopup2(Caption As String) As CommandBarControl '添加子菜单项 Dim cmb As CommandBarControl Set cmb = Application.CommandBars("CELL").Controls.Add(msoControlPopup) cmb.Caption = Caption cmb.Visible = True Set AddCustomCommandBarPopup2 = cmb End Function Sub AddCustomCommandBarPopup3(cmb As Object, Caption As String, Macro As String, NewGroup As Boolean, Enable As Boolean, FId As Integer, ShortT As String) '添加一级菜单选项 Dim cbc As CommandBarButton Set cbc = cmb.Controls.Add(msoControlButton) cbc.Caption = Caption If FId > 0 Then cbc.faceid = FId If ShortT "" Then cbc.ShortcutText = ShortT cbc.OnAction = Macro cbc.BeginGroup = NewGroup cbc.Enabled = Enable End Sub Function AddCustomCommandBarPopup4(cmd As CommandBarControl, Caption As String) As CommandBarControl '添加子菜单项 Dim cme As CommandBarControl Set cme = cmd.Controls.Add(msoControlPopup) cme.Caption = Caption cme.Visible = True Set AddCustomCommandBarPopup4 = cme End Function '********本模块结束********** '*************************** '* 窗口模块 * '*************************** Private menu(1 To 50) As New Menu_Class '定义50个cMenu菜单类型 Private Sub UserForm_Initialize() hForm = FindWindow(vbNullString, Me.Caption) '程序中需要用到窗口句柄,先获得它 MenuCount = 0 Set Popup_Menu = Application.CommandBars("Cell") '程序中需指定一个弹出式菜单,我们指定为单元格右键菜单,您可另外指定一个弹出式菜单,请注意,是弹出式菜单 Dim bar As Control Set bar = Me.Controls.Add("Forms.image.1", "IM1", Visible) With bar .Visible = True .Left = -100 .Top = 0 .Height = 20 .Width = 20 .BackColor = &HFFC0C0 .BorderStyle = 0 End With '*************** Set bar = Me.Controls.Add("Forms.image.1", "IM2", Visible) With bar .Visible = True .Left = -100 .Top = 0 .Height = 20 .Width = 20 .BackColor = &HFFC0C0 .BorderStyle = 0 End With '*************** Set bar = Me.Controls.Add("Forms.image.1", "FormMenuBar", Visible) With bar .Visible = True .Left = -1 .Top = -1 .Height = 20 .Width = 2000 .BackColor = &HFFC0C0 .BorderStyle = 0 End With menu(1).AddMenu Me,"文件","文件","" menu(2).AddMenu Me,"公式","公式","" menu(3).AddMenu Me,"开发工具","开发工具","" menu(4).AddMenu Me,"窗口","窗口","" menu(5).AddMenu Me,"工具","工具","" menu(6).AddMenu Me,"常用","常用","" menu(7).AddMenu Me,"列表","列表","" menu(8).AddMenu Me,"序列","序列","" menu(9).AddMenu Me,"框架","框架","" menu(10).AddMenu Me,"填充颜色","填充颜色","" menu(11).AddMenu Me,"流程图","流程图","" menu(12).AddMenu Me,"OLE对象","OLE对象","" menu(13).AddMenu Me,"添加命令","添加命令","" menu(14).AddMenu Me,"关于","关于","" end sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Dim i As Integer For i = LBound(menu) To UBound(menu) Set menu(i) = Nothing Next Popup_Menu.Enabled = True Popup_Menu.Reset end sub '********本模块结束**********

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧