枚举类型又是一种自定义有序类型。在枚举类型中,你列出所有该类型可能取的值,而不是指定现有类型的范围。换句话说,枚举类型是个可取值的序列。见下例:
type
Colors = (Red, Yellow, Green, Cyan, Blue, Violet);
Suit = (Club, Diamond, Heart, Spade);
序列中每个值都对应一个序号,序号从 0 开始计数。使用 Ord 函数,即可得到一个枚举类型值的序号。例如,Ord (Diamond) 返回值 1。
注意:枚举类型有多种内部表示法。缺省时,Delphi 用 8 位表示法;如果有多于 256 个不同的值,则用 16 位表示法。还有一种 32 位表示法,需要与 C、C++ 库兼容时会用到。使用 $Z 编译指令可改变缺省设置,请求更多位的表示法。
Delphi VCL(可视控件库)在很多地方用了枚举类型。例如,窗体边框类型定义如下:
Type
TFormBorderStyle = (bsNone, bsSingle, bsSizeable,
bsDialog, bsSizeToolWin, bsToolWindow);
当属性值是枚举类型时,你可以从 Object Inspector 显示的下拉列表框中选值,如图 4.1 所示。
图 4.1 Object Inspector 中的枚举类型属性
Delphi 帮助文件中列出了各种 Delphi VCL 枚举类型的可能值。你也可以通过 OrdType 程序(可从 www.marcocantu.com 下载)查看 Delphi 枚举类型、集合类型、子界类型及任何其他有序类型的取值列表。图4.2 为这个例子的输出结果。
图 4.2: 程序 OrdType 显示的枚举类型详细信息
|