ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:58.45KB ,
资源ID:3499414      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3499414.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第10章 菜单和工具栏.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第10章 菜单和工具栏.docx

1、第10章 菜单和工具栏第10章 菜单和工具栏本章重点 主菜单组件MainMenu 弹出式菜单组件PopupMenu 工具栏组件ToolBar 状态栏组件StatusBar 动作列表组件ActionList CoolBar组件和ControlBar组件 菜单项和工具栏按钮的动态创建第1节 主菜单组件和弹出式菜单组件菜单分为下拉式菜单(主菜单)和弹出式菜单(快捷菜单)。在Delphi中,这两种菜单分别用MainMenu和PopupMenu组件制作,二者均位于组件板的Standard页。一、主菜单组件1. 主要属性(1)Items属性Items属性含有主菜单中所有菜单项(TMenuItem对象)的信

2、息。设计时单击该属性右侧的按钮即可打开菜单设计(编辑)器(Menu Designer)。(2)Images属性当创建带有图标的菜单项时,应将Images属性设置为含有图片的ImageList组件。2. 菜单设计器在设计阶段,使用菜单设计(编辑)器制作菜单。(1)添加主菜单组件双击Standard组件面板中的主菜单(MainMenu)图标,将组件添加到窗体上。(2)启动菜单设计器方法1:双击窗体上的主菜单组件。方法2:右击主菜单组件,选择“Menu Designer”。方法3:选中窗体上的主菜单组件,然后单击属性(Property)窗口中Items属性值框右侧的.按钮。(3)创建菜单项 设置菜单

3、项标题在菜单设计器中选定第一个顶层菜单,在属性窗口输入菜单项标题(Caption属性)后按回车键。然后依次创建各菜单项。分隔线为“”。 设置菜单项名称通过设置菜单标题添加菜单项时,Delphi自动生成菜单名称(Name属性)。如果菜单标题(Caption)为中文字符串,自动生成的菜单名称不直观(如F1、N1等),可以在属性窗口修改菜单项的Name属性,以便增强代码的可读性。注意:菜单名称(Name)不能使用汉字。3. 设置加速键与快捷键(补充)快捷键及加速键都是指不用鼠标而通过键盘访问菜单命令。(1)加速键加速键(Accelerator Keys)是指与ALT键同时按下的字母键,又称访问键。在

4、程序界面中,加速键字母带有下划线。加速键用于打开菜单、执行命令、选择对象或移向对象。例如,按ALT+F键可以打开“文件”菜单。设置加速键的方法是在菜单项标题(Caption)的加速键字母前加&。(2)快捷键快捷键(Keyboard Shortcuts或Shortcut Keys)是指无须打开菜单,即可执行一个菜单命令的功能键或组合键。例如,在Delphi集成开发环境中按F9键运行程序,按CTRL+C键复制对象等。设置快捷键的方法是在属性窗口通过ShortCut属性选择。说明:“热键”(Hot Keys)一词在程序设计领域的使用较混乱,有时指加速键,有时又指快捷键。为了防止误解和歧义,应尽量避免

5、使用该词作为编程术语。4. 子菜单设计(1)创建子菜单在菜单设计器中右击菜单项,选择“Create Submenu”即可创建子菜单。(2)移动菜单项在菜单设计器中拖动菜单项至所需位置。5. 创建带有图标的菜单(补充)双击Win32组件面板中的ImageList图标,将组件添加到窗体上。双击窗体中的ImageList组件,打开ImageList Editor,单击【Add.】按钮添加图片。选择窗体中的菜单组件,在属性窗口将Images属性设置为ImageList组件(如ImageList1)。双击菜单组件,打开菜单编辑器。选择需要为其添加图标的菜单项,在属性窗口单击ImageIndex属性右侧的

