第9章-菜单、工具栏和状态栏ppt课件(全).ppt
-
资源ID:78674685
资源大小:1.01MB
全文页数:75页
- 资源格式: PPT
下载积分:12金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
第9章-菜单、工具栏和状态栏ppt课件(全).ppt
第第9章章 菜单、工具栏和状态栏菜单、工具栏和状态栏目录9.1 菜单菜单9.1.1 下拉式菜单组件下拉式菜单组件MainMenu9.1.2 弹出式菜单组件弹出式菜单组件PopupMenu9.1.3 在菜单中添加小图标在菜单中添加小图标9.2 工具栏组件工具栏组件ToolBar9.3 状态栏组件状态栏组件StatusBar9.4 小结小结在Windows程序设计中,菜单、工具栏和状态栏是应用程序重要的界面元素。菜单、工具栏和状态栏可以使得程序操作更加方便,界面更加美观、友好。9.1 菜单在Delphi中菜单分为下拉式菜单和弹出式菜单,使用MainMenu组件很方便制作出下拉式菜单,使用PopUpMenu组件也可以方便地制作出弹出式菜单。通过单击主菜单即可显示出下拉式菜单,而弹出式菜单则可以通过鼠标右键单击某个组件或者区域显示出来。如图9-1左边是下拉式菜单、右边为弹出是菜单。图9-1 下拉式菜单和弹出式菜单9.1.1 下拉式菜单组件MainMenuMainMenu下拉式菜单的菜单项保存在Items属性中,Items属性是MainMenu的内部对象。通过菜单设计器可以设计菜单的Items属性,添加菜单项。MainMenu组件在Standard组件面板中。1菜单设计器在窗体上添加MainMenu组件后,双击MainMenu组件,显示菜单设计器。或者鼠标右键单击MainMenu组件,选择“Menu Designer”也可以进入菜单设计器。如图9-2右边所示即为菜单设计器。图9-2“Object Inspector”对话框与菜单设计器在菜单设计过程中,选择某个菜单项,则在“Object Inspector”对话框中显示的就是该菜单项所 对应的的属性。如图9-2所示,在右边菜单设计器中选择“打开”菜单项,则“Object Inspector”对话框中显示的就是该菜单项的属性,如“打开”菜单项的Name属性是N3,Caption属性是“打开”。菜单设计器有如下一些操作:(1)添加菜单项:一个菜单项设计完之后,自动在其后出现一个虚线框(如图9-2“粘贴”菜单的下面就是这种虚框),表示新添加的菜单项,如果用户想添加新菜单项,用户可以直接设计之。(2)移动菜单项:用鼠标将要移动的菜单项直接拖动到目的位置即可。(3)插入菜单项:用鼠标右键单击菜单项,选择“Insert”可以完成菜单项的插入操作。(4)删除当前菜单项:选中某菜单,直接按“Delete”键即可。(5)创建子菜单项:选中菜单执行弹出式菜单中的“Create SubMenu”菜单。菜单的属性:(1)Caption属性和Name属性:用于设置菜单的标题,如图9-2所示的“文件”、“新建”等。Name属性默认值一般为n1、n2、n3等等。下面示例给出了Caption的一些用法,例如:n2.Caption:=新建;/菜单标题是新建,n2是新建菜单的Name属性n3.Caption:=打开&O;/设置标题和加速键,按Alt+O等价与单击“打开”n4.Caption:=-;/设置菜单的分隔,用于分隔不同性质的菜单,这样更条理(2)Visible 属性:设置菜单是否可见,可以将菜单项设置为可见和不可见,还可以将菜单的子菜单设置为可见和不可见。例如:假设n1是“文件”菜单的Name属性,n3是“打开”菜单的Name属性。n1.Visible:=False;/“文件”菜单不显示,其下的“新建”、“打开”等菜单也不显示n3.Visible:=False;/“打开”菜单不显示(3)Enabled属性:菜单是否有效。例如:假设n1是“文件”菜单的Name属性,n3是“打开”菜单的Name属性。n3.Enabled:=False;/“打开”菜单无效n1.Enabled:=False;/整个“文件”菜单无效说明:无效的菜单,无法用加速键或者快捷键访问。(4)ShortCut属性:用于设置菜单的快捷键。(5)Checked属性和AutoCheck属性:Checked属性用于设置菜单复选状态,值为True时,菜单旁边显示符号“”。AutoCheck属性用于设置菜单是否自动改变Checked属性值,当AutoCheck属性值为True时,单击菜单项,该菜单项的Checked属性值自动改变,否则需要用代码来改变。例如:假设n1、n2、n3、n4分别表示“字体”、“粗体”、“斜体”和“下划线”菜单的Name属性。其中n1是顶层菜单。n2的AutoCheck属性值为False,n3的AutoCheck属性值为True。n2.Checked:=not n2.Checked;/该语句用于改变n2的Checked,单击n2菜单项,它的Checked属性值不断改变。/n3菜单不需要编写代码,每次单击n3,n3的Checked属性值能自动改变。(6)RadioItem属性和GroupIndex属性:用于设置单选菜单项,值为true时表示该菜单为单选菜单项。如果多个菜单的RadioItem属性都是True,且它们的GroupIndex(整型,取值范围0255)相同,则这些菜单项是一组单选菜单,任何时刻仅可以选择其中一个菜单项。2下拉菜单应用【例9-1】设置一个编辑器,该编辑器可以打开、保存、新建文件,还可以编辑文件、设计字体。分析:本章主要讲授菜单知识,因此对文件的新建、打开、保存等不做讲解。本题将讲授菜单的有效,单选菜单、复选菜单、加速键、菜单代码编写等等。步骤如下:()在窗体上添加下拉菜单组件MainMenu1、添加打开对话框OpenDialog1、添加保存对话框SaveDialog1、添加多格式编辑框RichEdit1。()设置菜单菜单项如图9-3所示。其中“文件”、“新建”、“打开”、“保存”、分隔线和“退出”分别为n1、n2、n3、n4、n5和n6。“编辑”、“复制”、“剪切”、“删除”和“粘贴”的Name属性分别为n7、n8、n9、n10和n11。“字体”、“粗体”一直到“隶书”的Name属性分别为n12n20。设置各个菜单的加速键,此处省略。(3)设置RichEdit组件的Align属性为alClient,调整这些组件的大小和位置,如图9-3所示。图9-3 编辑器界面及其菜单项(4)设置“粗体”和“斜体”为复选菜单,方法是设置n13和n14的AutoCheck为False。编写粗体和斜体的代码如下:procedure TForm1.N13Click(Sender:TObject);begin n13.Checked:=not n13.Checked;/每次单击粗体均要改变粗体的Checked属性值 if n13.Checked then richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style+fsbold else richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style-fsboldend;procedure TForm1.N14Click(Sender:TObject);begin n14.Checked:=not n14.Checked;/每次单击粗体均要改变斜体的Checked属性值 if n14.Checked then richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style+fsitalic elserichedit1.SelAttributes.Style:=richedit1.SelAttributes.Style-fsitalicend;分析:由于n13和n14的AutoCheck属性为False,因此单击粗体和斜体,菜单的Checked属性值不会自动改变,因此需要使用语句来改变n13和n14的Checked属性值。显然,如果将n13和n14的AutoCheck属性设置为True,则上面的程序可以写成:procedure TForm1.N13Click(Sender:TObject);begin if n13.Checked then richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style+fsbold else richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style-fsboldend;procedure TForm1.N14Click(Sender:TObject);begin if n14.Checked then richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style+fsitalic else richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style-fsitalicend;(5)设置“10号”、“20号”、“宋体”和“隶书”为单选菜单。关于AutoCheck属性,这里不再赘述,为了使程序更加简洁将这4个菜单项的AutoCheck属性都设置为True。将这4个菜单的RaidoItem属性设置为True,表示这4个菜单是单选菜单。由于“10号”和“20号”是一组,故将“10号”和“20号”的RaidoIndex设置为0(RaidoIndex相同的为一组),将另外一组菜单“宋体”和“隶书”的RaidoIndex都设置为1。编写者4个菜单的代码,如下:procedure TForm1.N16Click(Sender:TObject);begin if n16.Checked then richedit1.SelAttributes.Size:=10end;procedure TForm1.N17Click(Sender:TObject);begin if n17.Checked then richedit1.SelAttributes.Size:=20 end;procedure TForm1.N19Click(Sender:TObject);begin if n19.Checked then richedit1.SelAttributes.Name:=宋体 end;procedure TForm1.N20Click(Sender:TObject);begin if n20.Checked then richedit1.SelAttributes.Name:=隶书end;(6)编写RichEdit1的OnSelectionChange事件过程,如下:procedure TForm1.RichEdit1SelectionChange(Sender:TObject);begin if richedit1.SelLength0 then begin n8.Enabled:=true;/如果有选定文字,则设置“复制”、“剪切”和“删除”有效 n9.Enabled:=true;n10.Enabled:=true end else begin n8.Enabled:=false;n9.Enabled:=false;n10.Enabled:=false end;if fsbold in richedit1.SelAttributes.Style then n13.Checked:=true /选定文字是粗体,则设置n13的Checked为True else n13.Checked:=false;if fsitalic in richedit1.SelAttributes.Style then n14.Checked:=true else n14.Checked:=false;if richedit1.SelAttributes.Size=10 then n16.Checked:=true;if richedit1.SelAttributes.Size=20 then n17.Checked:=true;/选定“20号”,则“10号”的Checked属性自动变为False if richedit1.SelAttributes.Name=宋体 then n19.Checked:=true;if richedit1.SelAttributes.Name=隶书 then n20.Checked:=true;end;说明:该过程的作用是根据选定文字的状态设置菜单的状态。“文件”、“编辑”类菜单的代码请读者自己完成。3菜单模板我们可以像使用模具一样使用菜单模板来设计自己的菜单,也可以把自己设计的菜单保存为菜单模板,供下次使用。(1)添加系统菜单在自己的菜单中添加系统菜单模板,使得设计菜单更加方便、快捷。鼠标右键单击菜单项选择“Insert From Template”可以将系统中的菜单添加到自己的菜单中,如“File”、“Edit”、“Window”、“Help”等等。(2)将自己的菜单保存为菜单模板鼠标右键单击菜单,选择“Save As Template”可以将自己设计的菜单保存为模板,以供下次使用。同样可以使用“Delete Template”删除不用的菜单模板。9.1.2 弹出式菜单组件PopupMenu弹出式菜单与下拉式菜单类似。弹出式菜单是为某个组件设计的,只有在某个组件上单击鼠标右键才可以显示该菜单,因此必须将弹出式菜单与某个组件关联起来。方法是将弹出式菜单作为该组件的PopupMenu属性值。9.1.3 在菜单中添加小图标在菜单中添加图标,可以使得菜单更加美观、形象。如图9-4所示为添加了图标的菜单。在菜单中添加图标需要使用到另外一个组件ImageList。图9-4 在菜单中添加图标ImageList组件ImageList组件的作用是装载图像,ImageList中的图像可以供其他组件如菜单、工具栏等使用,ImageList组件在Standard组件面板中。双击ImageList组件,激活ImageList编辑器,如图9-5所示。图9-5 ImageList编辑器使用“Add”、“Delete”、“Clear”按钮,分别向ImageList中添加图像、删除图像或者清空全部图像。2ImageList组件的使用ImageList的作用是为其他组件提供图像,我们以菜单为例讲述ImageList组件的使用方法。(1)整个菜单与ImagList组件关联设置菜单组件MainMenu1的Images属性为ImageList1。使整个菜单与ImageList组件ImageList1关联。(2)设置菜单项与ImageList中的图像关联设置某个菜单项的ImageIndex值,则ImageList中的图像可以显示在该菜单项中。第1个图像的ImageIndex值为0,-1表示在菜单项中不使用图标。其他组件与ImageList关联的方法与此类似。9.2 工具栏组件ToolBar在Delphi中工具栏是很重要的界面元素。一般把那些经常使用的菜单做成工具栏,使得用户操作更加方便快捷。工具栏如图9-6所示。使用Delphi可以制作出水准很高的工具栏。在Delphi中既可以使用SpeedButton制作工具栏,也可以使用ToolBar组件制作工具栏。SpeedButton制作工具栏请读者自己完成。本节将介绍使用ToolBar制作工具栏。图9-6可以拖放和停靠的工具栏ToolBar组件位于Win32组件面板上,它带有自己的按钮ToolButton,设置属性可以将按钮设计成各种不同的风格。1ToolBar工具栏和ToolButton按钮添加ToolBar到窗体上,鼠标右键单击ToolBar,选择“New Button”或者“New Separator”可以创建ToolBar按钮。按钮ToolButton的属性如下:(1)Style属性:用于设置按钮的样式。按钮的样式有如下一些取值:tbsButton:一般的按钮。tbsCheck:具有复选框功能的按钮;也可以与其它按钮一起形成一组单选按钮。tbsDropDown:此类按钮单击可以弹出下拉菜单,下拉菜单由DropdownMenu属性指定。tbsDivider:分隔符,有一竖线。tbsSeparator:分隔符,只留空位,没有竖线。鼠标右键单击ToolBar选择“New Separator”产生此类分隔符。(2)Caption属性:按钮的标题文字。(3)Down属性:按钮是否按下,值为True表示按钮被按下,否则按钮为抬起状。(4)ImageIndex属性:按钮图标的序号,按钮图标来自ImageList。在ToolBar中设置Images属性,可以设置ImageList。(5)Grouped属性:值为True时按钮可与其它按钮形成一组单选按钮。在该组按钮中仅可以有一个按钮被按下。(6)DropdownMenu属性:决定按钮的下拉菜单。按钮ToolButton的属性用于控制按钮的外观等属性,而工具栏ToolBar的属性则用于控制整个工具栏的外观样式,其属性如下:(1)Align属性:工具栏的位置,例如值为alTop表示工具栏在窗体顶部。(2)Flat属性:值为True表示按钮的平面样式,否则按钮是立体样式。(3)Images属性:设置ImageList,为ToolButton提供图标。(4)ShowCaption属性:值为True时在ToolButton上显示Caption,否则不显示Caption。2ToolBar工具栏的应用【例9-2】利用ToolBar制作一个工具栏,用于设置标签的字体。步骤如下:(1)在窗体上添加ToolBar工具栏组件ToolBar1、标签Label1、弹出式菜单PopupMenu1、图像列标组件IamgeList1共4个组件。(2)在PopupMenu1中添加3个Caption分别为“10号”、“20号”和“30号”的菜单项n1、n2和n3。并把这3个菜单项设置为单选菜单,操作方法此处省略。在ImageList1中添加图标两个,如图9-6右图所示。(3)设置ToolBar1的属性,参见表9-1。表9-1 ToolBar1的属性(4)为ToolBar1添加6个按钮。设置这些按钮的属性,属性参见表9-2。表9-2 各个按钮的属性设置图9-7 程序设计界面和ImageList组件对话框至此,程序界面如图9-7左所示。(5)编写代码如下:procedure TForm1.ToolButton1Click(Sender:TObject);begin label1.Font.Name:=宋体end;procedure TForm1.ToolButton2Click(Sender:TObject);begin label1.Font.name:=隶书end;procedure TForm1.ToolButton4Click(Sender:TObject);begin if toolbutton4.Down then label1.Font.Style:=label1.Font.Style+fsitalic else label1.Font.Style:=label1.Font.Style-fsitalicend;procedure TForm1.ToolButton5Click(Sender:TObject);begin if toolbutton5.Down then label1.Font.Style:=label1.Font.Style+fsunderline else label1.Font.Style:=label1.Font.Style-fsunderlineend;procedure TForm1.n1Click(Sender:TObject);begin label1.Font.Size:=10end;procedure TForm1.n2Click(Sender:TObject);begin label1.Font.Size:=20end;procedure TForm1.n3Click(Sender:TObject);begin label1.Font.Size:=30end;(6)按F9键运行程序,运行结果如图9-8岁示。图9-8 程序运行结果(6)按F9键运行程序,运行结果如图9-8岁示。3利用CoolBar组件和ToolBar组件制作工具栏CoolBar组件是一个容器组件,可以在CoolBar中添加多个单元格,每个单元格可以用来存放其它组件,例如存放工具栏。CoolBar组件在Win32组件面板中。鼠标右键单击CoolBar组件,选择菜单“Bands Editor”,出现“Editing CoolBar1.Bands”对话框,在这里可以添加单元格。鼠标右键单击“Editing CoolBar1.Bands”空白处选择“Add”可以为CoolBar添加单元格。如图9-9就是添加了两个单元格的CoolBar。图9-9 CoolBar组件CoolBar组件的常用属性如下:(1)AutoSize属性:单元格是否自动调节大小适应单元格中的组件。(2)DockSite属性:是否可以停靠其它组件,值为True时间,可以接受停靠。单元格的常用属性如下:(1)Control属性:单元格中存放的组件,例如可以是工具栏。(2)Text属性:单元格的文字。【例9-3】利用CoolBar组件和CoolBar组件制作专业级的工具栏。步骤如下:(1)添加ToolBar组件。在窗体上添加ToolBar组件ToolBar1、ToolBar2和图像列表组件ImageList1。在ToolBar1中添加3个按钮,在ToolBar2中添加4个按钮。在ImageList1中添加7个图标。设置ToolBar1、ToolBar2和这些按钮的属性(此处省略)。设置属性后的界面如图9-10所示。(2)添加CoolBar组件。在窗体上添加CoolBar组件CoolBar1。鼠标右键单击CoolBar1空白处,选择菜单“Bands Editor”,出现“Editing CoolBar1.Bands”对话框。鼠标右键单击“Editing CoolBar1.Bands”对话框空白处,选择“Add”为CoolBar添加两个单元格。界面如图9-11所示。(3)将ToolBar加入CoolBar单元格。设置CoolBar1第0单元格的Control属性为ToolBar1,设置CoolBar1第1单元格的Control属性为ToolBar1。将CoolBar1的Autosize设置为True。此时界面如图9-12左所示。图9-12 加入CoolBar中的工具栏以及运行效果(4)实现拖放和停靠的功能,实现拖放和停靠功能,必须设置三个重要的属性,很多组件都有这三个属性,读者应该举一反三。设置ToolBar1和ToolBar2的DragKind为dkDock。表示ToolBar1和ToolBar2可以拖放。并设置ToolBar1和ToolBar2的DragMode为Automatic。表示使用鼠标自动拖放,无需使用代码。拖放后的工具栏如图9-13左所示。设置CoolBar1的DockSite属性为True,表示CoolBar可以停靠。停靠后的界面如图9-13右所示。图9-13 可以拖放和停靠的工具栏(5)工具栏拖出来后,可以点击关闭按钮关闭掉,此时执行语句ToolBar1.Visible:=true可以将工具栏再次显示出来。说明:本程序主要讲述工具栏的制作,因此代码编写本程序没有涉及到。另外很多组件都有DragMode、DockSite和DragKind属性,请读者举一反三。9.3 状态栏组件StatusBar和菜单、工具栏一样,状态栏也是Delphi中重要的界面元素。菜单和工具栏主要进行输入操作。而状态栏主要进行输出操作,用户根据状态栏的“状态”可以了解到程序执行情况。状态栏组件在Win32组件面板中。StatusBar有两种结构:单面板和多面板,由属性SimplePanel属性决定。SimplePanel属性值为True时是单面板,否则是多面板。1单面板当StatusBar的SimplePanel属性值为true时,状态栏是单面板,状态栏的文本内容由SimpleText属性决定。2多面板当StatusBar的SimplePanel属性值为false时,状态栏是多面板。多面板的每格都有自己的属性。可以使用Editing Statusbar1.Panels编辑器编辑状态栏的子面板(格)。双击StatusBar组件打开Editing Statusbar1.Panels编辑器。鼠标右键单击空白处选择“Add”添加状态栏的子面板(格)。如图9-14所示是添加了3个子面板的状态栏。图9-14 添加了3格的状态栏以及其属性设置使用编辑器上面提供的工具栏按钮,可以实现子面板的编辑功能。Add New按钮:用于添加子面板。Delete Select按钮:删除所选择的子面板。Move Select ed Up按钮:将所选按钮向上移动。Move Select ed Down按钮:将所选按钮向下移动。3状态栏的应用【例9-4】为例题【例9-2】制作状态栏。步骤如下:(1)在窗体上添加状态栏。为状态栏添加4个子面板,添加一个计时器组件Timer1。(2)为子面板设置Text属性值,分别为“字体:”、“字形:”、“大小:”和“时间:”,设置每个子面板的宽度分别为60、100、90、80,如图9-15所示。图9-15 为例题【例9-2】制作状态栏(3)编写程序,如下:procedure TForm1.ToolButton1Click(Sender:TObject);begin label1.Font.Name:=宋体;statusbar1.Panels0.Text:=字体:宋体;/第1格end;procedure TForm1.ToolButton2Click(Sender:TObject);begin label1.Font.name:=隶书;statusbar1.Panels0.Text:=字体:隶书;end;procedure TForm1.ToolButton4Click(Sender:TObject);begin if toolbutton4.Down then label1.Font.Style:=label1.Font.Style+fsitalic else label1.Font.Style:=label1.Font.Style-fsitalic;if(fsitalic in label1.Font.Style)and(fsunderline in label1.Font.Style)then statusbar1.Panels1.Text:=字形:斜体,下划线 /第2格 then statusbar1.Panels1.Text:=字形:斜体 then statusbar1.Panels1.Text:=字形:下划线 else statusbar1.Panels1.Text:=字形:end;procedure TForm1.ToolButton5Click(Sender:TObject);begin if toolbutton5.Down then label1.Font.Style:=label1.Font.Style+fsunderline else label1.Font.Style:=label1.Font.Style-fsunderline;if(fsitalic in label1.Font.Style)and(fsunderline in label1.Font.Style)then statusbar1.Panels1.Text:=字形:斜体,下划线 then statusbar1.Panels1.Text:=字形:斜体 then statusbar1.Panels1.Text:=字形:下划线 else statusbar1.Panels1.Text:=字形:end;procedure TForm1.n1Click(Sender:TObject);begin label1.Font.Size:=10;statusbar1.Panels2.Text:=大小:10;/第3格end;procedure TForm1.n2Click(Sender:TObject);begin label1.Font.Size:=20;statusbar1.Panels2.Text:=大小:20;end;procedure TForm1.n3Click(Sender:TObject);begin label1.Font.Size:=30;statusbar1.Panels2.Text:=大小:30;end;procedure TForm1.Timer1Timer(Sender:TObject);begin statusbar1.Panels3.Text:=时间:+timetostr(now);/第4格end;(4)运行结果如图9-16所示。图9-16 添加状态栏后的程序运行结果9.4 小结本章讲述了菜单、工具栏和状态栏。菜单、工具栏是本章的重点。读者应该学会制作多种风格和样式的菜单,例如弹出式菜单、下拉式菜单、含有小图标的菜单、复选菜单、单选菜单等等;读者还要学会制作外观优美的工具栏,比如含有小图标的工具栏、可以拖拽和停靠的工具栏,以及不同样式按钮的工具栏。读者要学会使用单面板和多面板的状态栏。习题1怎样设置单选菜单?2怎样设计复选菜单?3怎样设计单选的工具栏?4怎样设计复选的工具栏?5为【例3-4】添加状态栏,状态栏有4格,第1格提示对错,第2格给出答案,第3格给出做错的题数,第4格给出百分制的分数。6利用SpeedButton设置工具栏。7制作一个简单的编辑器,要求使用菜单、工具栏、状态栏。The end,thank you!