第5章菜单、工具栏和多文档的设计 内容提要 区 Delphi7的菜单界面设计 区菜单的属性设置和功能代码 区工具栏的创建 区状态栏的创建 区多文档MDI程序的创建 ccccccMccccccccccc:cMMH
第5章 菜单、工具栏和多文档的设计 内容提要 Delphi7的菜单界面设计 菜单的属性设置和功能代码 工具栏的创建 状态栏的创建 多文档MDI程序的创建
5.1 De lphi7的菜单界面设计 菜单是方便用户和应用程序交互的一种方式。 Delphi7提供了一个进行 菜单设计的便捷工具 Menu Designer,通过这个菜单设计工具可方便的 进行菜单设计。 应用程序的菜单有两种形式: Main menu是一般的 Windows用户界面必须 的部件,它显示在固定的位置,一般用键盘和鼠标左键来激活菜单的功 能项;Popυ upMenu是弹出式菜单,一般以鼠标的右键或其它快捷键来激 活菜单,菜单的位置是在屏幕上“浮动”的,根据鼠标的当前位置确定。 我们将 Mainmenu和 PopupMenu统称为菜单。 Main menu和 PopupMenu都 存在于 Delphi7集成开发环境的组件面板的 Standard页面上 创建菜单时,首先要在窗体中放置一个菜单对象。然后调入Menu Designer进行菜单的详细设定。用两种方式可以进入 Menu designer ≯选中菜单部件,点动属性中 Items省略按钮。 在菜单部件上双击左键,就会出现 Menu desi gner ccccccMccccccccccc:cMMH
5.1 Delphi 7 的菜单界面设计 菜单是方便用户和应用程序交互的一种方式。Delphi 7 提供了一个进行 菜单设计的便捷工具 Menu Designer ,通过这个菜单设计工具可方便的 进行菜单设计。 应用程序的菜单有两种形式:MainMenu是一般的Windows用户界面必须 的部件,它显示在固定的位置,一般用键盘和鼠标左键来激活菜单的功 能项;PopupMenu是弹出式菜单,一般以鼠标的右键或其它快捷键来激 活菜单,菜单的位置是在屏幕上“浮动”的,根据鼠标的当前位置确定。 我们将MainMenu和PopupMenu统称为菜单。MainMenu和PopupMenu都 存在于 Delphi 7 集成开发环境的组件面板的Standard页面上。 创建菜单时,首先要在窗体中放置一个菜单对象。然后调入Menu Designer进行菜单的详细设定。用两种方式可以进入Menu Designer: ➢选中菜单部件,点动属性中Items省略按钮。 ➢在菜单部件上双击左键,就会出现Menu Designer
511主菜单 MAinmEnu的设计 Main menu组件封装了菜单栏及其菜单项。要设计窗体的主菜单, 需从组件面板的 Standard页中将该组件拖动到窗体上。然后双击该组 件,在弹出的菜单编辑对话框中编辑即可。 Menu Designer的设计界面 如下图所示。 Forml.ain lenul 文件编辑 新建 打开 保存 退出 崛cccccccccccccccccccEEEHH
5.1.1 主菜单TMainMenu的设计 TmainMenu 组件封装了菜单栏及其菜单项。要设计窗体的主菜单,只 需从组件面板的 Standard 页中将该组件拖动到窗体上。然后双击该组 件,在弹出的菜单编辑对话框中编辑即可。Menu Designer 的设计界面 如下图 所示
512弹出式菜单TP。 pupMenu的设计 TPopup menu组件为右击组件时显示的弹出式菜单组件 Popup menu在使用 Menu designer设计菜单时是完全相同的 只不过菜单是用鼠标的右键激活的。弹出式菜单在一定的 窗口范围内激活,所以必须将窗口和弹出式菜单联系起来。 在设计完 PopupMenu后,须在Name属性中为它命名,然后 把这个名称赋给窗体的 PopupMenu属性。 Popup menu组件 的常用属性列表如下: 1) Alignment:指定用户右击时 PopupmEnu组件出现 的位置,即弹出式菜单出现在鼠标指针的左侧、右侧还是 中央。该属性默认为 paLest,即菜单的左上角显示在指针 位置 ccccccMccccccccccc:cMMH
5.1.2 弹出式菜单TPopupMenu的设计 TPopupMenu 组件为右击组件时显示的弹出式菜单组件。 PopupMenu在使用Menu Designer设计菜单时是完全相同的。 只不过菜单是用鼠标的右键激活的。弹出式菜单在一定的 窗口范围内激活,所以必须将窗口和弹出式菜单联系起来。 在设计完PopupMenu后,须在Name属性中为它命名,然后 把这个名称赋给窗体的PopupMenu属性。PopupMenu 组件 的常用属性列表如下: (1)Alignment :指定用户右击时 TpopupMenu 组件出现 的位置,即弹出式菜单出现在鼠标指针的左侧、右侧还是 中央。该属性默认为 paLeft ,即菜单的左上角显示在指针 位置
(2) AutoPopup:为真(True)时,用户右击以此组件为弹出 式菜单的组件时,该组件自动弹出;否则应在程序中使用 Popup方法控制弹出式菜单的显示 (3) Help Contex:指定弹出式菜单的上下文ID,由于Help 系统中的每个界面都有一个惟一的上下文ID,所以使用该属 性可以建立弹出式菜单与帮助界面之间的关联。 (4) MenuAnimation:指定 Popup Menu菜单的显示方式。 (5) Popup ComPonent:最后一个使用该组件的组件。 (6) Popup point:指定弹出式菜单出现的位置,其值由 Popup 方法设置 7) Track Button:指定当弹出式菜单与工具栏按钮关联时 激活弹出式菜单的鼠标键 ccccccMccccccccccc:cMMH
(2)AutoPopup :为真(True)时,用户右击以此组件为弹出 式菜单的组件时,该组件自动弹出;否则应在程序中使用 Popup 方法控制弹出式菜单的显示。 (3)HelpContex :指定弹出式菜单的上下文 ID ,由于 Help 系统中的每个界面都有一个惟一的上下文 ID ,所以使用该属 性可以建立弹出式菜单与帮助界面之间的关联。 (4)MenuAnimation :指定 TpopupMenu 菜单的显示方式。 (5)PopupComPonent :最后一个使用该组件的组件。 (6)PopupPoint :指定弹出式菜单出现的位置,其值由 Popup 方法设置。 (7)TrackButton :指定当弹出式菜单与工具栏按钮关联时 激活弹出式菜单的鼠标键
51.3为菜单设定加速键和热键组成 设定加速键的方法为:只需在为菜单项的 Caption属性输入名称时,将 “&”放到需要指定为加速键的字母前面,该字母将被用下划线显示,运行 时,按“Alt加速键字母”可以激活该菜单条。为前面图5-2所示的例子设 置加速键,如图5-4所示。 设定热键的方法是:在对象加查器( Object Inspector)中,设置该菜单项 的 Shortcut属性。单击该属性值可弹出下拉菜单,为它选定一个热键组合即 可。在运行时,通过“Ctrl+热键字母”来激活菜单条。加速键和热键并不矛 盾,用户可以同时指定它们。再为图5-4所示的例子设置热键,如图5-5所 小 form1. lainenul 口区 文件编辑 新建Q)Ctr1+ 打开Q)Ctr1+0 保存)Ctr1+s 退出)Ctr1+X
5.1.3 为菜单设定加速键和热键组成 ➢设定加速键的方法为:只需在为菜单项的 Caption 属性输入名称时,将 “&”放到需要指定为加速键的字母前面,该字母将被用下划线显示,运行 时,按“Alt+加速键字母”可以激活该菜单条。为前面图5-2 所示的例子设 置加速键,如图5-4所示。 ➢设定热键的方法是:在对象加查器(Object Inspector)中,设置该菜单项 的ShortCut属性。单击该属性值可弹出下拉菜单,为它选定一个热键组合即 可。在运行时,通过“Ctrl+热键字母”来激活菜单条。加速键和热键并不矛 盾,用户可以同时指定它们。再为图 5-4 所示的例子设置热键,如图 5-5 所 示
514多级菜单和菜单位置的调整 创建多级菜单对于管理复杂的菜单命令结构非常有用。 Delphi的多级菜单风 格是下级菜单列在它上层菜单的边上,如图5-6所示。 创建多级菜单的方法是:把加亮条移到它的上层菜单条上,按Ctr1+右行键 将弹出子菜单,按照前面所述的方法进行创建多级子菜单。一般限制在三 级之内比较合适。 r Forn1.夏 ain lenu1 文件编辑 选择 按名称 按颜色 ccccccMccccccccccc:cMMH
5.1.4 多级菜单和菜单位置的调整 创建多级菜单对于管理复杂的菜单命令结构非常有用。Delphi的多级菜单风 格是下级菜单列在它上层菜单的边上,如图5-6所示。 创建多级菜单的方法是:把加亮条移到它的上层菜单条上,按Ctrl+右行键, 将弹出子菜单,按照前面所述的方法进行创建多级子菜单。一般限制在三 级之内比较合适
52菜单的属性设置和功能代码 通过菜单设计器( Menu designer)设计的菜单仅仅是一个程序界面, 还不具有任何功能,要想让菜单具有实际功能必须给相应的菜单项 连接功能代码。 为了给菜单项连接功能代码,可以双击菜单项,或在特定菜单项的 Events页上双击它响应的事件的值段, Delphi7将引导进入代码编 辑器,光标停在事件对应的事件处理过程中,此时就可以通过程序 来设置菜单项的属性或编写其它功能的代码。 ccccccMccccccccccc:cMMH
5.2 菜单的属性设置和功能代码 通过菜单设计器(Menu Designer)设计的菜单仅仅是一个程序界面, 还不具有任何功能,要想让菜单具有实际功能必须给相应的菜单项 连接功能代码。 为了给菜单项连接功能代码,可以双击菜单项,或在特定菜单项的 Events 页上双击它响应的事件的值段,Delphi 7 将引导进入代码编 辑器,光标停在事件对应的事件处理过程中,此时就可以通过程序 来设置菜单项的属性或编写其它功能的代码
521设置菜单项的有效和无效 在实际的应用程序中,由于各种原因需要对菜单项的有效和无效进行动态 设置。比如当前的系统剪贴板中没有数据可以粘贴,【粘贴】菜单项就应 该是变灰的禁用状态。 菜单项( Menuitem)的 Enabled属性表示该菜单项是否被禁用。当 Enabled属性为真(True)时,该菜单项可以响应事件,即可用状态;将 Enabled属性设置为假( False)时,则表示该菜单项当前不能响应事件, 颜色也变成灰色,即禁用状态。 ccccccMccccccccccc:cMMH
5.2.1 设置菜单项的有效和无效 在实际的应用程序中,由于各种原因需要对菜单项的有效和无效进行动态 设置。比如当前的系统剪贴板中没有数据可以粘贴,【粘贴】菜单项就应 该是变灰的禁用状态。 菜单项(MenuItem)的Enabled 属性表示该菜单项是否被禁用。当 Enabled 属性为真(True)时,该菜单项可以响应事件,即可用状态;将 Enabled 属性设置为假(False)时,则表示该菜单项当前不能响应事件, 颜色也变成灰色,即禁用状态
522菜单项的复选标记 所谓复选标记,是指当用户选中某菜单项时,系统会在菜单 项前面设置标记。比如 Windows98窗口中【查看】菜单下的 有关工具栏各菜单项,其中已显示的工具栏菜单项前面有勾 号,而还没有调出的工具栏所对应的菜单项前面就没有勾号 下面我们设计任意一个菜单项,使其能通过改变 Checked属 性来控制是否显示状态栏。设置该菜单项的Name属性为 Menubar, Caption属性为“工具栏”,并添加一个状态栏组 件,其Name属性为 StatusBar1。完成这样的功能代码如下: ccccccMccccccccccc:cMMH
5.2.2 菜单项的复选标记 所谓复选标记,是指当用户选中某菜单项时,系统会在菜单 项前面设置标记。比如 Windows 98 窗口中【查看】菜单下的 有关工具栏各菜单项,其中已显示的工具栏菜单项前面有勾 号,而还没有调出的工具栏所对应的菜单项前面就没有勾号。 下面我们设计任意一个菜单项,使其能通过改变 Checked 属 性来控制是否显示状态栏。设置该菜单项的 Name 属性为 MenuBar ,Caption 属性为“工具栏” ,并添加一个状态栏组 件,其 Name 属性为 StatusBar1 。完成这样的功能代码如下: