第10章菜单和工具栏

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第10章菜单和工具栏本章重点主菜单组件MainMenu弹出式菜单组件PopupMenu工具栏组件ToolBar状态栏组件StatusBar动作列表组件ActionListCoolBar组件和ControlBar组件菜单项和工具栏按钮的动态创建第1节主菜单组件和弹出式菜单组件菜单分为下拉式菜单(主菜单)和弹出式菜单(快捷菜单)。在Delphi中,这两种菜单分别用MainMenu和PopupMenu组件制作,二者均位于组件板的Standard页。一、主菜单组件◆1.主要属性(1)Items属性Items属性含有主菜单中所有菜单项(TMenuItem对象)的信息。设计时单击该属性右侧的…按钮即可打开菜单设计(编辑)器(MenuDesigner)。(2)Images属性当创建带有图标的菜单项时,应将Images属性设置为含有图片的ImageList组件。2.菜单设计器在设计阶段,使用菜单设计(编辑)器制作菜单。(1)添加主菜单组件双击Standard组件面板中的主菜单(MainMenu)图标,将组件添加到窗体上。(2)启动菜单设计器方法1:双击窗体上的主菜单组件。方法2:右击主菜单组件,选择“MenuDesigner”。方法3:选中窗体上的主菜单组件,然后单击属性(Property)窗口中Items属性值框右侧的...按钮。(3)创建菜单项①设置菜单项标题在菜单设计器中选定第一个顶层菜单,在属性窗口输入菜单项标题(Caption属性)后按回车键。然后依次创建各菜单项。分隔线为“-”。②设置菜单项名称通过设置菜单标题添加菜单项时,Delphi自动生成菜单名称(Name属性)。如果菜单标题(Caption)为中文字符串,自动生成的菜单名称不直观(如F1、N1等),可以在属性窗口修改菜单项的Name属性,以便增强代码的可读性。注意:菜单名称(Name)不能使用汉字。3.设置加速键与快捷键(补充)快捷键及加速键都是指不用鼠标而通过键盘访问菜单命令。(1)加速键加速键(AcceleratorKeys)是指与ALT键同时按下的字母键,又称访问键。在程序界面中,加速键字母带有下划线。加速键用于打开菜单、执行命令、选择对象或移向对象。例如,按ALT+F键可以打开“文件”菜单。设置加速键的方法是在菜单项标题(Caption)的加速键字母前加&。(2)快捷键快捷键(KeyboardShortcuts或ShortcutKeys)是指无须打开菜单,即可执行一个菜单命令的功能键或组合键。例如,在Delphi集成开发环境中按F9键运行程序,按CTRL+C键复制对象等。设置快捷键的方法是在属性窗口通过ShortCut属性选择。说明:“热键”(HotKeys)一词在程序设计领域的使用较混乱,有时指加速键,有时又指快捷键。为了防止误解和歧义,应尽量避免使用该词作为编程术语。4.子菜单设计(1)创建子菜单在菜单设计器中右击菜单项,选择“CreateSubmenu”即可创建子菜单。(2)移动菜单项在菜单设计器中拖动菜单项至所需位置。5.创建带有图标的菜单(补充)双击Win32组件面板中的ImageList图标,将组件添加到窗体上。双击窗体中的ImageList组件,打开ImageListEditor,单击【Add...】按钮添加图片。选择窗体中的菜单组件,在属性窗口将Images属性设置为ImageList组件(如ImageList1)。双击菜单组件,打开菜单编辑器。选择需要为其添加图标的菜单项,在属性窗口单击ImageIndex属性右侧的下拉按钮,选择图片。若将该属性值设为-1,则清除本菜单项的图片。常用位图或图标文件所在文件夹(“X”为Delphi或VB所在盘符):Delphi:X:\ProgramFiles\CommonFiles\BorlandShared\Images\(Buttons或Icons)VB:X:\ProgramFiles\MicrosoftVisualStudio\Common\Graphics\(Bitmaps或Icons)6.处理菜单项单击事件(补充)菜单组件中的每个菜单项都是一个TMenuItem对象,要使菜单发挥作用,必须为各菜单项(顶层菜单除外)OnClick事件编写代码。生成菜单项单击事件框架代码的方法如下:方法1:若菜单设计器已关闭,单击窗体上菜单中的特定菜单项;方法2:在菜单设计器中双击特定菜单项;方法3:在菜单设计器中选择特定菜单项,然后在事件窗口选定OnClick事件,双击右侧空白处或按Ctrl+回车键。二、弹出式菜单组件弹出式菜单(PopupMenu)又称快捷菜单。弹出式菜单组件组件用于建立弹出式快捷菜单。设计方式与MainMenu相同。1.添加弹出式菜单组件双击Standard组件面板中的弹出式菜单(PopupMenu)图标,将组件添加到窗体上。2.弹出式菜单设计弹出式菜单设计器的启动、菜单项的创建以及菜单项单击事件处理等均与主菜单相同。大部分可视组件具有PopupMenu属性,若需在某一对象(如窗体或控件)上使用弹出式菜单,应将该对象的PopupMenu属性设置为已建立的弹出式菜单。一个窗体中可以含有多个弹出式菜单,分别供不同对象使用。第2节工具栏和状态栏组件一、工具栏组件◆1.工具栏组件工具栏(ToolBar)组件位于组件板的Win32页。在窗体上添加ToolBar组件后,默认停靠在窗体客户区的最上端(标题栏和菜单栏的下方),其宽度会自动适应窗体宽度的变化。ToolBar组件的常用属性见教材219页表10.6,其中最常用的属性是Images和ShowHint。前者用于指定为工具栏按钮提供图标的ImageList组件,后者用于指定是否显示各按钮的提示文本。2.工具栏按钮对象工具栏上可以放置工具栏按钮和其他组件。在工具栏中添加的每一个按钮和分隔符都是一个TToolButton对象,可以为每一个TToolButton对象设置属性和编写相应的事件。工具栏按钮对象的常用属性见教材220页表10.7,其中最常用的是Style(样式)和Hint(提示文本)。3.工具栏的制作制作工具栏的一般步骤如下。(1)添加ImageList组件双击Win32组件面板中的ImageList图标,将组件添加到窗体上。双击窗体中的ImageList组件,打开ImageListEditor,单击【Add...】按钮添加图片。提示:工具栏可以与菜单组件共用一个ImageList组件。(2)添加工具栏组件双击Win32组件面板中的ToolBar图标,将组件添加到窗体上。设置ShowHint属性为True,以便显示各按钮的提示文本。(3)建立图片关联选择窗体上的工具栏组件,在属性窗口将Images属性设置为窗体上已有的ImageList组件(如ImageList1)。(4)添加工具栏按钮右击工具栏组件,选择【NewButton】命令,即可添加一个按钮,若选择【NewSeparator】命令,则添加一个分隔符。在属性窗口单击ImageIndex属性右侧的下拉按钮,为新添加的按钮选择图片;选择Hint属性,为新按钮设置提示文本。(5)处理工具栏按钮单击事件双击工具栏中的特定按钮,即可生成该按钮单击事件的框架代码。提示:工具栏按钮可以与特定菜单项共用一个单击事件过程。4.工具栏与菜单栏的协同(补充)在实际应用中,工具栏中的按钮通常与菜单中最常用的的菜单项对应,可以用它们访问应用程序最常用的功能和命令。Delphi为工具栏与菜单栏的协同工作提供了十分有效的解决方案。在Delphi中,每个工具栏按钮都有一个特殊属性MenuItem,在属性窗口单击该属性右侧的下拉按钮▼,选择已有的菜单项,即可将该按钮与特定菜单命令建立关联。利用这一特性可以使代码的编写大为简化,即只需编写菜单项的单击事件代码,而不必在代码中处理工具栏按钮的单击事件。5.设置工具栏按钮的提示文本(补充)将工具栏组件的ShowHint属性设置为True。根据不同情况设置Hint属性:若工具栏按钮未与菜单项建立关联,则设置工具栏按钮的Hint属性;若工具栏按钮已经与菜单项建立关联,则设置菜单项的Hint属性。二、状态栏组件1.状态栏组件状态栏(StatusBar)组件在组件面板的Win32页,双击Win32组件面板中的StatusBar图标,即可将状态栏添加到窗体上。状态栏用于显示程序的操作提示及当前状态等信息,一般位于窗体的底部。StatusBar组件的常用属性见教材225页表10.9,其中最常用的属性是Panels。该属性含有状态栏中各显示窗格(Panel,面板)的信息,每个窗格都是一个TStatusPanel对象。设计时在状态栏中添加、删除或修改窗格等操作通常借助于窗格编辑对话框进行。单击Panels属性右侧的…按钮,即可打开该对话框。2.状态栏的制作制作状态栏的一般步骤如下:单击Panels属性右侧的…按钮,打开窗格编辑对话框。在窗格编辑对话框中添加、删除窗格或改变窗格的顺序。设置窗格的属性。如Algnment属性用于确定窗格中字符串的对齐方式,Text属性用于设置显示在窗格中的文字。3.示例以下示例利用状态栏显示多行编辑组件中插入点的位置(行、列)。(1)设计界面在窗体上添加一个Memo组件和一个状态栏。选定状态栏,单击Panels属性右侧的…按钮,打开窗格编辑对话框,添加一个窗格。(2)声明私有方法为了使代码具有较强的通用性,提高代码的复用程度,本例声明了一个私有方法MemoKeyMouse,用于获取多行编辑组件中插入点的位置。具体操作如下:①方法的声明在单元接口部分的私有声明段(private)声明上述方法的首部:{自定义私有方法,用于获取多行编辑组件中插入点的位置}functionMemoKeyMouse(CMemo:TCustomMemo):string;②方法的实现在单元实现部分(implementation)实现上述方法:{以下是私有方法MemoKeyMouse的实现部分,参数CMemo是多行编辑组件对象,返回值是由插入点位置构成的字符串}functionTForm1.MemoKeyMouse(CMemo:TCustomMemo):string;varX,Y,S:string;begin{TCustomMemo是TMemo、TDBMemo、TRichEdit等多行编辑组件的基类,在该类中定义了CaretPos属性,用于获取插入点的位置}X:=IntToStr(CMemo.CaretPos.X);//列Y:=IntToStr(CMemo.CaretPos.Y+1);//行S:=StringOfChar('',8);//生成8个空格Result:='位置:'+S+Y+'行'+S+X+'列';//返回值end;(3)方法的调用在Memo组件的OnClick和OnKeyUp事件调用上述方法。例如:procedureTForm1.Memo1Click(Sender:TObject);begin{事件过程中的Sender参数代表响应当前事件的对象,在本例中为Memo1。自定义私有方法MemoKeyMouse的参数CMemo为TCustomMemo类型;使用类操作符as可将Sender映射为该类型。}StatusBar1.Panels[0].Text:=MemoKeyMouse(SenderasTCustomMemo);end;运行程序,在Memo组件中输入文本,观察状态栏中的变化。第3节动作列表组件一、动作列表组件简介动作列表(ActionList)组件可以集中处理许多常用的操作,把用户界面和应用逻辑分开,减少程序代码的长度,方便程序的维护和调试。该位于组件板Standard页,双击该组件打开动作列表编辑器后即可设计其中的动作(Action)。设计完动作列表后,只需将用户界面元素如菜单项、工具栏按钮等与动作相关联即可。ActionList组件提供一个可供其他组件使用的动作列表。该组件通常与菜单栏和工具栏等组件一起使用,以减少代码重复,并对用户的各种操作进行统一管

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功