列挙型と集合型

VB5には列挙型が導入されたようですが、VBから Delphiに移行してつまづく要素のひとつに「列挙型・集合型」があります。列挙 型はたくさんの中からひとつ、集合型はたくさんの中から複数選ぶ可能性がある 場合に使用します。例えばフォントの色、これはたくさんの色の中からひとつだ けを選ぶので列挙型です。ダイアログに表示するボタン、これは OKだけの場合もあれば OKとキャンセルのふたつの場合も考えられます。です ので集合型です。では実際にコードでの使用例を見てみましょう。

■ 列挙型の例
procedure TForm1.Button1Click(Sender: TObject);  
type
  //列挙型の定義  
  TIro  =  (iroRed, iroGreen, iroBlue);
var
  //列挙型変数の宣言 
  Iro   :   TIro;
begin
  //代入する時  
  iro    :=    iroRed;
  //比較する時  
  if     iro    =    iroRed    then
  begin
     ShowMessage('赤い');
  end;
end;

このように列挙型は普通の変数の場合とあまり違いはありません。
しかし 集合型は使い方が違ってきます。

■ 集合型の例
procedure  TForm1.Button1Click(Sender: TObject);
type
  //集合型の定義  
  TDispBtn  =  Set of (dspOK, dspCancel, dspHelp);  
var
  //集合型変数の宣言 
  DispBtn   :   TDispBtn;
begin
  //代入する時  
  DispBtn   :=    [dspOK];
  //現在の集合に追加する時  
  DispBtn   :=    DispBtn  +  [dspCancel];
  //現在の集合から削除する時  
  DispBtn   :=    DispBtn  -  [dspOK];
  //比較する時  
  if     dspCancel   in   DispBtn   then
  begin
     ShowMessage('キャンセルみっけ');
  end;
end;