




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章菜单类组件和工具栏,Delphi实用教程,第4章菜单类组件和工具栏,第4章菜单类组件和工具栏,4.1Delphi7的菜单类组件简介,菜单分为下拉式菜单下拉式菜单的主菜单栏显示在窗体的标题栏之下,在下拉菜单中排列各菜单选项。快捷菜单快捷菜单通过单击鼠标右键可以出现在用户区的任何地方。,第4章菜单类组件和工具栏,4.2主菜单组件MainMenu,Delphi7通过MainMenu组件来创建主菜单,MainMenu组件为非可视组件。在设计阶段,为窗体添加菜单后,MainMenu组件也显示在窗体上,而运行时主菜单将自动显示在菜单栏的位置。MainMenu组件位于组件面板Standard选项卡上(图标为)。创建主菜单时,将该组件拖放到当前窗体中(MainMenu组件不能改变大小),这时对象查看器中会显示出MainMenu的属性。,MainMenu组件的属性,MainMenu组件,第4章菜单类组件和工具栏,4.2.1MainMenu组件的主要属性,1.AutoMerge属性AutoMerge属性属性决定在多窗口的应用程序中。非主窗体的主菜单是否和主窗体中的主菜单合并。2.Images属性Images属性是通过指定一组Bitmap或Icon的文件,在MenuItem中指定Images的索引,这样可以实现在菜单项中加入图标。3.Items属性Items属性用于存储主菜单中各菜单项的内容。在菜单编辑器中编辑菜单,编辑好后该项会自动设置。,第4章菜单类组件和工具栏,4.2.2菜单编辑器,双击窗体中的MainMenu组件或者在对象查看器中单击MainMenu组件的Items属性右侧的省略号将进入菜单编辑器。,菜单编辑器,在对象查看器中的Caption属性中输入“文件”后按回车键,在菜单编辑器中将看到一项标题为“文件”的菜单。因为是设计主菜单,所以第一项菜单将出现在窗体标题栏下的菜单栏上。输入完成后,在菜单编辑器中,刚才输入的菜单项下会自动产生一个空白菜单项,同时右侧出现一个虚框(当设计完一个子菜单后,单击该虚框将进入下一个子菜单的设计)。用鼠标单击菜单编辑器中的“文件”菜单,将在“文件”菜单下出现一个新的空白菜单,在Caption属性中输入“新建”,则该空白条上将出现“新建”的标题。,第4章菜单类组件和工具栏,4.2.2菜单编辑器,菜单项(MemuItem)中几个重要的属性:1.Caption属性Caption属性决定了菜单的标题。2.Name属性Name属性是菜单项对象的标志,在代码设计过程中通过Name对菜单进行引用。3.Checked属性Checked属性可以标记菜单项是否是选中状态。4.Enable属性该属性确定菜单项是否有效。5.ShortCut属性该属性给菜单项定义快捷键,可以通过下拉列表选择。6.Visible属性该属性决定菜单项是否可见。,第4章菜单类组件和工具栏,4.2.2菜单编辑器,7.Break属性该属性可以把一个菜单分成几列来显示。它有下面3种设置方式:lmbNone:在该菜单处不折行。lmbBarBreak:在该菜单处折行,并且两列之间有一竖线分隔。lmbBreak:在该菜单处折行,两列之间没有竖线分隔。,在菜单栏的Caption属性中输入“一”即可实现分隔线,第4章菜单类组件和工具栏,4.3快捷菜单组件PopupMenu4.3.1快捷菜单,在菜单编辑区中单击鼠标右键将打开快捷菜单。,菜单编辑的快捷菜单,在当前高亮显示的菜单项前插入一个菜单项。,删除当前高亮显示的菜单项,第4章菜单类组件和工具栏,4.3.1快捷菜单,菜单项加上相应的菜单OnClick事件代码有下面3种方法:方法1:通过在菜单编辑器中双击某一菜单项,Delphi7将自动定位到光标在代码编辑器相应菜单项的OnClick事件代码处。ProcedureTform1.File1Click(Sender:Tobject);Begin用户可以在此编写OnClick事件响应内容end;这时就可以在代码编辑区内编写正确的OnClick事件代码。双击主窗体中的菜单项,也可以进入菜单项的事件代码编辑区。,第4章菜单类组件和工具栏,4.3.1快捷菜单,方法2:通过对象查看器,在对象查看器中选择Event选项卡,在想要加入的事件右侧的输入区内双击即可进入相应的事件代码编辑区。例:想进入菜单项的OnDrawItem事件代码编辑区,可以在对象查看器的Event选项卡中选择OnDrawItem,单击右边的空白区,则进入如下所示的事件代码编辑区。ProcedureTform1.File1DrawItem(Sender:Tobject;Bcanvas:Tcanvas;Arect:rect;Selected:Boolean);Begin可以在此编写OnDrawItem的事件代码end;,第4章菜单类组件和工具栏,4.3.1快捷菜单,方法3:在应用程序代码中实现菜单设计,用TmainMenu类的方法,Create、Add、Insert和Delete。(1)Create方法语法:ConstructorCreate(Aowner:TComponent);override;Create方法是一个构造函数,调用它可以创建一个菜单项,并自动设置新建菜单项的Enabled和Visible属性。(2)Add方法语法:ProcedureAdd(Item:TMenuItem);Add方法向调用它的菜单英所在的菜单中加入一项命令。,第4章菜单类组件和工具栏,4.3.1快捷菜单,(3)Insert方法语法:ProcedureInsert(Index:Integer;Item:TMenuItem);例向窗体的主菜单中加入一条菜单项:ProcedureTform1.Button1Click(Sender:Tobject);VarNewItem:TmenuItem;beginNewItem:=TmenuItem.Create(FileMenu);tryNewItem.Caption:=要加入的菜单项名;FileMenu.Insert(1,NewItem);exceptNewItem.Free;Raise;end;end;,第4章菜单类组件和工具栏,4.3.1快捷菜单,(4)Delete方法语法:ProcedureDelete(Index:Integer);,菜单项索引值,第4章菜单类组件和工具栏,4.3.2快捷菜单设计,选择组件栏中Standard选项卡下的PopupMenu组件,并把它拖放到当前活动窗体中。要在应用程序中使PopupMenu有效,必须设置PupopMenu组件中的AutoPopup属性的值为True。在窗体中双击PopupMenu对象就可以进入菜单编辑器,在其中设计快捷菜单。,第4章菜单类组件和工具栏,捷菜单设计示例,【例】设计具如图所示的PopupMenu菜单。(1)窗体设计。在窗体上放置一个WebBrowser组件(位于组件面板的Internet选项卡上)和一个PopupMenu组件。,快捷菜单设计,第4章菜单类组件和工具栏,捷菜单设计示例,(2)组件的属性设置。(3)编写程序代码。procedureTform1.N1Click(Sender:Tobject);/“复制”菜单项的OnClick事件处理beginWebBrower1.CopyToClipboard;End;,第4章菜单类组件和工具栏,捷菜单设计示例,procedureTform1.N2Click(Sender:Tobject);/“剪切”菜单项的OnClick事件处理beginWebBrower1.CutToClipboard;End;procedureTform1.N3Click(Sender:Tobject);/“粘贴”菜单项的OnClick事件处理beginWebBrower1.PasteToClipboard;End;procedureTform1.N4Click(Sender:Tobject);/“删除”菜单项的OnClick事件处理beginWebBrower1.Clear;End;,第4章菜单类组件和工具栏,4.4快捷键及热键设计,快捷键是指用户可以通过按下Alt键各菜单项中带下划线的字母来打开菜单。热键是指用户可以通过一定键的组合,不用打开菜单就可以激活菜单。,具有热键的菜单项,在菜单项的Caption属性中输入属性值时,在要定义快捷键的字母前加“”,置菜单属性中的快捷键(ShortCut)属性,第4章菜单类组件和工具栏,4.5子菜单设计,1.使用CreateSubmenu快捷菜单命令设计子菜单2.通过拖放操作设计子菜单,拖动前的菜单,拖动后的子菜单,第4章菜单类组件和工具栏,4.6使用菜单模板4.6.1系统菜单模板,选择菜单编辑器快捷菜单中的InsertFormTemplate命令,将弹出一个InsertTemplate对话框,选中一个模板,然后单击OK按钮,即可在菜单编辑器中看到插入的菜单模板,并且窗体中也加入了该菜单模板。,菜单模板对话框,第4章菜单类组件和工具栏,4.6.2用户自定义菜单模板,用户自己设计的菜单也可以保存成菜单模板,选择快捷菜单中的SaveasTemplate命令,然后在弹出的SaveTemplate对话框键入要保存的模板名即可。要删除菜单模板,可单击菜单编辑器快捷菜单中的DeleteTemplate命令,将打开DeleteTemplate对话框,选择要删除的菜单模板,单击OK按钮即可。,添加新模板,第4章菜单类组件和工具栏,4.7工具栏,工具栏(Toolbar)通常是一个位于主窗体的上方,在菜单栏下面的面板,其中包含了许多控制组件,尤其是按钮。工具栏可以使应用程序为用户提供一个简单、快捷的菜单命令,使用户能够选择它,并有效的使用程序。,第4章菜单类组件和工具栏,4.7.1工具栏组件ToolBar,工具栏组件在组件面板的Win32选项卡上,工具栏组件可用来管理和安排可视的组件。使用工具栏组件具有下列优点:在工具栏组件上按钮的大小和间距自动保持一致。其他的控件也自动保持它们的相对位置和高度。若在一行中按钮显示不下,可以自动折行显示。,ToolBar(工具栏)组件,工具栏组件,第4章菜单类组件和工具栏,4.7.1工具栏组件ToolBar,ToolBar组件的常用属性:,Align属性的值及其含义,第4章菜单类组件和工具栏,4.7.2工具栏按钮ToolButton组件,工具栏按钮ToolButton组件是一种特殊的按钮组件,它只配合工具栏组件使用,不能放置在其他窗口组件上。要在工具栏组件上添加工具按钮,右单击工具栏组件在弹出的快捷菜单中选择NewButton菜单命令即可生成一个空白的工具栏按钮。主要属性有:1.Grouped属性该属性为布尔型,当它为True并且Style属性的值为tbsCheck时,同一组中的按钮一次只能选定一个。对按钮分组单击工具栏组件,在弹出的快捷菜单中选择“NewSeparator”菜单命令即可。2.ImageIndex属性该属性为整型,用来确定出现在工具栏按钮上的图标。若其值为,则工具栏按钮显示工具栏组件Images属性所确定的图标列表中的第1个图标。,第4章菜单类组件和工具栏,4.7.2工具栏按钮ToolButton组件,3.Down属性该属性为布尔型,当它为True时,工具栏按钮被选定,这时按钮为按下的。当按钮不选定时,按钮为弹起的。4.Style属性确定工具按钮的显示风格。,Style属性的值及其含义,第4章菜单类组件和工具栏,4.7.3快捷按钮操作模式,快捷菜单有三种操作模式:菜单项的有效和无效菜单项的Enabled属性用于设置其是否有效。复选标记菜单项的Checked属性进行设置。单选菜单项将几个相关的菜单项的RadioItem的属性值设置为True,然后将它们的GroupIndex属性设置为相同的值,并设置其中的一个菜单项的Checked属性为True即可。,第4章菜单类组件和工具栏,4.7.4工具栏的制作,制作步骤:设置图表列表。在Win32页标签中选择图表列表组件,将其放到窗体上。双击窗体的图标列表组件,打开“图标列表编辑框”。设置工具栏。在窗体上添加工具栏按钮组件,并设置其属性。设置工具栏按钮。在工具栏组件上添加工具栏按钮,并设置其属性。编写按钮事件的处理程序。运行程序,查看设置后的效果。,第4章菜单类组件和工具栏,菜单及工具栏组件示例,【例】设计一个Web浏览器,主要使用菜单及工具栏组件。(1)创建窗体和菜单:建立一个新项目添加Form添加WebBrowser组件菜单。,主菜单和快捷菜单,第4章菜单类组件和工具栏,菜单及工具栏组件示例,(2)设置工具栏组件:向窗体添加一个TCoolBar组件(该组件在Win32页上),并为其Bitmap属性指定一幅图。再向该TCoolBar组件中添加两个工具条组件ToolBar(ToolBar1、ToolBar2),将每一个工具条的EdgeBorder属性设置为,ShowCaption设置为True。(3)添加按钮:右击工具条,选择NewButton命令为每一工具条添加四个工具按钮。(4)添加其他组件如图:,第4章菜单类组件和工具栏,菜单及工具栏组件示例,(5)编写程序代码:procedureTMainForm.Exit1Click(Sender:TObject);beginClose;end;procedureTMainForm.FindAddress;导航到地址框中键入的URL地址varFlags:OLEVariant;beginFlags:=0;UpdateCombo:=True;/更新地址框中的URL显示/导航到指定URL地址WebBrowser1.Navigate(WideString(Urls.Text),Flags,Flags,Flags,Flags);end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.About1Click(Sender:TObject);beginShowAboutBox;end;procedureTMainForm.StopClick(Sender:TObject);beginWebBrowser1.Stop;/停止当前操作end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.URLsKeyDown(Sender:TObject;varKey:Word;Shift:TShiftState);如果用户在地址框中按下回车键,则导航到用户键入的URL地址上beginifKey=VK_ReturnthenbeginFindAddress;end;end;procedureTMainForm.URLsClick(Sender:TObject);beginFindAddress;end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.LinksClick(Sender:TObject);如果用户单击了一个链接,则导航到该链接所指的URLbeginif(SenderasTToolButton).Hint=thenExit;/从工具按钮的Hint属性中取得URLURLs.Text:=(SenderasTToolButton).Hint;FindAddress;end;procedureTMainForm.RefreshClick(Sender:TObject);/刷新页面beginFindAddress;end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.BackClick(Sender:TObject);返回到历史列表中的上一个页面beginURLs.Text:=HistoryListHistoryIndex-1;FindAddress;end;procedureTMainForm.ForwardClick(Sender:TObject);前进到历史列表中的下一个页面beginURLs.Text:=HistoryListHistoryIndex+1;FindAddress;end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.FormKeyDown(Sender:TObject;varKey:Word;Shift:TShiftState);利用键盘进行导航操作beginifShift=ssAltthenif(Key=VK_RIGHT)andForwardBtn.EnabledthenForwardBtn.Clickelseif(Key=VK_LEFT)andBackBtn.EnabledthenBackBtn.Click;end;procedureTMainForm.Toolbar3Click(Sender:TObject);beginwithSenderasTMenuItemdobeginChecked:=notChecked;Coolbar1.Visible:=Checked;end;end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.Statusbar2Click(Sender:TObject);beginwithSenderasTMenuItemdobeginChecked:=notChecked;StatusBar1.Visible:=Checked;end;end;procedureTMainForm.HomePageRequest(varMessage:TMessage);beginURLs.Text:=;/设置主页URLFindAddress;end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.FormCreate(Sender:TObject);beginHistoryIndex:=-1;/初始化历史记录索引HistoryList:=TStringList.Create;加载AVI文件到窗口中,以便显示一个小动画Animate1.FileName:=ExtractFilePath(Application.ExeName)+cool.avi;发送一个CM_HOMEPAGEREQUEST消息,让浏览器显示主页URL,这是因为我们设置的主页URL没有注册的缘故PostMessage(Handle,CM_HOMEPAGEREQUEST,0,0);end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.FormDestroy(Sender:TObject);窗口关闭后,释放历史记录beginHistoryList.Free;end;procedureTMainForm.BackActionUpdate(Sender:TObject);在做了后退操作后,根据历史记录设置后退按钮的状态beginifHistoryList.Count0thenBackAction.Enabled:=HistoryIndex0elseBackAction.Enabled:=False;end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.ForwardActionUpdate(Sender:TObject);在做了前进操作后,根据历史记录设置前进按钮的状态beginifHistoryList.Count0thenForwardAction.Enabled:=HistoryIndex=0)and(HistoryIndexHistoryIndexdoHistoryList.Delete(HistoryIndex);/移去最前面的一个URLHistoryIndex:=HistoryList.Add(URL);/将新URL加入到历史列表中endelse,第4章菜单类组件和工具栏,菜单及工具栏组件示例,HistoryIndex:=NewIndex;ifUpdateCombothenbeginUpdateCombo:=False;NewIndex:=URLs.Items.IndexOf(URL);ifNewIndex=-1thenURLs.Items.Insert(0,URL)elseURLs.Items.Move(NewIndex,0);end;URLs.Text:=URL;Statusbar1.Panels0.Text:=URL;/在状态栏显示当前URLend;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.WebBrowser1DownloadBegin(Sender:TObject);在开始下载页面时,让停止按钮变红,并播放avi动画文件beginStopBtn.ImageIndex:=4;Animate1.Active:=True;end;procedureTMainForm.WebBrowser1DownloadComplete(Sender:Object);在页面下载完毕后,让停止按钮变灰,并停止播放avi动画文件beginStopBtn.ImageIndex:=2;Animate1.Active:=False;end;,第4章菜单类组件和工具栏,菜单及工具栏组件示例,procedureTMainForm.ToolButton1Click(Sender:TObject);beginif(SenderasTToolButton).Hint=thenExit;/从工具按钮的Hint属性中取得URLURLs.Text:=(SenderasTToolButton).Hint;FindAddress;end;end.,(6)运行:,Web浏览器运行实例,第4章菜单类组件和工具栏,4.8状态栏4.8.1状态栏组件StatusBar,状态栏组件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设施设备运行检测评估
- 2025浙江宁波市慈溪市机关事务管理局直属机关幼儿园招聘派遣制人员3人笔试备考题库及答案解析
- 2025医师定期考核试题及答案
- 2025下半年浙江舟山市属事业单位招聘工作人员27人笔试备考试题及答案解析
- 从细节处体现出高贵的礼仪品质
- 农学中的农村环境卫生管理政策解读
- 2025年老年医学常见病诊治考试答案及解析
- 2025年中医妇科常见病症诊疗考试答案及解析
- 2025年四川宜宾市筠连县事业单位引进81名高层次人才笔试高频难、易错点备考题库带答案详解
- 2025年城市污水处理厂智能化升级改造对城市基础设施的影响报告
- 人美版九年级上册初中美术全册教案
- GB/T 2820.7-2024往复式内燃机驱动的交流发电机组第7部分:用于技术条件和设计的技术说明
- 2023年法律职业资格《主观题》真题及答案
- 2024-2025学年安徽省八年级语文上册第一次月考试卷04
- 单位委托员工办理水表业务委托书
- 2026年全年日历表带农历(A4可编辑可直接打印)预留备注位置
- 2024年全国期货从业资格之期货投资分析考试历年考试题附答案
- 矿山生态修复监理工作资料编制内容和要求、施工监理主要工作程序框图、工程施工与监理表式
- 药店药剂师专业劳动合同
- 小菜园租赁合同范本
- DL-T1342-2014电气接地工程用材料及连接件
评论
0/150
提交评论