6、下拉按钮,选择图片。若将该属性值设为-1,则清除本菜单项的图片。常用位图或图标文件所在文件夹(“X”为Delphi或VB所在盘符):Delphi:X:Program FilesCommon FilesBorland SharedImages (Buttons或Icons)VB:X:Program FilesMicrosoft Visual StudioCommonGraphics (Bitmaps或Icons)6. 处理菜单项单击事件(补充)菜单组件中的每个菜单项都是一个TMenuItem对象,要使菜单发挥作用,必须为各菜单项(顶层菜单除外)OnClick事件编写代码。生成菜单项单击事件框架代

7、码的方法如下:方法1:若菜单设计器已关闭,单击窗体上菜单中的特定菜单项;方法2:在菜单设计器中双击特定菜单项;方法3:在菜单设计器中选择特定菜单项,然后在事件窗口选定OnClick事件,双击右侧空白处或按Ctrl+回车键。二、弹出式菜单组件弹出式菜单(PopupMenu)又称快捷菜单。弹出式菜单组件组件用于建立弹出式快捷菜单。设计方式与MainMenu相同。1. 添加弹出式菜单组件双击Standard组件面板中的弹出式菜单(PopupMenu)图标,将组件添加到窗体上。2. 弹出式菜单设计弹出式菜单设计器的启动、菜单项的创建以及菜单项单击事件处理等均与主菜单相同。大部分可视组件具有PopupM

8、enu属性,若需在某一对象(如窗体或控件)上使用弹出式菜单,应将该对象的PopupMenu属性设置为已建立的弹出式菜单。一个窗体中可以含有多个弹出式菜单,分别供不同对象使用。第2节 工具栏和状态栏组件一、工具栏组件1. 工具栏组件工具栏(ToolBar)组件位于组件板的Win32页。在窗体上添加ToolBar组件后,默认停靠在窗体客户区的最上端(标题栏和菜单栏的下方),其宽度会自动适应窗体宽度的变化。ToolBar组件的常用属性见教材219页表10.6,其中最常用的属性是Images和ShowHint。前者用于指定为工具栏按钮提供图标的ImageList组件,后者用于指定是否显示各按钮的提示文

9、本。2. 工具栏按钮对象工具栏上可以放置工具栏按钮和其他组件。在工具栏中添加的每一个按钮和分隔符都是一个TToolButton对象,可以为每一个TToolButton对象设置属性和编写相应的事件。工具栏按钮对象的常用属性见教材220页表10.7,其中最常用的是Style(样式)和Hint(提示文本)。3. 工具栏的制作制作工具栏的一般步骤如下。(1)添加ImageList组件双击Win32组件面板中的ImageList图标,将组件添加到窗体上。双击窗体中的ImageList组件,打开ImageList Editor,单击【Add.】按钮添加图片。提示:工具栏可以与菜单组件共用一个ImageLi

10、st组件。(2)添加工具栏组件双击Win32组件面板中的ToolBar图标,将组件添加到窗体上。设置ShowHint属性为True,以便显示各按钮的提示文本。(3)建立图片关联选择窗体上的工具栏组件,在属性窗口将Images属性设置为窗体上已有的ImageList组件(如ImageList1)。(4)添加工具栏按钮右击工具栏组件,选择【New Button】命令,即可添加一个按钮,若选择【New Separator】命令,则添加一个分隔符。在属性窗口单击ImageIndex属性右侧的下拉按钮,为新添加的按钮选择图片;选择Hint属性,为新按钮设置提示文本。(5)处理工具栏按钮单击事件双击工具栏

