第10章 菜单和工具栏.docx

上传人:b****4 文档编号:3499414 上传时间:2022-11-23 格式:DOCX 页数:13 大小:58.45KB
下载 相关 举报
第10章 菜单和工具栏.docx_第1页
第1页 / 共13页
第10章 菜单和工具栏.docx_第2页
第2页 / 共13页
第10章 菜单和工具栏.docx_第3页
第3页 / 共13页
第10章 菜单和工具栏.docx_第4页
第4页 / 共13页
第10章 菜单和工具栏.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

第10章 菜单和工具栏.docx

《第10章 菜单和工具栏.docx》由会员分享,可在线阅读,更多相关《第10章 菜单和工具栏.docx(13页珍藏版)》请在冰豆网上搜索。

第10章 菜单和工具栏.docx

第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组件提供一个可供其他组件使用的动作列表。

该组件通常与菜单栏和工具栏等组件一起使用,以减少代码重复,并对用户的各种操作进行统一管理。

在ActionList组件中可添加一系列动作(Action),用于集中响应用户的各种命令。

动作列表中的每一个动作都是TAction类的对象,分为预定义(标准)动作和自定义动作。

预定义动作由Delphi提供,使用这些动作时,无须编写代码或仅编写少量代码即可自动完成一些常用的标准操作。

Delphi将数十种预定义动作按功能分为12类,如编辑类(剪切、复制、粘贴等)、文件类(打开、保存等)、格式类(如粗体、斜体、下划线等)等等。

自定义动作由程序员定义,通常需要为其OnExecute事件编写代码以完成特定的操作。

二、示例

以下示例利用ActionList组件快速创建一个简单的文本编辑器。

1.设计界面

新建工程,在窗体上添加ActionList、ImageList、MainMenu、ToolBar、StatusBar和Memo组件各一,均采用默认名称。

2.设置组件属性

(1)设置窗体的ShowHint属性

将窗体的ShowHint属性设置为True,以便使窗体上的相关组件能够显示提示信息。

(2)设置ActionList组件属性

①与图像列表组件关联。

选定窗体上的ActionList组件,在属性窗口将Images属性设置为ImageList1。

②打开动作列表编辑器。

双击ActionList组件,打开动作列表编辑器,如图10.3.1所示。

图10.3.1动作列表编辑器

③添加新动作。

在动作列表编辑器空白处右击,选择【NewStandardAction…】(见图10.3.2),打开【StandardActionClasses】对话框,如图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】属性,单击子属性【Filter】右侧的…按钮,打开【FilterEditor】对话框,设置拟打开的文件类型,如图10.3.5所示。

图10.3.5设置文件类型过滤

⑥参照步骤⑤,对【FileSaveAs1】动作的属性做同样的设置。

亦可在属性窗口将【FileOpen1】动作的【Dialog|Filter】属性值直接复制到【FileSaveAs1】动作的同名属性中。

⑦关闭动作列表编辑器。

(3)设计菜单

①选定窗体上的MainMenu组件,在属性窗口将Images属性设置为ImageList1。

②双击MainMenu组件,打开菜单编辑器。

添加两个顶层菜单,标题分别为File和Edit。

③选定File下的第一个空白菜单项,在属性窗口将其Action属性设置为FileOpen1。

这一设置的作用是将菜单项与特定动作相关联。

④按上述方法依次设置其他菜单项与特定动作的关联。

(4)设计工具栏

①选定窗体上的工具栏,在属性窗口将Images属性设置为ImageList1。

②右击工具栏,选择【NewButton】命令,添加一个按钮,在属性窗口将其Action属性设置为FileOpen1。

③按上述方法依次添加其他按钮,并设置按钮与特定动作的关联。

(5)设置状态栏AutoHint属性

将状态栏的AutoHint属性设置为True,可以在程序运行时将当前动作的提示信息(长提示)自动显示在状态栏的第一个窗格中。

说明:

Hint属性中的提示信息可以设置为两部分:

短提示(Shorthint)和长提示(Longhint),二者之间用竖线“|”隔开。

短提示用于弹出式提示信息;长提示通常用于状态栏。

3.编写代码

