−トップへ−

ラジオグループコンポーネント

 ラジオグループコンポーネントは,複数のラジオボタンを表示するコンポーネントです。ラジオボタンのページでは,グループボックスの中に複数のラジオボタンを設置することもしましたが,それをラジオグループコンポーネント1つで行うことができます。

 実際に複数のラジオボタンを表示してみたいと思います。
 まず,ラジオグループコンポーネントをフォームに貼り付けて,プロパティの中の[ Items ]を選択してください。次に右端にある「 … 」を選択すると,左の図のエディタが表示されます。このエディタに文字列を書いていくと,その数のラジオボタンが作成されます。
 下の図はラジオボタンを表示させたものですが,下図の左は,そのまま表示させたものです。この場合はラジオボタンが縦に並んでいます。
 中の図と右の図は,プロパティの中の[ Columns ]の値をそれぞれ2と3にしたものです。




 次に表示されているラジオボタンのどれが選択されているか調べる方法を説明します。それを調べるには,プロパティの中の[ ItemIndex ]という項目を使います。この項目は初期値は −1 ですが,1番目のラジオボタンを選択すると0になり,2番目を選択すると1と変わります。

 このラジオグループコンポーネントのラジオボタンが選択されたときのイベントを書いてみます。ラジオグループコンポーネントには[ OnChenge ]イベントがないので,[ OnClick ]イベントを使ってみます。

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  if radiogroup1 . ItemIndex = 0 then begin //1番目のラジオボタンが押されたとき
    (処理1);
    (処理2);
  end ;
  if radiogroup1 . ItemIndex = 1 then begin //2番目のラジオボタンが押されたとき
    (処理3);
    (処理4);
  end ;
   :
   :
end;

 ほかにも,「 cases 」の構文を使って書くこともできます。

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  case radiogroup1 . ItemIndex of
    0 : begin //1番目のラジオボタンが押されたとき
       (処理1);
       (処理2);
      end ;
    1 : begin //2番目のラジオボタンが押されたとき
       (処理3);
       (処理4);
      end ;
       :
       :
  end;
end;

 
 
 このラジオグループコンポーネントを使い,ソースコードを書いてみます。作るのは割り切れないわり算の答えを,小数第何位まで求めるか選択できるプログラムです。
 用意するものは,わり算を行う2つの数字を入力するエディットコンポーネント2個と,答えを表示するラベルコンポーネント1個,わり算を開始するためのボタンコンポーネント1個,そしてラジオグループコンポーネント1個です。
 ラジオグループコンポーネントの項目は左図のように,「整数のみ」から「小数第三位まで」の4つにしました。
 ここで答えの求め方を,「小数第一位まで」の例にして解説します。小数第一位まで求めるときは,小数第二位の数字を四捨五入して小数第一位までの答えを出しますが,このソースコードを書くのは面倒なので,以下のように処理します。
 まず[被除数]と[除数]の答えを小数第一位まで求めるときは,被除数 × 10 ÷ 除数 の整数商を求め,その余りを2倍した数が,除数以上の数になったら整数商に1を加えます。その後,整数商を10で割ることで小数第一位までの答えになります。
 以下にそのソースコードを書きますが,コードを書くのはボタンコンポーネントの[OnClick]イベントです。

procedure TForm1.Button1Click(Sender: TObject);
  var
    r1 , r2 , ans : integer ;
begin
  r1 := strtoint ( edit1 . Text ) ;
  r2 := strtoint ( edit2 . Text ) ;
  case radiogroup1 . ItemIndex of
    0 : begin //整数のみ求める
      ans := r1 div r2 ;
      if ( r1 mod r2 ) * 2 >= r2 then ans := ans + 1 ;
      label1 . Caption := inttostr ( ans ) ;
     end ;
    1:begin //小数第一位まで求める
      ans := r1 * 10 div r2 ;
      if ( r1 * 10 mod r2 ) * 2 >= r2 then ans := ans + 1 ;
      label1 . Caption := floattostr ( ans / 10 ) ;
     end ;
    2:begin //小数第二位まで求める
      ans := r1 * 100 div r2 ;
      if ( r1 * 100 mod r2 ) * 2 >= r2 then ans := ans + 1 ;
      label1 . Caption := floattostr ( ans / 100 ) ;
     end ;
    3:begin //小数第三位まで求める
      ans := r1 * 1000 div r2 ;
      if ( r1 * 1000 mod r2 ) * 2 >= r2 then ans := ans + 1 ;
      label1 . Caption := floattostr ( ans / 1000 ) ;
     end ;
  end ;
end;

 このファイルを掲載しておきます。
→ダウンロード

−トップへ−