11、中的特定按钮,即可生成该按钮单击事件的框架代码。提示:工具栏按钮可以与特定菜单项共用一个单击事件过程。4. 工具栏与菜单栏的协同(补充)在实际应用中,工具栏中的按钮通常与菜单中最常用的的菜单项对应,可以用它们访问应用程序最常用的功能和命令。Delphi为工具栏与菜单栏的协同工作提供了十分有效的解决方案。在Delphi中,每个工具栏按钮都有一个特殊属性MenuItem,在属性窗口单击该属性右侧的下拉按钮,选择已有的菜单项,即可将该按钮与特定菜单命令建立关联。利用这一特性可以使代码的编写大为简化,即只需编写菜单项的单击事件代码,而不必在代码中处理工具栏按钮的单击事件。5设置工具栏按钮的提示文本(补

12、充) 将工具栏组件的ShowHint属性设置为True。 根据不同情况设置Hint属性:若工具栏按钮未与菜单项建立关联,则设置工具栏按钮的Hint属性;若工具栏按钮已经与菜单项建立关联,则设置菜单项的Hint属性。二、状态栏组件1. 状态栏组件状态栏(StatusBar)组件在组件面板的Win32页,双击Win32组件面板中的StatusBar图标,即可将状态栏添加到窗体上。状态栏用于显示程序的操作提示及当前状态等信息,一般位于窗体的底部。StatusBar组件的常用属性见教材225页表10.9,其中最常用的属性是Panels。该属性含有状态栏中各显示窗格(Panel,面板)的信息,每个窗格都

13、是一个TStatusPanel对象。设计时在状态栏中添加、删除或修改窗格等操作通常借助于窗格编辑对话框进行。单击Panels属性右侧的按钮,即可打开该对话框。2. 状态栏的制作制作状态栏的一般步骤如下: 单击Panels属性右侧的按钮,打开窗格编辑对话框。 在窗格编辑对话框中添加、删除窗格或改变窗格的顺序。 设置窗格的属性。如Algnment属性用于确定窗格中字符串的对齐方式,Text属性用于设置显示在窗格中的文字。3. 示例以下示例利用状态栏显示多行编辑组件中插入点的位置(行、列)。(1)设计界面在窗体上添加一个Memo组件和一个状态栏。选定状态栏,单击Panels属性右侧的按钮,打开窗格编

14、辑对话框,添加一个窗格。(2)声明私有方法为了使代码具有较强的通用性,提高代码的复用程度,本例声明了一个私有方法MemoKeyMouse,用于获取多行编辑组件中插入点的位置。具体操作如下: 方法的声明在单元接口部分的私有声明段(private)声明上述方法的首部: 自定义私有方法,用于获取多行编辑组件中插入点的位置 function MemoKeyMouse(CMemo: TCustomMemo): string; 方法的实现在单元实现部分(implementation)实现上述方法:以下是私有方法 MemoKeyMouse 的实现部分, 参数 CMemo 是多行编辑组件对象,返回值是由插入点

15、位置构成的字符串function TForm1.MemoKeyMouse(CMemo: TCustomMemo): string;var X,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 +

16、Y + 行 + S + X + 列; / 返回值end;(3)方法的调用在Memo组件的OnClick和OnKeyUp事件调用上述方法。例如:procedure TForm1.Memo1Click(Sender: TObject);begin 事件过程中的 Sender 参数代表响应当前事件的对象,在本例中为 Memo1。 自定义私有方法 MemoKeyMouse 的参数 CMemo 为 TCustomMemo 类型; 使用类操作符 as 可将 Sender 映射为该类型。 StatusBar1.Panels0.Text := MemoKeyMouse(Sender as TCustomMem

17、o);end;运行程序,在Memo组件中输入文本,观察状态栏中的变化。第3节 动作列表组件一、动作列表组件简介动作列表(ActionList)组件可以集中处理许多常用的操作,把用户界面和应用逻辑分开,减少程序代码的长度,方便程序的维护和调试。该位于组件板Standard页,双击该组件打开动作列表编辑器后即可设计其中的动作(Action)。设计完动作列表后,只需将用户界面元素如菜单项、工具栏按钮等与动作相关联即可。ActionList组件提供一个可供其他组件使用的动作列表。该组件通常与菜单栏和工具栏等组件一起使用,以减少代码重复,并对用户的各种操作进行统一管理。在ActionList组件中可添加

