C++ Builder 初学问与答 (十)

类别:编程语言 点击:0 评论:0 推荐:
10.菜单组件

77)问:菜单是Windows常用的用户界面。对于一个能够实际应用的程序,菜单是必不可少的组成部分。C++Builder中是怎样实现菜单的?

 

答:C++Builder为我们提供了两种菜单组件:一种是主菜单组件MainMenu;另一种是弹出菜单PopMenu组件。

主菜单组件的作用是在窗体上生成菜单条。菜单组件刚放到窗体上时,菜单是不可见的,当双击它打开菜单编辑器并且增加了菜单项后,菜单条才出现在窗体的顶部。设计时的菜单条与运行时的菜单条完全一样。

下面我们介绍利用菜单编辑器进行菜单设计的过程。

首先要打开菜单编辑器

从组件模板上的Standard选项卡中选择MainMenu组件,放置到窗体上。然后,用鼠标右键单击菜单组件,然后在弹出菜单中选择Menu Designer。当然,你也可以双击菜单组件打开菜单编辑器。

被加亮显示的小方框就是一个空白菜单项。

接着要添加菜单项

选中这个菜单项,这时对象编辑器中将出现这个菜单项的属性。

我们在菜单项的Caption属性中输入“文件(&File)”,其中“&F”可以生成一个快捷键,这样用户就可以通过键盘操作了,并且F下面出现了下划线(注意:由于是系统原因,”&”一定要在英文状态下输入)。当我们输入完标题并按下回车键时,C++Buildr会自动给这个菜单项赋一个名字,这里的名字是N1。如果你不满意这个名字可以修改Name属性。

添加完菜单项后会自动出现一个空白的子菜单项等待你输入。

现在菜单编辑器中的输入焦点移到了这个空白子菜单项上,同时对象编辑器将对应显示这个子菜单项的属性。你可以在Caption属性中输入子菜单项的标题“打开(&Open)”,然后按下回车键。菜单编辑器会打开一个新的子菜单项,并把输入焦点移动到这个子菜单项上。这样,就可以给菜单项增加一系列的子菜单了。

同样方法添加退出菜单。

 

要开始编辑下一个菜单项,可以用鼠标单击菜单项“文件”的右边的虚线框,它表示一个空白的菜单项。

 

78)问:当菜单项中的子菜单项属于不同类别时,有必要用分隔条把子菜单项进行分组,菜单组件是怎样实现这个功能的?

答:我们在退出和保存两个菜单项中间加入选择分隔条,在退出菜单项上点击鼠标右键,从弹出菜单中选择Insert,这时,一个空白的菜单项就插入了,将它的Caption属性设置为“–”这个减号符就可以了。

 

79)问:那么,我们又怎样给菜单项设置热键呢?

答:每个菜单项都有一个属性ShortCut,利用这个属性就可以给这个菜单项设置热键了。现在我们给打开文件菜单项添加热键。单击这个菜单项,选择属性ShortCut,出现一个下拉菜单,其中包括一系列的热键的组合。选择Ctrl+O,这个热键中就被赋给了退出菜单项。

 

80)问:快捷键与热键这两个概念我已经弄糊涂了,您能给我解释一下吗?

答:好的,快捷键与热键相同的方面是,它们都是通过键盘来访问。

一个菜单项可以同时拥有快捷键和热键。所谓快捷键通常只是一个字母,而热键通常是一个组合键。另外它们的激活方式不一样,例如一个子菜单项有一个快捷键O和一个热键Ctrl+O,那么使用热键就可以直接激活这个子菜单项,而使用快捷键你必须首先选中该子菜单项上一层的菜单项,然后按下快捷键才可以激活这个子菜单项。

 

81)问:您讲解的菜单到现在还只有菜单项和子菜单两级,如果我希望子菜单还有自己的子菜单,应该怎么办?

答:这种嵌套的菜单项实际上就是级联菜单。这里,我们给颜色菜单项添加子菜单项,选择颜色菜单,单击鼠标右键,在弹出的快捷菜单中选择Create Submenu命令,这时在子菜单项中将出现一个指向右的箭头,同时还产生了一个级联菜单。

当然,你也可以用Ctrl+方向键右键。

 

82)问:很多菜单项的旁边有复选标记,请问菜单编辑器是否提供了这个功能呢?

答:复选标记就是在菜单项的标题的前面出现的勾号。复选标记经常用于一些状态设置的菜单项,当处于该状态时就会出现复选标记,否则复选标记消失。

现在,我们给回绕菜单项设置复选标记,在对象编辑器中把它的属性Checked改为True,这样这个菜单项就会显示复选标记。要取消复选标记可以把Checked属性再次设置为False。

 

83)问:我有时要设计一组互相排斥的菜单项,也就是单选菜单项,应该怎么办呢?

答:要使一组菜单项成为单选菜单项,必须满足几个条件。

首先,这一组菜单必须在同一个下拉菜单中。

其次,它们的RadioItem属性必须都设置成了True。

最后,它们的GroupIndex属性必须相同。

这一组中唯一被选中的菜单项的前面将会显示一个圆点标记。

 

84)问:我怎样使菜单项失效呢?

答:只要把菜单项的Enabled属性设置为False,就可以使菜单项失效,这时菜单项是灰色的。在设计时和运行时你可以任意设置菜单项的Enabled属性。

 

85)问:菜单项有些什么常用的事件呢?

答:菜单项只有一种事件OnClick,在实际编辑中这个事件是一定要响应的。

 

86)问:我们一般在主菜单之外还会提供一个快捷菜单,就像C++Builder一样,在窗体中单击右键随时都可以打开一个弹出菜单。C++Builder是怎样实现弹出菜单的?

    答:弹出菜单有时候又称为快捷菜单。弹出菜单与主菜单的区别是:主菜单是固定的,而弹出菜单是活动的;主菜单有多组菜单项,而弹出菜单只有一组。弹出菜单的设计方法与主菜单基本相同,也是使用菜单编辑器来完成的。

本文地址:http://com.8s8s.com/it/it29127.htm