第6章VB界面设计 61基本要求 1.熟练掌据运用菜单编辑器建立菜单的方法: 2.掌握通用对话框的使用方法: 3.掌握窗体的显示与隐藏方法: 4.掌握在VB工程运用多重窗体的方法。 62知识点 1.通用对话框(Common Dialog) VB的通用对话框CommonDialog控件就是提供了基于Windows的标准对话框 CommonDialog控件不是VB的内部控件,它是ActiveX控件。使用时选择“工程”菜单的 “部件”命令,米打开“部件”对话框。在其中选择“Microsoft Common Dialog Control6.0 选项,将CommonDialog控件添加到工具箱。VB通用对话框可以打开的Windows标准对话 框界面有:“打开”对话框,“另存为”对话框,“颜色”对话框,“字体”对话框,“打印” 对话柜和“帮助”对话框。在使用通用对话框控件打开标准对话框时,必须对它的 一个 属性进行设置或调用该控件的Show方法,那样才能真正地打开标准对话框中某一种类型的 对话框。 (1)打开对话框 当在程序中把Action属性值设置为1时或调用了Showopen方法,就可以打开通用对 话框的“打开”对话框。在“打开”对话框中,可以翻阅计算机的整个目录结构,查找所需 要的文件。如下图61所示 打理 ②☒ 查找范围@):白。学习指导书 白国, 桌面 4章-11.d 章B易 T-3.dec 用。 同上5 文件名图) 打开@) 文件类型①) 取消 厂以只读方式打开) 图6-1打开对话框 要真正实现文件的打开需要设置几个必要的屈性: ①FileName: 用于设置和得到用户所选的文件名(包括路径名),属性值为字符串
!"# $%&'()*+, -.# $%/' 01$%23' $%#4567 8 71%89:2;?567 8 5@2A $%BCDEF# GH<= -. IJKL7<=827MNO827PQ827R8 27<S8 T7UV8#$%<=-.42WX3YZ [\]^_`abc$% !" 2defghij<=-.?kYlmn # op<= q r?s [\t_`O 4ab* !"#$ 2&GH<= 7<=8#7<=8?2GHuvwxyzZ{|}~2 %# % # % <= hi%<=_`ZW[\L &'L,_`TD5%op2[\tOR#
②FileTitle:用于返回文件名,不包含路径. ③InitDir:用于指定初始化目录,或返回用户选择的文件目录 ④Filter 用于设置对话框的文件类型列表框中的过 器 通过设定过滤器指定在文件 类型列表框中显示的文件类型。其格式为:文件说明1文件类 ⑤FilterIndex:当指定一一个以上的过滤器时,需使用该屈性确定哪一个作为默认过滤器 显示,默认值为1, (2)另存为对话框 当在程序中把Action属性值设置为2时或调用了ShowSave方法,就可以打开通用对话 框的“另存为”对话框。在“另存为”对话框中,可以翻阅计算机的整个目录结构,查找所 需要的信息。 另存为对话框常用属性基本上与“打开”对话框相似,有一个DefaultExt属性是“另存 为”对话框所特有的,它表示所存文件的默认扩展名。 (3)颜鱼对话框 当在程序中把 tion属性值设置为3时或调用了ShowColor方法,就可以打开通用对 话框的“颜色”对话框。在“颜色”对话框的调色板中提供了基本颜色,还提供了用户的自 定义颜色,即用户可以自己调色。如图6-2. 色 回☒ 自定义色 色 定☐取神 图62颜色对话框 颜色对话框的常用属性是Coo属性,当用户在调色板中选定颜色后,该颜色值赋给 Color属性。 (4)字体对话框 当在程序中把Action屈性值设置为4时或调用了ShowFont方法,就可以打开通用对话 框的“字体”对话框。在“字体”对话框中,拥有可供用户选择的字体。如下图6-3
&(L,%2/# ) L,{|2a56%{|# &L,_`%mn ¡?¢£#¢_¢£% mn ¡?%mn#>¤¥OL%¦§¨%mn © &) *LqYZHª¢£42c[\«¬YZO®¯¢£ 2®¯tO # opMNO q r?s [\t_`O 4ab* !"! 2&GH<= 7MNO8#7MNO8?2GHuvwxyzZ{|}~2 °±# MNO²[\+³ª7<=8´µ2KYZ +,* [\'7MN O8¶K23¡N%®¯·¸# opPQ q r?s [\t_`O 4ab* !" 2&GH<= 7PQ8#7PQ8bQ¹?()*+³PQ2º()*» ¼PQ2½GH»¾bQ# %# % PQ PQ²[\' [\2qbQ¹?5PQ¿2cPQtÀÁ [\# opR q r?s [\t_`O 4ab* !"& 2&GH<= 7R8#7R8?2ÂKG)56R# %#
字体 回冈 确定 icode MS 示例 字将集国) 图6-3字体对话框 在使用“字体”对话框之前,必须设置Flags属性,见下表。假如没有设置Flags属性 值,则使用“字体”对话框时会显示错误提示。 属性 Flags值 说明 CdlCFScreenFonts 屏幕字体 CdlCFPrinterFonts 2 打印机字体 CdICFBoth 3 两者皆有 100 出现删除线、下划线、颜色元素 (5)打印对话框 当在程序中把Action属性值设置为5时或调用了ShowPrinter方法,就可以打开通用对 话框的“打印”对话框。如下图64
% R 7R8ÃÄ2WX_` & [\2Å¡#Æ ÇK_` & [\ t2È7R84ÉÊË(# [\ & t ¦§ &! & ÌÍR &- & <SyR & " ÎÏÐK &, ÑÒÓÔÕÖÔÕPQר o.p<S q r?s [\t_`O . 4ab* !"- 2&GH<= 7<S8# %#
打印 2☒ 常规 选择打印机 ”西四 准备就 首选项) 查找打印机).. 厂打印到文件正) 份激 因 打印心)☐取消 图64打印对话框 打印对话框不能直接处理打印任务,它仅是一个供用户选择打印参数的界面,所选参数 存于各属性中,再由编程来处理打印任务。属性如下表所示。 属性 说明 Copies 指定打印份数 FromPage 打印起始页号 ToPage 打印终止页号 (6)帮助对话框 帮助对话框用于制作应用程序的联机帮助,它可将已创建的帮助文件取出,并与界面连 接起来,达到显示并检索帮助信息的目的。当在程序中把Action属性值设置为6时或调用 了ShowHelp方法,并且设定了HelpCommand、HelpFile属性值。如: CommonDialogl HelpCommand cdlHelpContents CommonDialogl.HelpFile="c:windows\system32winabc.hlp" Me.CommonD alogl.Action 就可以打开通用对话框的帮助对话框。如下图6-5所示
% <S <S/gÙÚÛÜ<SÝÞ23ß'YZ)56<SàáIJ25àá N,â[\?2ãä ;ÛÜ<SÝÞ#[\ ¡# [\ ¦§ $ <Såá &- <Sæçè (- <Séêçè opUV UV,ëì ríyUV23GAîïUV%ðÑ2ñIJò Úæ;2óDñôõUV°±{#q r?s [\t_`O 4ab * !"/$ 2ñö_* /$ Õ/$& [\t# L /$ 0/$ /$&0123 343 5"$1 0 &GH<=UV# %. #
石回区 Q)帮助 用汉洁拼音比较装,可以使用全拼输入法 花的汉语拼音输入,输入过程和书写汉语拼音的过程完全一致。 生园现幸清兵开新国· ·注意得音符号的使用。 例如 图6-5帮助对话相 2.莱单编辑器 选择“工具”菜单的“菜单编辑器”命令,即可打开如图66所示的“菜单编辑器”窗 . 菜单编辑器 标要): 确定 名称): 取消 索引0《):■ 快建键S): 「0eone] 帮助上下文D0: 协调位置@) 0-None 厂选) 口有效 可见) 厂显示宽口列 ←+++」下一个回插入)除 图6-6莱单编辑器 (1)菜单控件属性区 标题:输入菜单标题及各菜单项的标题,也可以在菜单中创建分隔条 名称:输入莱单控件的名字,该名字用于在程序代码中引用莱单控件。 索引:在创建菜单控件数组时作为索引。 快捷键:允许为每个命令选定快捷键。 复选:选择该项 时收 个复选框标志放置在莱单上(它只对子莱单项起作用)。 有效:设置菜单或菜单项当前有效 可见:设置菜单或菜单项当前可见。 (2)编辑区 左、右箭头:用来产生和消除内缩符号,即产生或消除子菜单 上、下箭头:每次单击都把选定的菜单项在同级菜单内向上、 下移动一个位置
%. UV 567E87 89:2½G<= % 7 8 ÷# % op$%[\ø -ùLúû-ùüâ@-ù2ýGH?ïþ# Lúû$%R2cR, r?$%# õLï$%á4Oõ# LO Z9:5 # 5L56c@42AYZ5-`ªo3@æp# KL_`a@qÄK# GÅL_`a@qÄGÅ# op ø ÕL;TÓ0è2½aÓ# ªÕL s5@ 0!ªÕ"#YZ$`#
下一个:将选定移动到下一行。 插入:在列表框的当前行上方插入新的莱单项 别除:删除当前选定的菜单项 (3)菜单控件列表框区 ①列表框区是用来列出当前窗体的所有菜单控件 ②当在标题文本框中键入一个菜单项时,该项也会出现在菜单控件列表框中】 ③在列表框中洗取一个已存在的菜单抄件,则可以编组该控件的属性。 ④莱单控件在列表框中的位置决定了该控件是莱单标题、菜单项、子莱单标题还是子 单 3.弹出菜单设计 弹出菜单是独立于窗体菜单而显示在窗体上的菜单,其显示的位置取决于单击鼠标时指 针的位置。创建弹出菜单分为两步: ①建立弹出莱单:使用菜单编辑器设计莱单,并设置弹出莱单的顶层菜单(主菜单项) 为可见或不可见。 ②设置弹出菜单显示方式:使用PopupMenu方法来显示弹出菜单。PopupMenu方法的 使用形式:[对象]PopupMenu莱单名,标志,X,y 标志:当标志为0时,弹出菜单的顶只能对鼠标左键起反应:当标志为1时,弹出菜单 的顶只能对鼠标左键和右链都起反应:当标志为2时PopupMenu方法只能用在MouseDown 事件过程。 4.多重窗体界面设计 ①添加窗体:创建一个新的窗体或把一个属于其他工程的窗体添加到当前工程中。同 一工程每个窗体的Name属性不能相同. ②设置启动对象。 5。有关窗体的语句、方法 ①Load语句:把窗体装入内存。Load语句形式:Load窗体名称 ②Unload语句:从内存中别除指定的窗体。Unload语句形式:Unload窗体名称 ③Show方法 显示 他兼有加载和显示窗体两种功能。 其形式:[窗体名称]Show[模式] 其中:“模式”用来确定窗体的状态,有0和1两个值。若“模式”为1,表示窗体是 “模式型”(Moal)的,用户无法将鼠标移到其他窗口,也就是说,只有在关闭该窗体后 才能对其他窗口进行操作。若“模式”为l,表示窗体是“非模式型”(Modeless)的,可 以对其他窗口进行操 “式”的缺省值为0。 体名称” 缺省时为当前窗口 ④Hide方法:将窗体暂时隐藏起来,并没有从内存中副除。其形式为:[窗体名称Hidc 6.多文档界面的设计 开发多文档界面的一个应用程序至少需要两个窗体:一个MDI窗体和一个或若干个子 窗体。在不同窗体中共用的过程、变量应存放在标准模块中。 ①创律和设计MD引窗体 MDI窗体的默认名称为MDIF ,大部分的控件不能放置在MDI窗体中,在此窗体 中只能放置菜单、具有Ag属性的控件和具有不可见界面的控件 ②创建MDI子窗体 先创建一个新窗体(或者打开一个存在的窗体),然后将它的MDIChild属性设置为Tue. ③编写程序代码 建立了MD父窗体、子窗体后,就可以根据要求编写程序代码,其过程与单一窗体相
YZLA5"#DY^# %ûL ¡qÄ^ª%û&@# ÒÓLÒÓqÄ5@# op$% ¡ø ¡ø'; ÑqÄK$% q-ù³? ûYZ@42c@ýÉÑ$% ¡?# ¡?5ðYZîN$%2ÈGH c$%[\# $% ¡?$`'*c$%'-ùÕ@Õ-ùº' @# (Ñ') ,*ª2>$`ð',+-4 ,$`#ï(ÑþOÎ-L (ÑL _w2ñ_`(Ñ./o0@p OGÅa/GÅ# _`(Ñ¥L -$+$ + ;(Ñ#-$+$ + 1¥L 627-$+$ + 2-2*24 -Lq-O 42(Ñ.g+- æ3ìq-O 42(Ñ .g+- T æ3ìq-O 4 -$+$ + g + 4%¢ # BCLïYZ&asYZ[,>5 BCDqÄ ?# Y Z ' [\/g´# _`6#2# 8 78Ls9û0N#8 781¥L 8 9 78L;0N?ÒÓ#9 781¥L9 !" LYZ25g# >1¥L67!"6?¥7 >?L7?¥8;«@A2K T ÎZt #B7?¥8O 2¡' 7?¥n8op2CA+-"D>5÷2ý&'¦2KDEc¿ fg>5÷]^F#B7?¥8O 2¡'7G?¥n8op2G H>5÷]^F#7?¥8HItO #78 HI4OqÄ÷# / LAJ4æ;2ñÇK;0N?ÒÓ#>1¥OL67/ =K!LIJYZì rMNÎZLYZ ) TYZaBOZ #/?P¢ ÕQRìN-.?S?# ïT_w ) ) ®¯O )&2T1þ$%/g` ) ?2U ?g`ÕEK [\$%TEK/GÅIJ$%# ï ) VïYZ&oaÏ¢ Y´
同。 ④加拔DI窗体与子窗体 在MDI应用程序中,由于加载子窗体时,其父窗体(MDI窗体)会自动加载并显示 当子窗体被设置为默认的启动窗体时,程序运行后子窗体和MDI窗体两者都会加载。而从 载MDI窗体时,其子窗体并不会随着MDI窗体的加载而自动加载,因此当设置MDI窗体 为启动窗体时,程序运行后只有MDI窗体被加载,若要加载子窗体则应使用Show方法。 7.MDI的属性、事件 (1)MdiChild屈性:设置一个窗体是否被作为MD引子窗体在一个MD引窗体内部显示 (2)ScrollBars属性:设置一个MDI窗体是否有水平滚动条或垂直滚动条。 (3)Win State 属性 该屈性可以取三种值:若取值为0(默认值)表示正常显示窗体:取值为1表示最小化, 即将窗体缩小为一个图标:取值为2表示最大化,即将窗体充满屏幕,在DI应用程序中 子窗体将充满MDI父窗体 (4)Arrange方法:用于重排MDI窗口中的子窗体或图标。格式为: MDl窗体.Arrang 其中:“MDI窗体 ”是需要重新排列的MDI窗体名字,在该窗体内有子窗体或图标:“方 式”指定重排MDI窗体中子窗体或图标的方式。 (5)ouervunload事件 在一个窗体或应用程序关闭之前触发该事件 当MDI窗体被卸载时,QueryUnload事件首先为MDI窗体调用,然后再为每一个打开 的子窗体调用。由于QueryUnload事件在窗体卸载之前被调用,因此可以在事件过程中编写 代码,使得用户能够在窗体卸载前保存那些被修改的窗体。 6.3疑难解析 L.在工程中添加现有窗体时发生加载错误 在使用“工程”菜单中的“添加窗体”命令添加一个现存的窗体时经常发生加载错误 绝大多数是因为窗体名称冲突的缘故。例如,假定当前打开了一个含有名称为Fom1的工 程,如果想把屈于另一个工程的F。m1窗体装入则背定会出错 其实窗体名和窗体文件名可以使用不同的名称,不 定非要相同,但是为了不造成混乱 二者的名称最好一致。在 工程中,可以有两个窗体文件名相同的窗体(须在不同的文件 夹中),但是绝对不能同时出现两个窗体名相同的窗体。 2.装入多窗体程序时出现对象不存在的错误 对于单窗体程序的加载,通常可以通过.vb文件,有时也可以直接单击.丘m窗体文件。 但对于多窗体程序的加截必苑通过yD文件,它把屈于该工程的所有文件(包括m文件 和,bas文件)装入内存。如果通过单击多窗体程序中某 窗体文件,只能加载该窗体文件 其他文件不能自动装入内存,程序运行时将出现对象不存在的错误。 此外,对于多窗体程序的编辑,当变化了窗体数量后,必须重新保存工程文件,否则, 工程文件不包括新增的窗体文件。 对于记录在工程文件中的窗体文件和模块文件,必须注意所在的目录位置。在复制名窗 体程序对应的文件时不要遗漏,否则,在下次加载时会产生对象不存在的错误, 3.多窗体调用时出现对象不存在的错误 当用SOw方法调用其他窗体时,被调用的窗体必须用窗体对象名,而不是窗体文件名。 否则,会产生实时错误424,要求对象
# C= ) ) ì r?2ä,C=42>Yo) pÉ»#C=ñ# q]_`O®¯6#42 r^¿T ) ÎÏÉC=#*C = ) 42>ñ/É^_ ) C=*»#C=2`Uq_` ) O6#42 r^¿K ) ]C=2BC=Èì !" # !" op " [\L_`YZ'a]O ) YZ ) 01# op! [\L_`YZ ) 'aKbcd#aeÙd## op ! [\ c[\GHðfltLBðtO o®¯tp¡i²ðtO ¡gh2 ½AhOYZ-ðtO ¡gT2½AijÌÍ2 ) ì r? Aij ) Y# op L,"k ) ÷?a-#¤¥OL ) ¥ >?L7) 8'"&k ) R2c0Ka-7 ¥8"k ) ?a-¥# o.p:+49 4% YZaì rDEÃÄlKc4%# q ) ]m=42:+49 4%nVO ) b2W¿ãO YZT%GH/2/YG´2~'O*/2 ÏgY #YZ ?2GHKÎZ%´oX/% ?p2~'u/g4ÑÎZ´# 01%2*)345#./ , rC=2²GH¢5$ %2K4ýGHÙÚ %# ~,! rC=WX¢5$ %23s[,c K%o % T5 %p9û0N# {¢! r?kY%2gC=c%2 >5%/g»#9û0N2 r^4AÑ2/NÊË# U2,! r 2qQ*áR¿2WX"&pN %2aÈ2 %/&%# ,| %?%T?S%2WX{|$`#ë! rì%4/2aÈ2C=4É2/NÊË# 6*)345#./ q !" b>542]bWX22*/'%# aÈ2É4ÊË 2\2#
4.在窗体加载过程中使用SetFocus方法出现“无效的过程调用或参数”错误 焦点只能移动可视的窗体或控件上。在窗体的L0d事件完成前窗体或窗体上的控件是 不可视的,所以不能在Form_Load事件中把焦点移到正在加载的窗体上,也不能在Load事 件内使用SetFocus方法将焦点移到窗体上的控件。此外,也不能把焦点移到Enabled或Visible 属性被设置为False的窗体或控件,如果己在设计时将Enabled或Visible屈性设置为False 必须在使用SetFocus方法前将Enabled或Visible属性设置为Tnue 5.与窗体有关的事件 在首次用L0ad语句将窗体(假定该窗体在内存中还没有创建)调入内存之时依次发生 Initialize和Load事件。Initialize是在窗体创建时发生的事件。在窗体的整个生命周期中, Initializ心事件只触发一次。用户可以将一个窗体装入内存或从内存中别除很多次,但窗体的 速立贝有一次。也县说,在用L0ad语句将窗体转入内存时会触发L0ad事件,但并不 定触发Initialize事件。 在窗体从内存中卸载时依次发生QueryUnload和Unload事件。QueryUnload事件可 供造成窗体卸载的原因,即是单击“关闭”按钮,或是程序中执行Unload语句,或在应用 程序中关闭,或者是在Windows中的关闭。如果在QueryUnload事件中把QueryUnload的 参数Cancel设置为True,就会忽略Unload语句,从而不卸载窗体。所以QueryUnload提供 ”取消关闭窗体的知 ,同时也允许在需要时从代码中关闭窗体。 如果使用End语句来结束程序 ,窗体不会接收到QueryUnload事件 而窗体Activate事件仅当窗体成为活动窗口时才发生,窗体必须可见 6。在程序中对通用对话框的属性设置不起作用 在程序中对通用对话框的属性设置必须注意语句的先后顺序,属性设置语句必须放在打 开对话框语句前,否则在程序中对诵用对话框的属性设置在本次使用中不起作用。例如,下 面的程序代码由于先打开对话框,再进行属性设置。在第一次执行本段代码时,无法过滤文 件,ShowOpen语句后面的 性设置语句对下 次执行ShowOpen有效 CommonDialog1.ShowOpen CommonDialogl.FileName ="*.bmp CommonDialogl InitDir ="c\windows CommonDialog1.Filter="图片(,bmp.bmpl所有文件(t.◆y.*" 7.设置通用对话框的CancelError属性为True发生错误 当通用对话框的CancelError属性设置为Tuc时,无论何时选择“取消”按钮,均产生 32755(cdlCancel)号错误。 VB通过系统对象Er来记录程序运行期间所发生的错误。Er对象的Number属性记录 然框由基展选保在有关错送的说明如在Cc居性力e的通用 产生一个错误,Err.Number被设置为3 性被设置为“选择‘取消'”。如果不对错误进行处理,VB将显示出错消息并停止程序运行 为防止由于错误造成停止程序运行的问题,可以使用On Error语句捕获错误,然后根据捕 获的错误进行处理。常用On Error语句的形式有: On error resume next·忽略发生错误的命今行,执行下一句命今 On Error GoTo语句标号!当发生错误时转向执行标号所指定的命令行 对于捕获到的错误号, 可用分支语句处理。 下面的程序说明当在颜色对话框内选取“取消”按钮时,CommonDialog1,ShowColor 语句产生32755号错误。On Error语句在捕获到错误后,转向执行标号ErrorHandler所指定
#(-7%&8 )9:;7%6?./ g"#Ga$%ª# 8 4%Äaª$%' /G2H/g &;8 4%?s"DiC=ª2ý/g 8 4 %0!&+A"Dª$%#U2ý/gs"D, 5a5 [\]_`O & a$%# {î_w4A , 5 a 5 [\_`O &2 WX !&+ ÄA , 5 a 5 [\_`O (+# @!" n 8 78AoÆc0N?ºÇKïpbû0NÃ4K ) =5$?@=5$@K%>==?@==1 &) *0 A !! ! D "! +,./ q , [\_`O (+ 42C£¤4567ð82¥ A..o pèÊË# ¢¦§2 , ;| r^¨KÊË#, 2 '+5 [\| ÊËè2$ [\pNKDÊ˦§#z 2q , [\O (+ ?567ð842YZÊË2,'+5 ]_`O A..2$ [ \]_`O756©ðª8# {/ÊË]^ÛÜ2 AÑʱñ«ê r^# O¬êä,ÊË«ê r^ù2GH # , 78®¯ÊË2W¿Z[® ¯ÊË]^ÛÜ#² # , 781¥KL # , B+'* CKÊË9:^2^Y89: # ,D( 78-è CqKÊË4°!^-è9:^ ,®¯DÊËè2Gþ±78ÛÜ# J r¦§qPQ05ð7ð842 !" 78 A.. èÊË## , 78®¯DÊË¿2°!^-è ,/
的命令行。在标签Label1上显示“放弃操作”,并忽略产生错误的那一行命令与标号之间的 所有语句。 Private Sub Command1_Click( On Eror GoTo ErrorHandler 错误捕获语句 CommonDialogl.CancelError True 使选取“取消”按钮时能对出错做出响应 CommonDialogl ShowColor Text1 ForeColor=CommonDialog1.Color'设置颜色 Exit Sub 无错误时正常退出本讨积 以下为错误处理的语句 ErrorHandler If Err.Number=32755 Then Labell.Caption="放弃操作" End Sub 8.在使用Common Dialog控件控制字体选择时出现下图6-7所示错误 为&H103,表 ,并在字体对话框中出现别除线、下划线 颜色等元素。注意数字前的符号&,表示十六进制。 字体 雀额精靠德打开“宇体”文件夹以便安装字体。 销定回 图6-7字体提示框 9.窗体莱单名、项层莱单与菜单项的区别 通常出现在菜单栏上的菜单对象叫做菜单名,菜单名以下拉列表形式包含的内容为菜单 项。菜单顶可以句括菜单命今、分隔条和子菜单标颗。当菜单名没有菜单项时称为“顶层菜 单”,可直接对应一个应用程序。莱单名、顶层菜单与莱单项都是在莱单编辑器中定义,它 们的区别在于 (1)莱单名、顶层菜单不能定义快捷健,而菜单项可以有快捷健。 (2)当菜单包含有热键字母(菜单标题中“&”后的字母)时,按A+热键字母可选 择窗体顶部菜单栏中的菜单项,当子菜单打开时,按热键字母选择子菜单中的菜单项。如果 子菜单没有打开时,按热健字母无法选择其中的菜单项。 (3)尽管所有的菜单项都能响应C©k事件,但是菜单栏中的菜单名通常不需要编写 事件过程。 10.动态菜单创建后不显示 创建动态菜单必须结合菜单项数组,样本菜单顶的属性设置如下表所示: Name Caption Index Visible 必需的可以没有0 False■ 表中Index为0,表示样本菜单项是数组的第一个元素,其下标为0,样本菜单项的Name 属性是必需的,它作为数组的名称。Visible可以设为Tnue,如果设为alse表示初始时该菜 单项不可见
9:^#-² 85 ª7³F82ñÊËdY^9:-èè K78# -!+5 ; E>? # ,D(,/ CÊË®¯78 ,0(+ C5ð7ð84gÑʴѵì !" (*& 0 C_`PQ ,*!+5 CCÊË4i²¶Ñ³¢ CHOÊËÛÜ78 ,/ 2 ),'+50A..(" 85 $ 01³F1 , !+5 # #8 E"EFGHI*)JK $ LM./ ·'ä,ÇK_` $% & [\2a[\t/i«#²_`ct OF/ 2¡ÌÍRÕ?@# opÃÄK@gµì E 4%2~'»?²/ X 4%¢ # & TUVWX4YM ï#AWX}Å@á2e³@[\_` ¡L ' $ ) * 5 W GHÇK & ¡? ) * O 2¡e³@'á YZר2>-O #e³@ ' [\'W23Oá#5 GH_O (+2 {_O & ¡4c @/GÅ#
在程序中用Load语句创建菜单项,用Unload清除菜单项。动态创建的菜单项继承了除 了Index之外的绝大部分属性,所以要对Caption属性设置菜单标题。另外,使用Load语句 建立的菜单项对象的Visible 属性为 ,如果其Visible属性不设置为 创建的菜 项不显示。另外,样本菜单项在莱单系统中的位置决定了新菜单项出现的位置。 11.在制作工具栏时ToolBar控件无法装入图像 ToolBar控件装入的图像米自与它关联的ImageList控件,必须先将图像添加到ImageList 控件中,然后,在ToolBar控件的“图像列表”下拉式列表框中设置与之关联的ImageList 控件,并为ToolBar控件中各工具按钮选择对应的图像/标。 12.在制作工具栏时无法对mageList控件进行编辑 若要对ImageList控件进行增加、除图像,必须先在ToolBar控件的“图像列表”下 拉式列表框设置“无”,也就是与ImageList控件切断联系,否则VB提示无法对ImageList 控件进行编辑。 13.当改变子窗体的属性后不能自动显示该子窗体 MDI窗体有AutoShowChildren属性,决定是否自动显示子窗体。如果它被设置为Tnue, 则当改变子窗体的属性后,会自动显示该子窗体:如果AutoShowChildren属性被设置为 False,则改变子窗体的属性后,必须用Show方法把该子窗体显示出来 6.4典型例题 例6」编写一个简单的文本文件编辑器。要求具有打开、复制、粘贴、保存、退出功 能。用户界面如下图6-8所示。单击“剪切”菜单(mnuCut),将文本框Textl.text中选定 的内容剪切到剪 单击 “复制”莱单(mnuCopy) 将文本框Textl.t.et中选定的内容复 制到剪贴板:单击“粘贴”莱单(mnuPaste),将剪贴板中的内容粘贴到文本框中当前插入 点处:单击“打开”菜单(mnuOpen),打开“打开”对话框,输入要打开的文本文件名后 单击确定按钮后,文件在Texl中打开。单击“保存”菜单(mnuSave),打开“保存文件 对话框,Text1.text中的内容以指定的路径及文件名保存。单击“退出”菜单(mnuExit). 结束程序。 S简易文本新行器 回☒ 剪切复制贴打开保存退 图6-8例6-1程序界面 解答 (1)新建工程,修改窗体的标题为“简易文本编辑器”。 (2)在窗体上右击鼠标,打开菜单编辑器,创建“剪切”、“复制”、“粘贴”、“打开” “保存”、“退出”6个菜单 (3)在窗体上添加一个文本框,调整其大小如上图所示。 (4)编写“剪切”菜单的单击事件过程,实现将文本框中的文本传送到剪帖板,并清
r? 8 78ï@2 9 ÆÓ@##Aï@ÇÈ*Ó * ) * ÃuT1þ[\2H $ [\_`-ù#M2 8 78 @2 5 [\O &2 {> 5 [\/_`O (+2ï @/#M2e³@¦§?$`'*&@Ñ$`# #FC$Z[* " ! E":01K\ ( $%9ûÉ;»3Dí )8$%2WXVAÉBCD )8 $%?2W¿2 ( $%7É ¡8½¥ ¡?_`ÃDí )8 $%2ñO ( $%?âE56ìÉH-# #FC$Z[*: ' E"]^ B )8 $%]^CÕÒÓÉ2WXV ( $%7É ¡8 ½¥ ¡_`7C82ý&' )8 $%ÊËí¦2aÈ (C )8 $%]^ # _`ab X4cdTYMeb ) K +!" " [\2''a»## {3]_`O (+2 ÈqsQ[\¿2É»#c { +!" " [\]_`O &2ÈsQ[\¿2WX !" scÑ;# z % XYZ̳% #\EK g#IJ %I #7ÏÊ8o + +p2A³ (** ?5 0¾ÏÊDÏι7ë8o + $4p2A³ (** ?50¾ ëDÏι7ÍÎ8o +-p2AÏι?0¾ÍÎD³?qÄ%û Û7Th ª# op X7ÏÊ84%¢ 2A³?³ÓÔDÏÕ¹2ñÆ