18、一系列动作(Action),用于集中响应用户的各种命令。动作列表中的每一个动作都是TAction类的对象,分为预定义(标准)动作和自定义动作。预定义动作由Delphi提供,使用这些动作时,无须编写代码或仅编写少量代码即可自动完成一些常用的标准操作。Delphi将数十种预定义动作按功能分为12类,如编辑类(剪切、复制、粘贴等)、文件类(打开、保存等)、格式类(如粗体、斜体、下划线等)等等。自定义动作由程序员定义,通常需要为其OnExecute事件编写代码以完成特定的操作。二、示例以下示例利用ActionList组件快速创建一个简单的文本编辑器。1. 设计界面新建工程,在窗体上添加ActionLi

19、st、ImageList、MainMenu、ToolBar、StatusBar和Memo组件各一,均采用默认名称。2. 设置组件属性(1)设置窗体的ShowHint属性将窗体的ShowHint属性设置为True,以便使窗体上的相关组件能够显示提示信息。(2)设置ActionList组件属性 与图像列表组件关联。选定窗体上的ActionList组件,在属性窗口将Images属性设置为ImageList1。 打开动作列表编辑器。双击ActionList组件,打开动作列表编辑器,如图10.3.1所示。图10.3.1 动作列表编辑器 添加新动作。在动作列表编辑器空白处右击,选择【New Standar

20、d Action】(见图10.3.2),打开【Standard Action Classes】对话框,如图10.3.3所示。图10.3.2 添加新动作图10.3.3 标准动作类对话框 选择动作。在对话框中按图10.3.3所示选择【Edit】和【File】类中的动作,单击OK,返回动作列表编辑器。此时可见动作列表编辑器中的内容发生了变化,如图10.3.4所示。其中的图标是系统自动添加的,并且已自动存放到窗体上的ImageList组件中。图10.3.4 已添加的标准动作 设置文件类型过滤。选定【Action】列表中的动作【FileOpen1】,在属性窗口展开【Dialog】属性,单击子属性【Fil

21、ter】右侧的按钮,打开【Filter Editor】对话框,设置拟打开的文件类型,如图10.3.5所示。图10.3.5 设置文件类型过滤 参照步骤,对【FileSaveAs1】动作的属性做同样的设置。亦可在属性窗口将【FileOpen1】动作的【Dialog | Filter】属性值直接复制到【FileSaveAs1】动作的同名属性中。 关闭动作列表编辑器。(3)设计菜单 选定窗体上的MainMenu组件,在属性窗口将Images属性设置为ImageList1。 双击MainMenu组件,打开菜单编辑器。添加两个顶层菜单,标题分别为File和Edit。 选定File下的第一个空白菜单项,在属

22、性窗口将其Action属性设置为FileOpen1。这一设置的作用是将菜单项与特定动作相关联。 按上述方法依次设置其他菜单项与特定动作的关联。(4)设计工具栏 选定窗体上的工具栏,在属性窗口将Images属性设置为ImageList1。 右击工具栏,选择【New Button】命令,添加一个按钮,在属性窗口将其Action属性设置为FileOpen1。 按上述方法依次添加其他按钮,并设置按钮与特定动作的关联。(5)设置状态栏AutoHint属性将状态栏的AutoHint属性设置为True,可以在程序运行时将当前动作的提示信息(长提示)自动显示在状态栏的第一个窗格中。说明:Hint属性中的提示信

