4.菜单栏、工具栏和状态栏

在可视化程序设计中,每个应用程序都包含一个主窗体。主窗体并不仅仅是一个Form窗体,一个完整的应用程序窗体除了Form窗体外,还应包括菜单栏、工具栏和状态栏等相关组件。这三种组件是主程序窗体的重要组成部分,通过这些组件,可以方便地完成各项操作并了解当前程序的运行状态。本章将介绍如何创建菜单栏、工具栏、状态栏。

4.1 菜单栏
通常,菜单可以看作是命令的列表,使用菜单组件,可以将应用程序中的所有命令按类别分成多个菜单项,每个菜单项又包含了多个属于该类别的多个命令。Delphi开发系统中,菜单组件主要分为主菜单和弹出菜单两类。
4.1.1 主菜单
应用程序工作界面菜单栏中的菜单就是主菜单。下图所示即为一个打开的系统主菜单。

上图中的菜单栏有6个菜单项,称为主菜单。每个主菜单都可以打开一个下拉菜单,当前打开的是“文件”下拉菜单。“文件”后面的(F)表示可以按Alt+F组合键来打开“文件”菜单。“文件”菜单有很多菜单项,有些菜单项又包含了菜单,这样的菜单称为子菜单。
下拉菜单中的菜单项有两种显示形式:一种显示为黑色,表示在当前情况下,该菜单项可用;另一种显示为灰色,表示在当前情况下,该菜单项不可用。
上图中,有些菜单项右侧还有字母,如“新建”菜单项右侧的“(N)”,表示当按Ctrl+N组合键时,可实现与单击“新建”命令相同的功能。

1.创建主菜单
在Delphi程序设计中,创建主菜单需要使用Standard面板上的MainMenu组件。将MainMenu组件添加到Form窗体后,双击MainMenu组件,弹出MainMenu窗口,该窗口称为MainMenu菜单设计器,如下图所示。

1)添加菜单
(1)打开MainMenu菜单设计器,其最左上角自动生成一个方框,选中该方框,在Properties选项卡中将Caption属性设置为该菜单的名称,如“文件”,然后单击空白处,即可创建菜单栏中的一个菜单项。
(2)再次单击“文件”菜单项,其右边和下边自动出现两个方框,如下图所示。文件菜单项右边的方框表示与“文件”菜单项平级的菜单,也是主菜单。“文件”菜单项下边的右框表示下拉菜单中的菜单项。按照同样方法设置菜单名,每次设置完后,会在该菜单的右侧或下方出现一个新的菜单项,通过这样的方法,可以完成所有菜单项的添加。

2)删除菜单项
在设计菜单时,如果发现某个菜单项设计有误,可以将其删除,方法是选中需要删除的菜单项,直接按键盘上的Delete键即可。
提示:如果删除的菜单项有子菜单,则删除该菜单项的同时,其子菜单也会一同被删除。
3)插入菜单
要添加新的菜单项,先选择要添加菜单项的位置,然后右击,在弹出的快捷菜单中选择Insert命令,在当前菜单项的上方(或左边)生成一个空菜单项。

2.设计主菜单
以上介绍了创建主菜单的方法,但是,这样创建的菜单不够美观,功能也不够全面,为了能设计出美观、功能完备的主菜单,还需要设置分隔条、快捷键、子菜单、菜单选择模式和菜单选中状态。
1)设计分隔符
通常,下拉菜单中的菜单项可以按功能分成若干组,着就需要使用分隔条,如下图所示。
在Delphi系统中,分隔条作为一个独立的菜单项。分隔条的创建很简单,将要设置为分隔条的菜单项的Caption属性设置为“-”,其他属性取默认值即可。

2)设置快捷键
快捷键是菜单的重要组成部分,使用快捷键可以提高工作效率。例如上图所示的菜单中,按Alt+Y组合键可以打开“文件”下拉菜单,然后按Ctrl+菜单项右侧的字母键即可执行该命令。

在默认情况下,MainMenu组件会为创建的每个菜单项自动关联一个快捷键。如果不满意系统设置的快捷键,可以自定义快捷键,操作步骤如下:
(1)将MainMenu组件的AutoHotKeys属性设置为maMenual,关闭了自动关联菜单与快捷键的功能。
(2)分别设置主菜单与下拉菜单中菜单项的快捷键。
设置主菜单快捷键的方法为:在菜单项的名称后加上(&字母)。以“文件”菜单项为例,选中该菜单项,在Caption属性值栏中输入“文件(&F)”,表示设置该菜单项的快捷键为Alt+F。
设置下拉菜单中菜单项的快捷键也十分简单,以“新建”菜单项为例,选中该菜单项,在ShutCut属性值下拉列表框中选择适当的快捷键,如Ctrl+N即可。如果该下拉列表框没有需要的快捷键,如“退出”菜单项对应的Alt+X组合键,这是直接在ShutCut属性值栏中输入Alt+X即可。自定义的快捷键如下图所示。

