AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX]ラジオボタン(RadioButton) 2013/09/26
 
前頁で[Standard]内の「CheckBox」(チェックボックス)について書きましたので次は、同じく[Standard]内の「RadioButton」(ラジオボタン)です。
   【Delphi2010の記事はこちら】
   【DelphiXE3[VCLアプリケーション]の記事はこちら】
 
 


(ヘルプより)
GroupName
ラジオボタンが属するグループの名前を示します。
 
GroupNameプロパティを、このラジオボタンが属するグループの名前に設定します。複数のラジオボタンが同じグループに属している場合、つまり、それらがすべて同じGroupNameを持っている場合、それらの1つをクリックして選択状態になると、そのグループ内の他のものは選択がクリアされます。
IsChecked
ラジオボタンのデフォルトの状態が、オンがオフかを示します。
 
このラジオボタンがデフォルトの状態で選択されているようにするには、IsCheckedプロパティをTrueに設定します。このボタンは、もう一度クリックすると、初期のクリアされている状態に戻ります。
IsPressed
ラジオボタンのチェックの状態を読み取ります。
 
ラジオボタンがオンの場合にはIsPressed読み取り専用がプロパティはTrueに、そうでなければ False となります。
 
 




チェックボックスは、同じフォーム画面上、同じ親コンポーネント内に複数あった場合、それぞれを任意にチェックする事が出来ますが、ラジオボタンの場合は、複数あるもののうちの1つしかチェック出来ません。1つにチェックを入れるとほかのものがクリアされます。
 
但し、ラジオボタンが1つしか無い場合、クリックしてクリアする、という事が出来ません。
 
これは従来と同じですね。
 
同じフォーム画面上で複数のラジオボタンチェックを行いたい場合は、おそらく、グループボックスやパネル等を利用して、グループ化して分けておけば可能、という事になるのだろうと思われます。
 
GroupNameプロパティというものが新設されています。これを指定することによって、グループボックス等を使わなくても同一フォーム画面上に複数のラジオボタンのグループ化を行う事が出来ます(同じ内容=同じグループ)。
※大文字小文字は区別されます。
※日本語も使えるようです。
 
というわけで、ボタン同様、VCLのラジオボタンとは多少プロパティの違いはありますが、基本的には同じ感じで使えます。
 
RadioButton3・RadioButton4のGroupNameプロパティを同じにしておきます。
試しに
procedure TForm1.RadioButton1Change(Sender: TObject);
var
 s : string ;
begin
 s := 'IsChecked:';
 if (RadioButton1.IsChecked) then s := s + '○' else s := s + '×';
 if (RadioButton2.IsChecked) then s := s + '○' else s := s + '×';
 if (RadioButton3.IsChecked) then s := s + '○' else s := s + '×';
 if (RadioButton4.IsChecked) then s := s + '○' else s := s + '×';
 
 s := s + #13 + #10 + 'IsPressed:';
 if (RadioButton1.IsPressed) then s := s + '○' else s := s + '×';
 if (RadioButton2.IsPressed) then s := s + '○' else s := s + '×';
 if (RadioButton3.IsPressed) then s := s + '○' else s := s + '×';
 if (RadioButton4.IsPressed) then s := s + '○' else s := s + '×';
 
 showMessage(s);
end;
のようにOnChangeイベントで行った場合(4つ全て同じイベントを指定)、
 RadioButton1をクリック
 RadioButton1のチェックが入った後にイベント発生
  → 「IsChecked:○××× IsPressed:××××」表示
 RadioButton2をクリック
 RadioButton2のチェックが入った後にイベント発生
  → 「IsChecked:×○×× IsPressed:××××」2回表示
 RadioButton3をクリック
 RadioButton3のチェックが入った後にイベント発生
  → 「IsChecked:×○○× IsPressed:××××」表示
 RadioButton4をクリック
 RadioButton4のチェックが入った後にイベント発生
  → 「IsChecked:×○×○ IsPressed:××××」2回表示
となります。
2回表示されるのは、直前のラジオボタンをクリアする際のイベント発動、という事になるのだろうと思われます。
 
procedure TForm1.RadioButton1Click(Sender: TObject);
var
 s : string ;
begin
 s := 'IsChecked:';
 if (RadioButton1.IsChecked) then s := s + '○' else s := s + '×';
 if (RadioButton2.IsChecked) then s := s + '○' else s := s + '×';
 if (RadioButton3.IsChecked) then s := s + '○' else s := s + '×';
 if (RadioButton4.IsChecked) then s := s + '○' else s := s + '×';
 
 s := s + #13 + #10 + 'IsPressed:';
 if (RadioButton1.IsPressed) then s := s + '○' else s := s + '×';
 if (RadioButton2.IsPressed) then s := s + '○' else s := s + '×';
 if (RadioButton3.IsPressed) then s := s + '○' else s := s + '×';
 if (RadioButton4.IsPressed) then s := s + '○' else s := s + '×';
 
 showMessage(s);
end;
のようにOnClickイベントで行った場合(4つ全て同じイベントを指定)、
 RadioButton1をクリック
 RadioButton1のチェックが入る前にイベント発生
  → 「IsChecked:×××× IsPressed:○×××」表示
 RadioButton2をクリック
 RadioButton2のチェックが入る前にイベント発生
  → 「IsChecked:○××× IsPressed:×○××」表示
 RadioButton3をクリック
 RadioButton3のチェックが入る前にイベント発生
  → 「IsChecked:×○×× IsPressed:××○×」表示
 RadioButton4をクリック
 RadioButton4のチェックが入る前にイベント発生
  → 「IsChecked:×○○× IsPressed:×××○」表示
となります。
 
ですので OnChange と OnClick とでは動作の挙動が異なりますので、チェックボックスと同様、これを意識してプログラミングする必要がありますね。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/09/25
 2013/09/26
▼2013/09/27
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.