星辰日月00

欲多则心散,心散则志衰,志衰则思不达也!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

枚举:它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。

//定义
type
  Colors = (Red, Yellow, Green, Cyan, Blue, Violet);
  Suit = (Club, Diamond, Heart, Spade);



--------------------------------------------------------------------------------



//举例:
type
  Colors = (Red, Yellow, Green, Cyan, Blue, Violet);
var
  C: Colors;
begin
  C := Red;
  ShowMessage(IntToStr(Ord(C)));  //0
  C := Blue;
  ShowMessage(IntToStr(Ord(C)));  //4

  C := Green;
  ShowMessage(IntToStr(Integer(C)));  //2; 获取元素位置用 Integer 也可以
end;



--------------------------------------------------------------------------------



//举例2:
type
  Tabc = (a=5,b=10,c=a+b);
var
  ta,tb,tc: Tabc;
begin
  ta := a;
  tb := b;
  tc := c;
  ShowMessage(IntToStr(Ord(ta)));  //5
  ShowMessage(IntToStr(Ord(tb)));  //10
  ShowMessage(IntToStr(Ord(tc)));  //15
end;



--------------------------------------------------------------------------------



//获取枚举元素总数:
type
  TMyEnum = (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday);
var
  m: TMyEnum;
  num: Integer;
begin
  num := 0;
  for m := Low(TMyEnum) to High(TMyEnum) do
    Inc(num);

  ShowMessage(IntToStr(num));  // 7
end;



--------------------------------------------------------------------------------



//返回枚举元素的字符串标识:
uses TypInfo;  //需要uses的单元
type
  TMyEnum = (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday);

procedure TForm1.Button1Click(Sender: TObject);
var
  str: string;
begin
  str := TypInfo.GetEnumName(TypeInfo(TMyEnum),1);
  ShowMessage(str);  //Tuesday
end;



--------------------------------------------------------------------------------



//获取对象枚举值的字符串表式:
uses TypInfo;  //需要uses的单元

procedure TForm1.FormCreate(Sender: TObject);
var
  str: string;
begin
  str := GetEnumProp(Self, 'BorderStyle');
  ShowMessage(str); { bsSizeable }
end;
posted on 2012-04-18 11:31  星辰日月00  阅读(186)  评论(0编辑  收藏  举报