23、息可以设置为两部分:短提示(Short hint)和长提示(Long hint),二者之间用竖线“|”隔开。短提示用于弹出式提示信息;长提示通常用于状态栏。3. 编写代码在Delphi的预定义动作中,对编辑类动作(如剪切、复制、粘贴等)无须编写代码即可实现相关功能;而文件类动作(如打开、保存等)仅显示相关对话框,文件的实际读写操作需编写代码才能实现。双击ActionList组件,打开动作列表编辑器,选定【Action】列表中的动作【FileOpen1】,在事件窗口双击OnAccept事件右侧空白处,为该事件编写如下代码: Memo1.Lines.LoadFromFile(FileOpen1.D

24、ialog.FileName);为【FileSaveAs1】动作的OnAccept事件编写如下代码: Memo1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName);保存工程,编译运行。上述步骤看似复杂,实际上只需数分钟即可完成。第4节 CoolBar组件和ControlBar组件CoolBar和ControlBar组件主要用于容纳诸如ToolBar、ComboBox之类的组件,其界面效果比普通工具栏更具现代程序特征。CoolBar位于组件板Win32页,ControlBar位于组件板Additional页,二者功能与界面效果相似。一、CoolBar和C

25、ontrolBar组件的异同共性:二者均可作为工具栏等组件的容器,用于制作现代样式的工具栏。差异: CoolBar组件的内部分为多个区带(Band),工具栏等其他组件放置在不同区带中;ControlBar组件没有Band属性,工具栏等其他组件直接放置在ControlBar组件上。 CoolBar组件易受Windows操作系统版本的影响;ControlBar组件基本上不受操作系统版本影响。二、将主菜单放置在工具栏中现代应用程序通常将主菜单封装在工具栏中,如Delphi集成开发环境、Word程序等。将主菜单放置在工具栏中的方法如下:首先设计主菜单,然后在CoolBar或ControlBar组件中添

26、加工具栏,将工具栏组件的Menu属性设置为已有的主菜单组件,并将窗体的Menu属性清空。注意:工具栏不会自动跟踪菜单的变化。将主菜单放置到工具栏中后,如果又对主菜单做了修改(如添加、删除菜单项,改变菜单项标题等),则这些改变不会反映在工具栏上的菜单中。若需使二者同步,必须重新设置工具栏的Menu属性。三、示例将本教案第3节中“利用ActionList组件快速创建文本编辑器”的示例略作修改,将工具栏放置在CoolBar或ControlBar组件中。操作步骤如下: 在磁盘上新建两个文件夹,名称分别为【CoolBar】和【ControlBar】。将第3节中示例工程的所有文件分别复制到这两个文件夹中。

27、 打开【CoolBar】文件夹中的工程,在窗体上添加一个CoolBar组件,在该组件中添加一个工具栏,按本节“二”所述方法将主菜单放置在该工具栏中。 将窗体中原有工具栏剪切,然后粘贴到CoolBar组件中。 打开【ControlBar】文件夹中的工程,参照上述第、步,将工具栏和菜单栏放置在ControlBar组件中。第5节 动态菜单项和工具栏按钮程序运行时,可以在代码中动态添加菜单项和工具栏按钮。基本思路如下: 动态生成TMenuItem类和TToolButton类的实例。 动态设置这些对象实例的相关属性。 动态设置这些菜单项和工具栏按钮的OnClick事件过程。 把动态生成的TMenuIte

28、m和TToolButton的实例添加到相应的菜单和工具栏。具体应用实例参见教材232234页【例10-8】。练习1. 创建主菜单练习使用菜单编辑器创建主菜单、菜单项、子菜单,为菜单项添加快捷键和加速键。2. 创建快捷菜单练习使用菜单编辑器创建弹出式菜单。3. 创建带有图标的菜单为前面创建的主菜单和快捷菜单中的菜单项添加图标。4. 创建工具栏为上面创建的主菜单和快捷菜单中的常用菜单项配置工具栏,并且将工具栏按钮与特定菜单项建立关联。5. 使用动作列表组件根据本章第3节所述,使用动作列表等组件创建简单文本编辑器。6. 使用CoolBar组件和ControlBar组件根据本章第4节所述,练习使用CoolBar组件和ControlBar组件。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1