集合类型

集合类型


集合类型表示一组值,该组值由集合所依据的有序类型定义。定义集合的常用有序类型不多,一般为枚举类型或子界类型。如果子界类型取值为 1..3,那么基于它的集合类型值可以是 1、或 2、或 3、或 1 和 2、或 1 和 3、或 2 和 3、或取所有 3 个数、或一个数也没有。

一个变量通常包含该类型对应的一个值,而集合类型可以不包含值、包含一个值、两个值、三个值,或更多,它甚至可以包含定义范围内所有的值。下面定义一个集合:

type
 Letters = set of Uppercase;

现在我可以用上面类型来定义变量,并把原始类型的值赋给变量。为了在集合中表示一组值,需要用逗号将值隔开,最后用方括号结尾。下例显示了多值、单值和空值的变量赋值:

var
 Letters1, Letters2, Letters3: Letters;
begin
 Letters1 := ['A', 'B', 'C'];
 Letters2 := ['K'];
 Letters3 := [];

在 Delphi 中,集合一般用于表示有多种选择的标记。例如下面两行代码(摘自Delphi库)声明了一个枚举类型,其中列出了窗口条上可选的图标,并声明了相应的集合类型:

type
 TBorderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp);
 TBorderIcons = set of TBorderIcon;

实际上,给定的窗口中可以没有图标,也可以有一个或多个图标。用 Object Inspector 设置时(见图4.3),双击属性名,或单击属性左边的加号,自行选择,从而添加或删除集合中的值。

图 4.3: Object Inspector中的集合类型属性

另一个基于集合类型的属性是字体。字体类型值可以是粗体、斜体、带下画线、带删除线等,一种字型可以既是斜体又是粗体,也可以没有属性,或者带有全部的属性。因此用集合类型来表示它。你可以象下面代码那样,在程序中给集合赋值:

Font.Style := [];                 // no style
Font.Style := [fsBold];           // bold style only
Font.Style := [fsBold, fsItalic]; // two styles

你也能对一个集合进行许多不同方式的操作,包括把两个相同类型的集合变量相加(或更准确地说,计算两个集合变量的并集):

Font.Style := OldStyle + [fsUnderline]; // two sets

此外,你可以通过 OrdType 查阅 Delphi 控件库中定义的集合类型取值列表。 


联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678