4.8 设计工具栏和酷栏
工具栏是一面板,通常在窗体顶端横向放置(在菜单栏之下),其中包含按钮和其他控件。酷栏(Coolban又称rebar)也是工具栏的一种,它将控件显示在可移动并可改变大小的段中。若有多个面板排列在窗体顶端,将按加入顺序垂直叠放。
工具栏中可加入任意种类的控件。除按钮之外,还可放置彩色网格、滚动条、标签等等。有一些方法用于将工具栏加到窗体中:
· 在窗体中放置面板(TPanel)组件并在其中添加控件(一般为快速按钮)。
· 使用工具栏组件(TToolBar)代替TPanel,并在其中添加控件。TToolBar可治理按钮和其他控件,按行排列它们并可自动调整它们的大小和位置。若在工具栏中使用工具按钮(TToolButton)控件,TToolBar可方便地按功能分组按钮及提供其他显示选项。
· 使用酷栏(TCoolBar)组件并在其中添加控件。酷栏在独立地可移动并可改变大小的段中显示控件。
如何实现工具栏依靠于应用程序。使用Panel组件的优点是可控制工具栏的总体。通过使用工具栏和酷栏组件,可确保应用程序有Windows应用程序的布局,因为所用的是纯粹的Windows控件。若将来操作系统控件发生变化,你的应用程序也会随之改变。另外,因为工具栏和酷栏组件依靠于Windows的通用组件,所以应用程序需要COMCTL32.DLL的支持。WinNT3.51应用程序不支持工具栏和酷栏。接下来的部分介绍了:
· 使用面板组件增加工具栏及相应的快速按钮组件。
· 使用工具栏组件增加工具栏及相应的工具按钮组件。
· 使用酷栏组件增加酷栏。
· 响应点击。
· 增加隐藏的工具栏和酷栏。
· 隐藏及显示工具栏和酷栏。
4.8.1 使用面板组件增加工具栏
要使用面板组件将工具栏加入窗体:
1) 把一面板组件加入窗体(从组件面板的Standard页)。
2) 将面板的Align属性设为alTop。这样是对齐窗体的顶端,面板保持其高度,但其宽度始终完全匹配窗体客户区宽度,即使该窗口的尺寸发生变化。
3) 把快速按钮或其他控件加入面板中。快速按钮是设计来工作于工具栏面板中的。它通常没有标题,只有一个小的图形(称为glyph)用于
表示按钮的功能。快速按钮有三种可能的操作方式:
· 与一般的按钮作用相同。
· 被按下时在开和关两种状态间切换。
· 与一组单选按钮作用相同。在工具栏加入快速按钮,执行下列步骤:
· 在面板中增加一个快速按钮。
· 给快速按钮分配glyph。
· 设置快速按钮的初始状态。
· 创建一组快速按钮。
· 答应切换按钮。
1.在面板中增加快速按钮为将快速按钮加入工具栏,可将快速按钮组件放入面板(从组件面板的Additional页)。快速按钮的“拥有者”是面板而不是该窗体,因此移动或隐藏面板也将移动或隐藏快速按钮。
面板的缺省高度是41,快速按钮的缺省高度是25。若将每个按钮的Top属性都设置为8,它们将垂直居中。缺省的网格设置锁定了快速按钮的垂直位置。
2.为快速按钮分配glyph
每个快速按钮需要一幅图像(glyph)来向用户表示按钮的作用。若只为快速按钮提供一幅图像,按钮会控制这幅图像用以表示按钮是否处于被按下、未被按下、被选中或被禁用等状态。也可以为每个状态各自提供特定图像。
虽然可在运行时分配不同的glyph,但通常应在设计时为快速按钮分配glyph。要在设计时为快速按钮分配glyph:
1) 选择快速按钮。
2) 在对象观察器中选择Glyph属性。
3) 双击Glyph旁的Value列以打开PictureEditor,并选择想要的位图。
3.设置快速按钮的初始状态
快速按钮使用其外观提示用户它们的状态和作用。因为它们没有标题,所以使用正确的外观提示来帮助用户非常重要。
表4-3列出了可设置快速按钮外观的一些操作:
若应用程序有一个缺省的绘图工具,要确保应用程序启动时其在工具栏中的按钮是被按下状态。这时,可把按钮的GroupIndex属性设为非零值,Down属性设为true。4.创建成组的快速按钮
一系列快速按钮通常表示一组互斥选项。在这种情况下,需要将相关的按钮分为一组,这样当单击其中任何按钮时都将使组中其它按钮被弹起。将每个快速按钮的GroupIndex属性设为一相同值可把很多快速按钮分为一组。最简单的方法是将分组的按钮全部选定,然后以成组设置的方式将选定的组的GroupIndex属性设为单一值。
5.答应切换按钮
有时需要在分组中单击一个已被按下的按钮来使其弹起,以便使分组中没有按钮是按下的状态。这样的按钮被称作切换按钮。使用AllowAllUp可将一个分组按钮设为切换按钮:单击一次,按钮被按下;再次单击,按钮弹起。要将一个分组按钮设为切换按钮,可将其AllowAllUp属性设为true。
将一个分组按钮的AllowAllUp属性设为true会自动地将该分组所有按钮的AllowAllUp属性设为相同值。这使得分组既可作为标准分组,一次只有一个按钮被按下,也可答应组中每个按钮同时都是弹起的状态。