自定义快捷键

3)设计子菜单
如果下拉菜单中的某些菜单项又包含了多个菜单项,可以将这些菜单设置为子菜单,如下图所示。

创建子菜单方法很为,右击需要建立子菜单的菜单项,如“色彩”,在弹出的快捷菜单中选择Create SubMenu命令。此时,系统会在“色彩”菜单右侧生成一个空菜单项,然后按以上介绍的方法设置菜单即可。
4)菜单项选择模式与选中状态
设置菜单项的选择模式可以在其选择和取消选择间切换,如下图所示。

在上图中,“字体”子菜单中有两组命令,第一组命令包括“宋体”、“楷体”和“黑体”,只能选择其中一个;另一组命令包括“倾斜”、“加粗”和“下划线”,可以同时选择多个。
下面以设置上图中的“字体”子菜单为例,介绍设置菜单项选择模式的操作步骤。
(1)右击“字体”菜单项,在弹出的快捷菜单中选择Create SubMenu命令,生成子菜单。
(2)分别创建子菜单中的“宋体”、“楷体”、“黑体”、分隔线、“倾斜”、“加粗”和“下划线”菜单项。

(3)由于以上菜单项(不含分隔条)应分成两组,因此要修改菜单项的分组属性。将“宋体”、“楷体”和“黑体”菜单项的GroupIndex属性值均设置为0(默认值);将“倾斜”、“加粗”和“下划线”菜单项的GroupIndex属性均设置为1,这样就可以将以上6个菜单项分成两组。
(4)由于“宋体”、“楷体”和“黑体”菜单项只能选择一个,所以将它们的RadioItem属性均设置为True;“倾斜”、“加粗”和“下划线”菜单项可以同时选中多个,将它们的RadioItem属性均设置为False。

(5)在设置菜单时,可以指定在默认情况下,某个菜单项是否处于选中状态。例如,要设置打开菜单时默认选中“宋体”菜单项,则将其Checked属性设置为True,使其左边显示“•”符号。同样,将“倾斜”、“加粗”菜单项的Checked属性设置为True时,其左边显示“√”符号。

下面与一个例子:

设计一个菜单栏,包含“文件”和“编辑”两个主菜单,其下拉菜单如前三个图所示。
具体操作的步骤如下:
(1)在Form窗体中添加一个MainMenu组件,将其AutoHotKeys属性设置为maManual,双击该组件,打开菜单设计器。

(2)选中首个空菜单项,在Caption属性值栏中输入“文件(&F)”,设置该菜单的名称。
(3)选中“文件”菜单项下边的空菜单项,将Caption属性设置为“新建”,在ShortCut属性值下拉列表框中选择Ctrl+N选项,创建“文件”下拉菜单中的“新建”菜单项。采用同样的方法创建“打开”、“保存”和“另存为”菜单项。
(4)选中“另存为”菜单项下面的空菜单项,将Caption属性设置为“-”,创建分隔条。
(5)选中分隔条下边的空菜单项,将Caption属性设置为“从扫描仪或照相机”,并将Enabled属性设置为False,使该菜单项处于禁用状态。

(6)选中下拉菜单的最后一个菜单项,将Caption属性设置为“退出”,设置ShortCut属性为Alt+X。
(7)选中“文件”菜单右边的空菜单,将Caption属性设置为“编辑(&E)”。
(8)使用步骤(3)~(5)的方法,创建“编辑”下拉菜单中的各个菜单项。
(9)右击“字体”菜单项,选择快捷菜单中的Create SubMenu命令,创建“字体”菜单项的子菜单。
(10)选中“字体”子菜单的第一个空菜单项,设置Caption属性为“宋体”,Checked属性为True,GroupIndex属性为0,RadioIndex属性为True。采用同样的方法,设置“楷体”和“黑体”菜单项,但是它们的Checked属性要设置为False。
(11)将“黑体”菜单项下方的菜单项创建为分隔条,然后选择分隔条下方的空菜单项,设置Caption值设置为“倾斜”,Checked属性为True,GroupIndex属性为1,RadioIndex属性取默认值False。采用同样方式,完成“加粗”和“下划线”菜单项的设置,但“加粗”菜单项的Checked属性要设置为True,“下划线”菜单项的Checked属性要设置为False。

主菜单设计大致可以完成,后续介绍弹出式菜单和线性菜单设计。

Delphi菜单设计.4相关推荐

  1. 业务系统设计之一:系统菜单设计

    本文主要介绍业务系统设计里的菜单设计,关注我博客的朋友或许以前见过一篇我写的关于菜单的文章,文章连接:使用RadControls的RadMenu控件开发系统菜单 ,这篇文章主要是介绍了RadContr ...

  2. 70+漂亮且极具亲和力的导航菜单设计推荐

    网站可用性是任何网站的基本要素,而可用的导航更是网站所必需的要素之一.导航决定了用户如何与网站进行交互.如果没有了可用的导航,那么网站内容就会变得毫无用处.导航菜单应当足够简单以让用户快速了解它,但还 ...

  3. 【设计】精致的侧滑菜单设计案例

    侧滑菜单已经成为app一个极常用的设计,不管是事务类,效率类还是生活类app.侧滑菜单因Path 2.0和Facebook为开发者熟知,本文搜集了一些时髦的,精致的侧滑菜单设计案例. 优雅的纯色背景, ...

  4. .NET CORE(C#) WPF 值得推荐的动画菜单设计

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF 值得推荐的动画菜单设计 阅读导航 本文背景 代码实现 本文 ...

  5. Delphi多媒体设计之播放WAVE文件(API)

    多媒体程序设计是一个名不符实的词组,其道理就是多媒体程序设计包含着广泛的可能性,它尤其包括了Wave音频.MIDI音频.AVI视频和动画等.不要将多媒体程序设计与游戏程序设计混淆了. 游戏设计自然包含 ...

  6. 2015年主流的页面导航菜单设计

    在移动版应用网站中,用汉堡菜单图标已经成为主流的一种很常见的导航设计模式了,由于它不会干扰用户使用的任务过程,只要在需要的时候点击图标来访问菜单,很多可以让人眼花缭乱的元素都可以被隐藏在汉堡包菜单中, ...

  7. JQuery——横纵向菜单设计

    JQuery就是用JS写的,方便编程的一个方法集合.jQuery就好比把一些js的效果事先做好了,并进行了封装,然后直接调用就行了.你用javascript实现一个动画效果说不定写很长的一段代码,然而 ...

  8. 70 漂亮且极具亲和力的导航菜单设计推荐

    网站可用性是任何网站的基本要素,而可用的导航更是网站所必需的要素之一.导航决定了用户如何与网站进行交互.如果没有了可用的导航,那么网站内容就会变得毫无用处.导航菜单应当足够简单以让用户快速了解它,但还 ...

  9. android第三方菜单设计,Android菜单设计指南(上)

    菜单设计快速预览 •    任何指令的选项菜单只针对当前的操作. •    任何指令的(弹出式)文本菜单只针对当前被选中项. •    优先排序频繁使用的指令(or功能). •    将最重要的指令( ...

最新文章

  1. 富士康裁员六万,试图用机器人扭转赤字?
  2. rocm平台_痛击NV CUDA!AMD ROCm开放计算平台瓜熟蒂落
  3. 前端开发学习二——由JSON和Object Literal Notation引起的思考
  4. jq获取最后一个子节点_如何选择jQuery中的最后一个子元素?
  5. freemarker 异常处理
  6. java 如何将word 转换为ftl_使用 freemarker导出word文档
  7. mysql表单查询_表单查询实例
  8. c++真的比java难吗_开课吧Java课程怎么样?开课吧的Java课程真的那么好吗?
  9. ubuntu 12.04 php5.3 降级为 5.2
  10. 微信发虎年新春贺词领福袋:游戏皮肤、QQ音乐VIP、现金红包等
  11. 树莓派超声波 c语言,树莓派超声波测距+蜂鸣器(c语言)
  12. [翻译]CryEngine3中ClothShader详解
  13. android 4.4 java版本_Android4.0-4.4 加入实体按键振动支持的方法(java + smali版本号)
  14. php selectradio和checkbox默认选择的实现方法
  15. python 实现实时语音对讲
  16. 重装也无法修复此计算机,无法重装系统解决方法
  17. Google BERT 中文应用之《红楼梦》中对话人物提取
  18. MySQL --- 多表查询 - 七种JOINS实现、集合运算、多表查询练习
  19. 我的世界JAVA挂机杀怪有经验_我的世界如何快速获得经验?
  20. Arduino 浊度传感器 TS300B 的使用

热门文章

  1. Axure RP9 进度条设置
  2. js图片上传功能的实现 FileReader()
  3. MATLAB寻找三维曲面的有效波峰(滤除噪声产生的极大值)
  4. pandas如何统计均线、移动平均线的方法rolling总结
  5. 【已解决】Windows系统中提示,文件下载失败,检测到病毒
  6. 【数据工具】高德地图POI数据下载工具(支持选择省市以及POI类型)
  7. Unicode 字符集七个字符属性
  8. 软件工程(Software Engineering)
  9. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第34讲:PHP 封装、继承、多态
  10. emd分解详解一种自适应的数据处理或挖掘方法