第6章制作工具栏及状态栏6.1面板组件(Panel)6.2快捷按钮组件(SpeedButton)6.3制作工具栏6.4制作状态栏6.5使用工具栏组件设计工具栏6.6使用状态栏组件设计状态栏退出6.1面板组件(Panel)面板组件在标准(Standard)页标签上。该组件用来在窗体上放置一面板,在面板上可以放置其它的组件。6.1.1面板组件的属性1.BevelInner属性BevelInner属性确定面板组件的内部斜面。2.BevelOuter属性BevelOuter属性确定面板组件的外部斜面。3.BevelWidth属性BevelWidth属性确定面板的内部斜面和外部斜面的宽度(单为像素)。BevelInner属性确定内部斜面如何出现;BevelOuter属性确定外部斜面如何出现。使用这三个属性就可以改变面板的外观。4.BorderWidth属性BorderWidth属性用来确定面板边界的宽度(单位象素)。默认值为0,即没有边界。5.BorderStyle属性BorderStyle属性确定面板边界的类型:bsNone,表示无边界;bsSingle表示单线边界。6.Ctrl3D属性Ctrl3D属性确定面板是否为立体的。7.Cursor属性Cursor属性用来确定当鼠标指针移动到面板上时,鼠标指针的形状。6.1.2面板组件的事件与面板组件有关的主要事件有单击事件(OnClick)与双击事件(OnDblClick)、OnEnter、OnExit、OnStartDrag、OnEndDrag等事件6.2快捷按钮组件(SpeedButton)快捷按钮组件在附加页标签上。6.2.1快捷按钮组件的属性1.AllowAllUp属性该属性为布尔型,它确定该快捷按钮所在组中的所有快捷按钮是否可同时不选定(按钮在弹起的状态)。因此,该属性只能用在成组的快捷按钮上(即每一快捷按钮的GroupIndex属性非零),若GroupIndex为零,则该属性无效。默认值为False,就是成组的快捷按钮中有一个总是选定的,使用Down属性确定预选定的快捷按钮;若该属性为的值为True,则成组的快捷按钮没有选定的。改变成组中一个快捷按钮的AllowAllUp属性值,将改变该组中的所有AllowAllUp属性值。也可对成组的单个位图按钮使用AllowAllUp属性(GroupIndex的值大于零),从而该按钮的选定与不选定由用户单击来确定,就像复选框的工作方式一样。要使得单个的快捷按钮像这种方式工作,设置其GroupIndex的值大于零(但与任何其它快捷按钮的GroupIndex值不同),并且设置AllowAllUp属性的值为True。2.Down属性该属性为布尔型,它确定该按钮是处于选定还是不选定状态。默认值为False,即处于不选定状态。虽然对一组快捷按钮的AllowAllUp属性都可以设置为False,但必须对一个快捷按钮设置Down属性。也可在运行时设置Down的属性,无须用户单击选定快捷按钮。3.Glyph属性Glyph指定出现在快捷按钮上的位图(表示该按钮的功能)。使用对象编辑器上该按钮后的按钮可选择位图文件(后缀为.BMP),或在运行时指定位图文件。在快捷按钮上的单个位图中可以指定多达4个的图像。对只有一个图像的情形,Delphi对不同的状态使用第一个图像,只是暗淡不同而已。对在位图中有多个图像的情形时,必须使用NumGlyphs属性指定图像号。所有的图像必须大小相同,水平并排排列。单击对象编辑器的该属性旁边的值栏,就会打开一个图形编辑器。在图形编辑器中选择Load按钮来选择要使用图像的.BMP文件。4.GroupIndex属性该属性为整型变量,它确定哪一快捷按钮加入到组中。默认值为0,表示该快捷按钮不属于组。当用户单击该组件时,它处于凹下状态,而当用户释放鼠标时,它就恢复正常的弹起状态。具有相同GroupIndex属性(非0)的快捷按钮,就在相同的组中。当用户单击组中的一个快捷按钮时,它就处于凹下状态,直到用户再次单击该组中的另一快捷按钮为止。以这种方式使用的按钮给用户以互斥的选择。5.Layout属性Layout属性确定出现在位图按钮或加速按钮上图像的位置。6.Margin属性该属性为整型变量,它确定在图形的边界(由Glyph属性指定的)和按钮的边界间的像素数。边沿分界是由图像和文本(由Layout属性指定)的分布确定的。如Layout的值为blGlyphLeft,在图像的左边和按钮的左边则出现边沿。若Margin为3,则边沿为3个像素,若Margin为0,则没有边沿。默认值为-1,表示图像和文本(由Caption属性指定)居中。7.NumGlyphs属性NumGlyphs指定用于加速按钮上的图像(由Glyph属性指定)数。若在一个位图中有多个图像,则必须使用该属性指定位图中的图像数。所有的图像必须具有相同的大小,并排排列。默认值为1,有效值为1到4。也就是说最多4个图像。在按钮上显示哪一个图像是由按钮的状态确定的,如表6-3所示。对于只有一个图像的情形,Delphi对不同的状态使用相同的图像,只是暗淡不同而已。8.Spacing属性该属性为整型变量,它确定出现在加速按钮图像的位置。即在图像(由Glyph属性指定)和文本(由Caption属性指定)之间的像素数(正数时)。默认值为4。若为0,则其间没有空隙;若为-1,则文本出现在图像与按钮边界中央。6.2.2快捷按钮组件的事件与快捷按钮组件有关的主要事件有单击事件(OnClick)与双击事件(OnDblClick)。6.3制作工具栏在窗体上建立工具栏是很方便的。首先,在窗体中加入面板,并且将其Align属性设置为alTop,这时面板会保持它原来的高度,但可调整它的宽度至充满整个窗体,甚至当改变窗体的大小时,面板也可自行调整它的宽度。然后在其中加入快捷按钮或其它的组件。可以在窗体中添加许多的工具栏。这时,它们会根据加入的顺序垂直排列在窗体的上端(最后加入的工具栏在最上端)。快捷按钮有三种可能的操作模式。它们可以像正常的按钮一样、单击时切换状态或像一组单选钮一样。对快捷按钮使用Glyph属性来指定图样。可以通过快捷按钮的表现来给使用者了解按钮现在的状态和功能,这包括利用Down属性表示按钮是否被按下,使用Enabled属性表示按钮是否可用。为了表示一组互斥的选择,可通过GroupIndex属性对快捷按钮进行分组,将相关的快捷按钮放在同一组中,因而当单击该组中的一个按钮时,其它的按钮都会凸起来。在对快捷按钮分组后,要定义一个切换键:单击该按钮,可使该组中没有按钮被选定。定义切换键使用快捷按钮的AllowAllUp属性。制作完整的工具栏,请参考6.4中的例子。6.4制作状态栏制作状态栏,可在窗体中加入一个面板组件,并且将它的Align属性设置为alBottom,并清除Caption属性的值。对状态栏可以将它分成几个独立的状态框(加入新的面板组件)或使用BevelInner及BorderWidth属性来产生立体的效果。更新状态栏的信息可以反应应用程序的当前状态。状态栏显示的文字就是面板组件的Caption属性值,可以在事件处理程序中加入改变Caption属性值的程序代码来更新状态栏,以反应当前的程序状态。6.5使用工具栏组件设计工具栏6.5.1工具栏组件工具栏组件在Win32页标签上,可用来管理和安排可视的组件。使用工具栏组件具有下列优点:在工具栏组件上按钮的大小和间距自动保持一致;其它的控件也自动保持它们的相对位置和高度;若在一行中按钮显示不下,可以自动折行显示。1.工具栏组件的属性⑴Align属性Align属性用来确定该组件与窗体的对齐方式,也就是在窗体中的位置。⑵Autosize属性该属性为布尔型,当为True时,工具栏的大小随着内容的变化而变化。⑶ButtonHeight属性该属性为整型,用来确定工具栏上的按钮和其它组件的高度,单位为像素。⑷ButtonWidth属性该属性为整型,用来确定工具栏上的按钮和其它组件的宽度,单位为像素。⑸Flat属性该属性为布尔型,当为True时,工具栏上按钮的边框由普通边框变为弹出式边框。平时按钮和工具栏融为一体,当鼠标指针移动到按钮上时,按钮自动从工具栏上浮现出来。⑹Images属性列出工具栏按钮上出现的图标。每一按钮的ImageIndex属性确定显示指定的图标。若不指定图标,则按钮上不显示图标。⑺List属性该属性为布尔型,当为True时,图标占据按钮的左半部,标题在右半部;否则图标占据按钮的上半部,标题在下半部。⑻ShowCaption属性该属性为布尔型,当为它True时,工具栏上的所有按钮显示文本(即Caption属性的内容,这时可能改变按钮的大小),否则不显示。2.工具栏组件的事件与工具栏组件有关的主要事件有单击事件(OnClick)与双击事件(OnDblClick)。6.5.2工具栏按钮组件工具栏按钮(ToolButton)组件是一种特殊的按钮组件,它只配合工具栏组件使用,不能放置在其他窗口组件上。要在工具栏组件上添加工具按钮,右单击工具栏组件,在弹出的快捷菜单中选择“NewButton”菜单命令即可生成一个空白的工具栏按钮,生成的工具栏按钮依次在工具栏组件上排列。工具栏组件自己生成工具栏按钮,因此随着工具栏组件的移动或隐藏,工具栏按钮也进行相应的移动或隐藏。1.工具栏按钮的属性⑴Grouped属性该属性为布尔型,当为它True并且Style属性的值为tbsCheck时,则同一组中的按钮一次只能选定一个。对按钮分组右单击工具栏组件,在弹出的快捷菜单中选择“NewSeparator”菜单命令即可。⑵ImageIndex属性该属性为整型,用来确定出现在工具栏按钮上的图标。若其值为0,则工具栏按钮将显示工具栏组件Images属性所确定的图标列表中的第1个图标。⑶Down属性该属性为布尔型,当为它True时,工具栏按钮被选定,这时按钮为凹下的。当按钮不选定时,按钮为凸起的。⑷Style属性确定工具按钮的显示风格。2.工具栏组件的事件与工具栏组件有关的主要事件有单击事件(OnClick)。6.5.3设计工具栏1.工具栏设计的操作过程设计工具栏采用下列的操作过程:第1步:设置图表列表。在Win32页标签中选择图表列表组件,将其放到窗体上。双击窗体上的图标列表组件,打开图标列表编辑框(如图6-3所示)。在该对话框中添加工具栏按钮要使用的图标。第2步:设置工具栏。在窗体上添加工具栏按钮组件,并设置其属性。第3步:设置工具栏按钮。在工具栏组件上添加工具栏按钮,并设置其属性。第4步:编写按钮事件的处理程序。第5步:运行程序,查看设置后的效果。6.6使用状态栏组件设计状态栏状态栏组件位于Win32页标签中。6.6.1状态栏组件的属性1.Align属性Align属性用来确定该组件与窗体的对齐方式,也就是在窗体中的位置。其取值如表6-5所示。默认值为alBottom,即状态栏位于主窗口的底部。2.SimplePanel属性该属性为布尔型,当为True时,状态上只有单个面板,面板上显示的内容为SimpleText属性的值,否则状态栏上有多个面板。3.SimpleText属性该属性为字符串型。若状态栏上只有单个面板,该属性的值就是状态栏上显示的内容。4.SizeGrid属性该属性为布尔型,当为True时,可在运行时改变状态栏的大小。5.Canvas属性该属性为只读型的,在运行时提供对状态栏上绘图的存取。6.Panels属性该属性包含了状态栏的各个显示面板,在设计时可向状态栏组件添加、删除、修改面板。其方法是单击该属性旁的“…”按钮,打开面板编辑器即可。6.6.2在状态栏组件中添加或删除显示面板在状态中添加或删除面板面板采用下面的操作过程:第1步:单击状态栏组件Panel属性旁的“…”按钮,打开面板编辑器,如图6-5所示。第2步:在面板编辑器窗口中添加、删除或改变面板的顺序。第3步:设置面板组件的属性。在对象结构浏览中选定要设置面板属性的组件,在对象编辑器中进行属性的设置。