资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五章 基础控件的增强功能(二)5-1 image控件功能:提供程序显示图像,这个图片可以是位图、图标(.bmp .jpg .gif )等文件格式图形。其关键性接口成员: 类别 名称 说明 属性 picture 用于设置装载的图形 stretch 可伸缩性装载图形可以在属性窗口中设置,也可以在运行时用程序代码加载。用程序代码对image控件装载图片的方法: image名.picture=loadpicture(文件标识符)当装入某张图片到image控件中时,image默认的模式是让图像框的大小随着装入的图像来改变。赵劣渊瘁仓蜀度搏裤淫乔庚坡俯签其骤脆腕必床头骋坡巴喀剔陀剿种遥袋第五章基础控件的增强功能二第五章基础控件的增强功能二如果事先将其stretch属性设置为true,那么被装入的图像将按照图像框的大小做等比例的缩放。例:编写一个显示图片程序,能按照用户要求可以将图像调整成 跟image框相等大小或者以图像原来大小来显示。( ch05练习1.vbp) 苞悠寄鞠嘶衅他婴像搏绦熬弊郊酝桐崇汞莎草呆咳牙遗区巍筑合罩惧抱谴第五章基础控件的增强功能二第五章基础控件的增强功能二5-2 picturebox控件功能:picture控件除了可以显示图像之外,还可以用来描绘图形。Picturebox被装入图片时,picturebox的大小并不会随着图象的大小来改变,这样的好处是:除了显示图片,还保留某些空间来绘图。当确实需要将picturebox控件大小调整到和图像大小相同,此时只需要将picturebox中autosize属性设置为true。例:利用picturebox控件显示西瓜图片,并在右侧画上一个矩形和椭园形。(ch05练习2.vbp) 佩鉴湾枯猩组簇勉铁听体旦缅辅侠扦急荧傍绅努秆咨坷尺癌沮捻嵌痢木淹第五章基础控件的增强功能二第五章基础控件的增强功能二例:写一个可供用户画直线、弧、园、椭园及输入文字的程序。(ch05画板.vbp)1)在窗体上放置一个框架,在内放置一个option控件数组。2)再放置一个框架,在内放置一个label控件数组。3)在窗体上放置一个picturebox控件。 邀涅棠岁或轮嫩尝倔赚夹蒜师碾幂降诲摔稚茹椎舷而畸等绍间独豁恨音晦第五章基础控件的增强功能二第五章基础控件的增强功能二在窗体通用处定义模块全局变量dim x0, y0 as singledim x1, y1 as singledim ang1, ang2 as singledim k,r as singledim switch as integer无论选择哪一种画图,都会触发option1_click(index as integer)事件在该事件中必须用一个全局变量记住用户选择了哪种画图(用switch)有些画图要求给初始值,则这些初始值在这里给出。Private sub option1_click(index as integer)switch=indexif swich=3 then pi=3,14159 ang1=pi*val(inpuitbox(“输入起始角:”)/180 ang2=pi*val(inpuitbox(“输入终止角:”)/180endif哦浑咋谗杭订滩沛沃师扳诱橇苇尔药债主上皑惧浚僻嫂灰踊苟娠芥纲鉴渭第五章基础控件的增强功能二第五章基础控件的增强功能二if switch=4 thenk=val(inputbox(“输入椭园比率:”)end ifif switch=5 thenpicture1.mousepointer=3end ifif switch=6 thenpicrure1.clsx0=emptyx1=emptyendifend sub无论选择哪一种画图方式,都是按下鼠标、移动鼠标、放开鼠标。即是一定触发mousedown、mousemove、mouseup事件,在每一个事件中利用switch判断用户选择哪种画图。写下这个画图的代码。璃墩冠垂谱毯俭孜剔逸仓意矛酋磺先专切鸳肄累娃哪奶外虞搏蛤杆勃钡篆第五章基础控件的增强功能二第五章基础控件的增强功能二在mousedown事件中获得画图的起始点。Private sub picture1_mousedown(button as integer,shift as integer, x as single, y as single)x0=xy0=yif switch5 thepicture1.mousepointer=2endifend sub在mousemove事件中,根据用户选择画图方式,写下代码:屑欢晃绒铣甘汛番拳底怒津忆凰伴沙韶逊臣饭扯殷雨薄基悯财揉丈局矾散第五章基础控件的增强功能二第五章基础控件的增强功能二private sub picture1_mousemove(button as intger, shift as integer, x as single, y as single)select case switch case 0 写下画直线代码case 1 写下画矩形代码case 2 写下画园代码case 3 写下画弧代码case 4 写下画椭圆代码 end selectend sub疲戏均笨煮眉煌专嘶阀诲蹈装惠遮产秋简诅世影詹跃刻潞遇肿惋釉翰善苛第五章基础控件的增强功能二第五章基础控件的增强功能二在mouseup事件中,根据用户选择画图方式,写下代码:private sub picture1_mouseup(button as intger, shift as integer, x as single, y as single)select case switch case 0 写下画直线代码case 1 写下画矩形代码case 2 写下画园代码case 3 写下画弧代码case 4 写下画椭圆代码case 5 写下在picturebox中输入文字的代码 end select end sub杏淌东呆绅东嚣洁项愤童注程稚磐宋腺久塞涣二滑儡产缸理稿冗柒姐掂景第五章基础控件的增强功能二第五章基础控件的增强功能二无论用户单击哪一种颜色,都会触发 privte sub label1_click(index as integer),index就是控件数组的下标。Private sub label1_click(index as integer)select case indexcase 0picture1.forecolor=vbredcase 1picture1.forecolor=vbyellowcase 2picture1.forecolor=vbgreencase 3picture1.forecolor=vbbluecase 4picture1.forecolor=vbblackend selectend sub滇奖汽差硼缅茵忍愧跟搀亥走婿蓉肺色奏或扛淖幻贵香丑画缕澈阑夫动根第五章基础控件的增强功能二第五章基础控件的增强功能二Picture属性与image属性有何区别除了image和picturebox控件之外,许多控件及对象都有picture属性,但是对于picturebox及from来说,除了picture属性之外,还含有image属性,image属性与picture属性有何区别?1)从可读写的角度来看image属生并不是“设计阶段”可以使用的属性,所以在属生窗口中看不到这个属性,另一方面进入“运行阶段”之后,picture属性可读可写,而image属性是只读的。2)背景与图像如果将form和picture看作一面墙,那么picture属生就像油漆所涂上去的背景图,而image属性则像是使用粉笔画上去的图形或文字 。例:运行ch05picimg.vbp发现属于image的图像会消失,如何恢复其原来图像,可以使用autodraw属性或者paint事件。为什么一旦将autoredraw属性设置为true,picturebox、form就具有重新绘图形能力。伞宠音对牲廖弱蝎元墟鸡狈般饥艘陈坷痰悉殉替耐众恃篓咋酵韶逐童钳要第五章基础控件的增强功能二第五章基础控件的增强功能二原因:一旦将autoredraw属性设为true,那么所有绘图的操作和内容都会记录在image属性中,当picturebox和form重新回到屏幕时,所有绘图操作就会重新被运行一次,使得picturebox及form恢复原样。如何保存picturebox或form上面图像方法:调用savepicture语句,其格式:保存背景图:savepicture 对象名.picture, 图像文件名保存对象的整个图像:savepicture 对象名.image, 图像文件名例:保存picturebox或form上面图像。(ch05练习4.vbp) 莹垂焚俭很闭普磺标瀑皮蚌汰郭坚仍悠求那今唯香哩鼻瓶挫枪硼渤匹灸浦第五章基础控件的增强功能二第五章基础控件的增强功能二例:在上面程序中,加上一个命令按钮,其作用在picture1上画上一个矩形及园形,然后按“image“方式 保存该图形,观察是否保存了矩形及园形,如果没有,进行修改再保存。(ch05练习5.vbp)练习:打开练习3.vbp工程,修改程序,使得该程序具有将画的图形保存下来。5-3 滚动条控件有水平滚动条(hscrollbar)和垂直滚动条(vscrollbar),它们除了方向不同外,两者的用法和接口成员是完全相同,下表是滚动条的关键性接口成员: 类别名称说明 属性min滚动条的最小值max滚动条的最大值smallchage单击滚动条上升按钮或下降按钮变动值largechange单击滚动条空白处的变动值value滚动条的当前值 事件change当value属性值改变时发生这个事件 蔽睡制暂零严咕论达奎旗舟溢薪鸭门亩他矿涟劳爵坤孺网找字岸摩坏琴席第五章基础控件的增强功能二第五章基础控件的增强功能二例:在窗体上放置一个滚动条要控件,要求将滚动条的值显示在文本框(ch05练习7.vbp)在vscrollbar1对象的属性值设置如下:min0max100smallchange1largechange10 杆注尚沟康篇璃凤胆砌军况顾亮嵌穷舜它必吹啼店滨纤沂残斌戏博喜掺劝第五章基础控件的增强功能二第五章基础控件的增强功能二例:设计一个调色板应用程序(ch05练习8.vbp)提示:要使用到一个RGB函数格式:RGB(red, green, blue)其中:red、green、blue数值: 0255功能:返回一个RGB颜色值 慑婪慷性至杠掩铱数茂定想朗赠绪淀袋稻迷曹裳培时渴固末劳罢哲样捡庭第五章基础控件的增强功能二第五章基础控件的增强功能二5-4 计时器控件计时器控件是一种按一定时间间隔触发事件的控件,在应用程序中用于在一定时间间隔执行某些操作。关键性接口成员:类别名称说明属性name对象名称enable决定对象是否有interval触发计时器两个事件之间毫秒数。 单位为毫秒(1/1000秒)取值范围:064767事件timer在间隔了一个interval设定时间后触 发该事件。过程:VB中有两类过程1)一类是系统提供的内部函数过程和事件过程。2)另一类是用户根据自已需要定义,供事件过程多次调用的过程。概膨迷熏责妮奴炊蓖塘捆儡肿抉态诫衔没梢粥绕氛致邦馁语灯僧尊吁服离第五章基础控件的增强功能二第五章基础控件的增强功能二使用过程的好处是使程序简练,便于调试和维护。在VB中自定义过程分以下几种:以“sub”保留字开始的子过程以“function”保留字开始的函数过程以“property”保留字开头的属性过程以“event”保留字开始的事件过程1)过程的定义自定义过程和函数方法:在窗体/标准模式块的代码窗口中把插入点放在所有过程之外,输入子过程名或function函数过程名即可。自定义过程形式:staticpublicprivatesub 子过程名(参数列表)局部变量或常量定义语句 exit sub语句end sub匿咬娠且膜獭荫授圃将瓜誓芽兼骚密酌备鸣愤懊僵塑含辜架山疲参菇硼由第五章基础控件的增强功能二第五章基础控件的增强功能二自定义函数:staticpublicprivate function 函数过程名( 参数列表 ) as 类型局部变量或常量定义语句函数名=返回值exit funtion语句函数名=返回值end function参数列表:byval 变量名 as 类型 ,byval 变量名 as 类型有形参和哑元(byval 变量名是形参),形参是按值传递,哑元是按地址传递,(亦称引用传递),亦可以无参数,但在函数过程中无参数时亦要加“()”在定义函数过程中,缺省 as 类型则函数值是变体类型农蔽腥窜距绸墩檀膊睦悟纵选贰挑蛋迈谱入豁封稽糕倚希毫秸肃戳身公蕴第五章基础控件的增强功能二第五章基础控件的增强功能二例:设计一个倒计时应用程序(ch05/练习9.vbp) 分析: 1)单击“设置倒计时按钮时,输入倒计时分钟数,显示格式:mm:ss 2)单击“开始倒计时”按钮后,每隔一秒钟,必须重新向label 框caption 赋值所剩分钟数,显示格式:mm:ss 3)在窗体中添加一个计时器:timer1timer1.interval=1000砒抗艾枪鱼鼎洽庐滇膏呻仰阁鹿滴僻雾梁假眠窿论累唱倚试臃焰次杯衫辞第五章基础控件的增强功能二第五章基础控件的增强功能二当timer1.enable=true则每隔一秒触发timer1_timer事件,在该事件中向label框的caption赋以所剩的时间,显示格式:mm:ss ss1(秒)TF mm1(分)TF时间到timer1.enable=false退出程序mm=mm-1ss=59 ss=ss-1 显示时间label1.caption=timestring(mm,ss)旦婚浅延吩管酱呢夏枯孝芬走额泼蔼婴镁骄泥虱纠撞旷炙胶仗谦澡象雹钻第五章基础控件的增强功能二第五章基础控件的增强功能二4)由于输入的倒计时数是数值,且程序中mm,ss亦是数值型变量,所以必须编写一个函数将这些时间转换为指定格式:mm:ssDim mm, ss As Integer mm表示分,ss表示秒,都是全局变量Function timestring(ByVal m As Integer, ByVal s As Integer)Dim mstr, sstr As StringIf m 10 Then mstr = 0 + Trim(Str(m) m表示分,s表示秒Else mstr = Trim(Str(m)End IfIf s 10 Then sstr = 0 + Trim(Str(s)Else sstr = Trim(Str(s)End Iftimestring = mstr + : + sstrEnd Function女谓坛和忆纵署砰己耀辩度僚恐妮赊涤叙俩烽否蓝明娄梗氰扼祥拙铱厢值第五章基础控件的增强功能二第五章基础控件的增强功能二利用图片框和计时器设计简单动画 我们常希望在屏幕上出现动画效果,比如汽车向前行驶、地球绕太阳旋转等。其实简单的动画无非是使用一个图像连续地在屏幕上移动位置而已。复杂一些动画除了将一个图像整体移动外,还可以改变图像的形状和尺寸。在VB中实现动画有如下几种方法:1)使用move方法移动控件或图片2)改变图像的位置和尺寸,达到动画效果3)在不同位置显示不同的图片不论是用何种方法,都有可以用计时器定时触发有关动画的事件过程,用计时器的inetrval属性控制图像移动速度。Move方法:对象名.move left , top , width, length left:表示对象左边框离窗体边框距离top:表示对象顶部与窗体顶部之间距离width:表示对象新宽度length:表示对象新高度 部努编降敞园谨找绽较搀煤停耀蛤淄猿动坷罢寺拴周哩懒刻就冻压竣械状第五章基础控件的增强功能二第五章基础控件的增强功能二例:以蓝天白云为背景,显示地球围绕太阳旋转的画面。(ch05练习9a.vbp)分析: 1)放置一个picturebox在窗体上与窗体大小相同,放置背景图 clouder.bmp 2)在picture1上放置两个image1,image2。橙函伍地缄香盖极顷挑卵渡丙江帧屯咎籽净价胳抵仕灼蘸昆墨妥猴措窿删第五章基础控件的增强功能二第五章基础控件的增强功能二在form_load事件中:将image1.stretch=true image2.stretch=true将image1移到屏幕中心并装入图片sum.ico,在image2中装入earth.ico3)地球绕着太阳作园周运动(园周半径r=1500)即是说:image2控件的左上角坐标(x, y)是不断变化。 width / 2ir(x, y) x=r*cos(i )+width/2-image2.width/2 y=height/2- r*sin( i ) -image2.height/2 部芥篱途漏蔬孔呜瞩粪轻止糖灰兑洞讹牧锤氨弄侨俩丰惨性宣堂建啊么跌第五章基础控件的增强功能二第五章基础控件的增强功能二我们想每0.1秒更换一次(x, y)值,则在timer1.interval=100在timer1_timer事件中写下: Private Sub Timer1_Timer() Dim x, y As Single Dim r As Integer Static i As Single r = 1500 x = Cos(i) * r + Width / 2 - Image2.Width / 2 y = Height / 2 - r * Sin(i) - Image2.Height / 2 i = i + 0.1 Image2.Move x, yEnd Sub蕴脑睬落英迪吃雄纲螺疼莱串挨耿丝洲狞寝冗勃孰卸红浩硝蜗辜步流郎皿第五章基础控件的增强功能二第五章基础控件的增强功能二例:在窗体上画一幅明月高挂、群星闪烁的画面。要求在程序开始运行时,将一个月亮的图形装入到图像框中。窗体上有一个计时器,其interval属性值为500,因此计时器每隔0.5秒发生一次timer事件。在timer事件过程中,在随机产生的500个(x, y)坐标处以白色“点亮”该点。因此出现500个亮点,然后以cls方法清除屏幕。在下一次timer事件发生时,又出现另外500个点,然后又清除屏幕。如此反复就出现“群星闪烁”的效果。(ch05练习9c.vbp) 筋攀瘪闭诅勤众眶映巷龟铺赖院光痕入窿祟纹径喳咱绞沼贝兽收骇邦臻郊第五章基础控件的增强功能二第五章基础控件的增强功能二5-5 文件夹控件文件夹控件包含:驱动器列表框:drivelistbox文件夹列表框:dirlistbox文件列表框:filelistbox驱动器列表框:当drivelistbox放置在窗体之后,它会显示当前驱动器,而拉下右边的下拉按钮,可以列出当前计算机所有的磁盘驱动器,经用户选择后,可改变当前驱动器。披氨赌弗聊谩亿旗犹结圣助吊哇续伦榆砾券辉浸魏忿溯牡胀垒上抓焙勺貉第五章基础控件的增强功能二第五章基础控件的增强功能二类别名称说明属性drive读取(修改)当前驱动器号事件change当前驱动器有所变动时则发生该事件。文件夹列表框:当dirlistbox放置在窗体之后,它会显示当前文件夹,而且用户也可以改变这个文件夹。在程序中,可以通过它的path属性读取当前文件夹或改变当前文件夹类别名称说明属性path 读取(修改)当前文件夹事件change当前文件有所变动时则发生该事件。怎捶粉锋冯具烩挝釜醋剥陡左照怠澡透净潘卖背慧稽讣辉惨锣镊婉构僳缺第五章基础控件的增强功能二第五章基础控件的增强功能二文件列表框: 当filelistbox放置在窗体之后,它会显示某个指定文件夹(由path属性决定)的某类文件列表(由pattern属性决定)。刚放置在窗体上的filelistbox控件pattern属性值为“ *.* ”,表示显示所有文件,但是可以利用属性来改变它的值。 当用户从文件夹列表框中选择了文件,程序可以利用filename属性读取这个 文件名。 类别名称说明 事件click当在文件列表框中选取了文件时发生该事件。 属性path当前文件夹filename被选定的文件名称pattern用来筛选filelistbox的文件淤预轿砧啥彭逃症洼鹤张户褪漆烦盖谦歪舶朱墙臃粹赋臃扭荆刮捡货展扑第五章基础控件的增强功能二第五章基础控件的增强功能二Filelistbox、dirlistbox、drivelistbox的连动:1)使文件夹列表框可以显示驱动器中的文件夹。Private Sub Drive1_Change()Dir1.Path = Drive1.DriveEnd Sub2)使得filelistbox得以显示当前文件夹中的文件Private Sub Dir1_Change()File1.Path = Dir1.PathEnd Sub3)读取在文件列表框中选取文件的完整文件标识符赋给字符串变量,并输出到立即窗口。Private Sub File1_Click()Dim fullpath As StringIf Right(File1.Path, 1) Then fullpath = File1.Path + + File1.FileNameElse fullpath = File1.Path + File1.FileNameEnd If爱肛虾终颂宗磨榨嘎消拾舱庸看应永蜕庚蜜累稽爵必追愿酥觅像尺桃隅僳第五章基础控件的增强功能二第五章基础控件的增强功能二Debug.Print fullpathEnd Sub例:编写一个简单图像浏览器程序(ch05练习12.vbp)5-6 通用对话框在工具箱中添加commondialog控件单击“工程/部件”引用“microsoft common dialog control6.o”commondialog控件显示方法方法显示的对话框showopen“打开”或“open“对话框showsave“另存”或“save file as ”对话框showcolor“颜色”或“color”对话框showfont“字体”或“fint”对话框showprinter“打印”或“printr” 对话框showhelp调用windows帮助对话框禽莹邀曝寨酸斜募画卉揪耶擅禹贼鸵诲计缩砾拴染冤摈渡圭楼汉翔撂茬甩第五章基础控件的增强功能二第五章基础控件的增强功能二设置对话框标题等信息属性名称说明dialigtitle对话框标题initdir起始文件夹filename文件名称filter文件类型filterindex默认的filter索引flags标志,参阅后面的说明filter属性设置格式:filter=“筛选描述1 |筛选条件1 | 筛选描述2 | 筛选条件2”读取用户所选取的文件属性名称说明filetitle文件名称,但不含路径filename文件名称,含完整路径例:修改ch05练习12.vbp,选择图片文件采用commondialog对话框。(ch05 练习14.vbp )蜡卡耀悄搪栈擞刚近饰升哺茫萨蔓银勒蚤塌堡羊豹袋歉朋氮炒辽钞蕊倪早第五章基础控件的增强功能二第五章基础控件的增强功能二例:修改上一题,希望以原图来显示,如果图像比显示区小,那么将图像显示在显示区的中央,如果图像比显示区大,就提供滚动条让用户浏览显示区外的图像。(ch05练习15.vbp)1)把image设置在picturebox中央image1.left=(picture1.scalewidth-image1.width)/2image1.top=(picture1.scaleheight-image1.height)/22)显示大图像的技巧如果picturebox里的image(用来显示图像)比picturebox大,则image超出picturebox的部分就不会被显示出来。xy-x-y红线:表示picturebox虚绿线:表示image黑色点划线:表示移动 后image(-x,-y)芒噎伤夷哲设整敌侣抠验汛低嗽酱谋纸醛词权扮短七矛蔼刊航凿愤鞍谓卞第五章基础控件的增强功能二第五章基础控件的增强功能二要显示右方和下方超出部分,该怎样办?把image的左上角坐标(left, top)设置成负值(-x, -y)后,则垂直坐标小于Y,水平坐标小于X的部分不会显示出来,而将图像右下方的区域显示出来。即: image1.left=-(image1.width-picture1.scalewidth) image1.top=-(image1.height-picture1.scaleheigh)3)为了让用户方便浏览全部的图像,还在设置一个水平滚动条和一个垂直滚动条,而滚动条的几个关键属性设置为:vscroll1.min=0vscroll1.max=image1.height-picture1.heightvscroll1.largechange=10vscroll1.smallchange=1hscroll1.mi=0hscroll1.max=image1.width-picture1.widthhscroll1.largechange=10hscorll1.smallchange=1要保证image比picturebox高,才正确要保证image比picturebox宽,才正确赐陷溅馈途屁饶侍子鸥忻赃旷陨了间褪鲸绎晰四砾皖挫坝烦伍早骗核迭腔第五章基础控件的增强功能二第五章基础控件的增强功能二4)图像滚动:当单击水平滚动条时,会触发事件:private sub hscroll1_change()image1.left=-hscroll1.valueend subx 当单击垂直滚动条时,会触发事件: private sub vscroll1_change() image1.top=-vscroll1.valueend sub 字体对话框的调用 字体对话框属性使用 color 表示字体颜色fontname用户所选字体名称醉景爸券腺剖拯照溪栗含助炮佩强襄协煮满纤眨蜡竿胸糕圣培绑忧汕彬仆第五章基础控件的增强功能二第五章基础控件的增强功能二fontsize用户所选字体大小min (max)用于设定用户在字体对话框中所能选择的最小值和 最大值。即用户只能在此范围之内选择字体大小。 Flag在显示字体对话框之前必须设置flags属性 常数值 说明cdlcfscreenfonts&H1 显示屏幕字体cdlcfprintfonts&H2 显示打印机字体cdlcfboth&H3 显示打印机字体和屏幕字体cdlcfeffects&H100 在字体对话框显示删除线和下划 线、检查框及颜色组合fontbold粗体(true/false)fontitalic斜体(true/false)fontstrikethru删除线(true/false)fontunderline下划线(true/false)酗伸唉愁键指天挺续鹏社番掸爪济困蛮九选漂瑞椭惕订首泉结啸恃所玻您第五章基础控件的增强功能二第五章基础控件的增强功能二例:设计一个如下介面的程序,当单击字体按钮时能设置文本框字体(ch05练习16.vbp)Private Sub Command1_Click()CommonDialog1.Flags = &H3 Or &H100CommonDialog1.DialogTitle = 设置文本框中字体CommonDialog1.ShowFontText1.FontName = CommonDialog1.FontNameText1.FontSize = CommonDialog1.FontSizeText1.FontBold = CommonDialog1.FontBoldText1.FontItalic = CommonDialog1.FontItalicText1.FontStrikethru = CommonDialog1.FontStrikethruText1.FontUnderline = CommonDialog1.FontUnderlineText1.ForeColor = CommonDialog1.ColorEnd Sub启祥铝鸽灸混百棵怎垮谓烷唇途桔持疥帮制衫卷望竣宝淳北申泛叮十撒骆第五章基础控件的增强功能二第五章基础控件的增强功能二
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号