−トップへ−

条件分岐A ( case )

 ここでは「case」を使った条件分岐について述べていきます。
 「case」を使った構文では整数型変数の数値によって処理の仕方を細かくわけることができます。その書式は下記の通りです。

  case (整数型変数) of
    (数A):(処理1);
    (数B):(処理2);
    (数C):(処理3);
  else
    (数Aから数B以外の数字のときの処理)
  end;

 この書式で,具体的に記述すると下記のようになります。

  var
    i:integer;
    wek:string;

  case i of
    1 : wek := '月曜日' ;
    2 : wek := '火曜日' ;
    3 : wek := '水曜日' ;
    4 : wek := '木曜日' ;
    5 : wek := '金曜日' ;
    6 : wek := '土曜日' ;
    7 : wek := '日曜日' ;
  else
    wek := '' ;
  end ;

 これは,「i」が1なら文字変数にに「月曜日」を代入し,2なら「火曜日」を代入する…。そして1から7以外の数字なら文字変数に空の文字列を代入するというものです。

 これを使って,ボタンをクリックするとフォームの色が緑→黄色→赤に変わるソースコードを書いてみます。(これは if のページでも作りました)
 「 case 」を使ったコードを書くときには,整数型の変数を用意しないと行けないのですが,ここで問題が発生します。今までの変数の宣言は[OnClick]などのイベントの中で行ってきました。この場合,イベントが終了すると,変数に代入した数値は廃棄されてしまいます。そのため新たに[OnClick]イベントを発生させたときは変数の値は0になっています。これを解決するために,イベントが終了しても値を保持できる変数を作らなければいけないのですが,今回は変数を使わない方法でやってみます。

 いろいろなコンポーネントのプロパティの中に,[tag]という項目があります。この項目は数字を自由に書き込んでよいことになっています。したがって,この項目を整数型の変数の代わりとして使うことができます。ここに書かれた数字はイベントが終了しても保持されたままなので今回はこれを使ってソースコードを書いてみます。

 まずフォームにボタンコンポーネントを貼り付け,[OnClick]イベントを呼び出してください。[tag]は,[Form1]と[Button1]のどちらを使ってもよいのですが今回は[Form1]の[tag]を使ってみます。
 [OnClick]のイベントに下のように記述します。

procedure TForm1.Button1Click( Sender : TObject );
begin
  case form1.tag of//form1のtagの数値で判別することを宣言
    0 : begin//数値が0のときの処理
      form1.Color := cllime ;
      form1.tag := 1 ;
     end;
    1 : begin//数値が1のときの処理
      form1.Color := clyellow ;
      form1.tag := 2 ;
     end ;
    2 : begin//数値が2能登機の処理
      form1.Color := clred ;
      form1.tag := 0 ;
     end ;
  end ;
end ;

 form1.tagの初期値は0なので,0を緑色にしました。また使う数字は0,1,2の3種類だけなので,「 else 」は使いませんでした。

−トップへ−