在Delphi的预定义动作中,对编辑类动作(如剪切、复制、粘贴等)无须编写代码即可实现相关功能;而文件类动作(如打开、保存等)仅显示相关对话框,文件的实际读写操作需编写代码才能实现。

双击ActionList组件,打开动作列表编辑器,选定【Action】列表中的动作【FileOpen1】,在事件窗口双击OnAccept事件右侧空白处,为该事件编写如下代码:

Memo1.Lines.LoadFromFile(FileOpen1.Dialog.FileName);

为【FileSaveAs1】动作的OnAccept事件编写如下代码:

Memo1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName);

保存工程,编译运行。

上述步骤看似复杂,实际上只需数分钟即可完成。

第4节CoolBar组件和ControlBar组件

CoolBar和ControlBar组件主要用于容纳诸如ToolBar、ComboBox之类的组件,其界面效果比普通工具栏更具现代程序特征。

CoolBar位于组件板Win32页,ControlBar位于组件板Additional页,二者功能与界面效果相似。

一、CoolBar和ControlBar组件的异同

共性:

二者均可作为工具栏等组件的容器,用于制作现代样式的工具栏。

差异:

●CoolBar组件的内部分为多个区带(Band),工具栏等其他组件放置在不同区带中;ControlBar组件没有Band属性,工具栏等其他组件直接放置在ControlBar组件上。

●CoolBar组件易受Windows操作系统版本的影响;ControlBar组件基本上不受操作系统版本影响。

二、将主菜单放置在工具栏中

现代应用程序通常将主菜单封装在工具栏中,如Delphi集成开发环境、Word程序等。

将主菜单放置在工具栏中的方法如下:

首先设计主菜单,然后在CoolBar或ControlBar组件中添加工具栏,将工具栏组件的Menu属性设置为已有的主菜单组件,并将窗体的Menu属性清空。

注意:

工具栏不会自动跟踪菜单的变化。

将主菜单放置到工具栏中后,如果又对主菜单做了修改(如添加、删除菜单项,改变菜单项标题等),则这些改变不会反映在工具栏上的菜单中。

若需使二者同步,必须重新设置工具栏的Menu属性。

三、示例

将本教案第3节中“利用ActionList组件快速创建文本编辑器”的示例略作修改,将工具栏放置在CoolBar或ControlBar组件中。

操作步骤如下:

①在磁盘上新建两个文件夹,名称分别为【CoolBar】和【ControlBar】。

将第3节中示例工程的所有文件分别复制到这两个文件夹中。

②打开【CoolBar】文件夹中的工程,在窗体上添加一个CoolBar组件,在该组件中添加一个工具栏,按本节“二”所述方法将主菜单放置在该工具栏中。

③将窗体中原有工具栏剪切,然后粘贴到CoolBar组件中。

④打开【ControlBar】文件夹中的工程,参照上述第②、③步,将工具栏和菜单栏放置在ControlBar组件中。

第5节动态菜单项和工具栏按钮

程序运行时,可以在代码中动态添加菜单项和工具栏按钮。

基本思路如下:

●动态生成TMenuItem类和TToolButton类的实例。

●动态设置这些对象实例的相关属性。

●动态设置这些菜单项和工具栏按钮的OnClick事件过程。

●把动态生成的TMenuItem和TToolButton的实例添加到相应的菜单和工具栏。

具体应用实例参见教材232~234页【例10-8】。

练习

1.创建主菜单

练习使用菜单编辑器创建主菜单、菜单项、子菜单,为菜单项添加快捷键和加速键。

2.创建快捷菜单

练习使用菜单编辑器创建弹出式菜单。

3.创建带有图标的菜单

为前面创建的主菜单和快捷菜单中的菜单项添加图标。

4.创建工具栏

为上面创建的主菜单和快捷菜单中的常用菜单项配置工具栏,并且将工具栏按钮与特定菜单项建立关联。

5.使用动作列表组件

根据本章第3节所述,使用动作列表等组件创建简单文本编辑器。

6.使用CoolBar组件和ControlBar组件

根据本章第4节所述,练习使用CoolBar组件和ControlBar组件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

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

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