Difference between revisions of "TRadioButton/ja"
(Created page with "{{TRadioButton}} {{ Japanese Menu }} A '''TRadioButton''' image:tradiobutton.png is a component that displays a selection button that works with other Radio Buttons in a...") |
|||
(9 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
{{ Japanese Menu }} | {{ Japanese Menu }} | ||
− | |||
− | + | '''TRadioButton''' [[image:tradiobutton.png]]は相互排他的 - もし1つのボタンが選択されると、同じグループの他のものが選択できない - に他のラジオボタンともに機能するボタン選択を現すコンポーネントである。TRadioButtonは[[Component Palette/ja|コンポーネントパレット]]の[[Standard tab/ja|Standardタブ]]で選択できる。 | |
− | |||
− | + | [[TForm|Form]]でTRadioButtonを使うには、単にコンポーネントパレット''Standard''から、選んでフォーム上でクリックし、配置する。<br> | |
+ | ラジオボタンは何でも選択可能なので、通常は単一のラジオボタンを用いることは意味をなさない。そのため、個々のラジオボタンの代わりに[[TRadioGroup]]を用いることもできる。 | ||
− | == | + | ソースコードのどこからでも、クエリ、'''<code>Status := <RadioButton>.Checked;</code>'''により、有効か、無効かラジオボタンの状態を取得できる。通常の[[Boolean|ブール値]]として''Checked''を使うことができる。このため、割り当て、'''<code><RadioButton>.Checked := True;</code>'''が可能である。 |
− | * | + | ===簡単な例=== |
− | * | + | |
− | * | + | * 新しいアプリケーションを作り、3つのラジオボタンを配置する。 |
− | * | + | * オブジェクトインスペクタタブのプロパティで名前を''RadioButton1...3''から、''rbRed''、''rbGreen''、''rbBlue''に変更する。 |
− | * | + | * 同様にそれらのラジオボタンのキャプションを''Red''、''Green''、''Blue''に変更する。 |
− | * | + | * フォームに[[TButton]]を加え、そのキャプションを''Draw new''、その名前を''btnPaint''に変更する。 |
+ | * ''OnClick''をオブジェクトインスペクタで選択し、[...]をクリックし、TButtonに対し''OnClick''イベントハンドラを作る。 | ||
+ | * 以下のコードを加える: | ||
<syntaxhighlight lang=pascal> | <syntaxhighlight lang=pascal> | ||
Line 27: | Line 28: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | * | + | * アプリケーションでは、以下のように見えるはずである: |
[[image:RadioButtonExample1.png]] -> [[image:RadioButtonExample2.png]] | [[image:RadioButtonExample1.png]] -> [[image:RadioButtonExample2.png]] | ||
− | === | + | ===イベントの使い方=== |
− | + | 上の例との相違は、ボタンのクリックではなく、すでにラジオボタンの1つが選択された状態で再描画することである。 | |
− | + | ソースコードより、ボタンとその''OnClick''イベントハンドラを削除することにより、前の例を変更できる。新しい例もまた、簡単に作れる: | |
− | * | + | * 新しいアプリケーションを作り、フォームに3つのラジオボタンを配置する。 |
− | * | + | * オブジェクトインスペクタプロパティタブで、その名前を''RadioButton1...3''から''rbRed''、''rbGreen''、''rbBlue''へ変更する。 |
− | * | + | * 同様にラジオボタンのキャプションも''Red''、''Green''、''Blue''に変更する。 |
− | * | + | * ここでラジオボタンに''OnChange''イベントハンドラを作る。すべてのラジオボタンに対して、オブジェクトインスペクタイベントタブで''OnChange''イベントを選択し[...]をクリックするか、そのうえでダブルクリックする。 |
− | * | + | * クリックされたラジオボタンに応じて、ラジオボタンの''OnChange''イベントハンドラにフォームの色を変更させるため: |
<syntaxhighlight lang=pascal> | <syntaxhighlight lang=pascal> | ||
procedure TForm1.rbRedChange(Sender: TObject); | procedure TForm1.rbRedChange(Sender: TObject); | ||
begin | begin | ||
− | Self.Color:=clRed; // | + | Self.Color:=clRed; //「Self」で、メソッドが存在するオブジェクトを選択する(メソッド:rbRedChange/オブジェクト:Form1) |
end; | end; | ||
procedure TForm1.rbGreenChange(Sender: TObject); | procedure TForm1.rbGreenChange(Sender: TObject); | ||
begin | begin | ||
− | Form1.Color:=clLime; // | + | Form1.Color:=clLime; //直接オブジェクト''Form1''を選択できるが、お粗末である。 |
− | // | + | //なぜなら、クラス「Form1」の他のオブジェクトが生成されてないからだ |
− | end; | + | end; //訳注: clLimeとなっているが本文中ではclGreenである |
procedure TForm1.rbBlueChange(Sender: TObject); | procedure TForm1.rbBlueChange(Sender: TObject); | ||
begin | begin | ||
− | Color:=clBlue; // | + | Color:=clBlue; //もしくは「Self」を取り除く、そしてコンパイラは自動的に |
− | end; | + | end; //それ自身のオブジェクトを探し出すだろう |
</syntaxhighlight> | </syntaxhighlight> | ||
− | * | + | * アプリケーションを実行すると、このように見えるはずだ: |
[[image:RadioButtonExample3.png]] -> [[image:RadioButtonExample4.png]] | [[image:RadioButtonExample3.png]] -> [[image:RadioButtonExample4.png]] | ||
− | === | + | ===グルーピング=== |
− | + | ラジオボタンをフォームに追加すると、そのフォームが親(ラジオボタンを含むコントロール)となる。ラジオボタンを選択するたびに(クリックまたはコードによって)、各設定で'''<code><RadioButton>.Checked:=True;</code>'''が行われると、同じ親を持つ異なるラジオボタンが選択されているかどうかを確認し、もしそうであれば、そのプロパティ''Checked''がFalseに変更される。<br> | |
− | + | もし複数のラジオボタンをフォームで使い、異なる、独立した選択を提供するように設計したいのであれば、ラジオボタンをグループ化しなければならない。このため完成したコンポーネント[[TRadioGroup]]がある、または(例えば、[[TPanel]]、[[TGroupBox]]、[[TNotebook]]、[[TPageControl]]などで)コントロールにまとめることになる。<br> | |
− | + | 以下の例はどのようにラジオボタンをまとめることができるかを示している: | |
− | + | [[TRadioButton/ja#簡単な例|簡単な例]]を変更するか、新しいアプリケーションを作り: | |
− | * | + | * 初めにStandardコンポーネントパレットの[[TGroupBox]]をフォームに配置する必要がある。 |
− | * | + | * その名前を''gbColor''へ、そのキャプションを''Color''に変更する。 |
− | * | + | * ここで、このグループボックスを''rbRed''、''rbGreen''、''rbBlue''へサブクラス化する: |
− | ** | + | ** 変更したプロジェクトで、引き続きオブジェクトインスペクタにあるラジオボタンを''gbColor''へ向けて、ドラッグアンドドロップによりで移動する。 |
− | ** | + | ** 新しいプロジェクトで、GroupBoxで挿入するためにクリックすることにより、それらの後に3つのラジオボタンを挿入し、名前を''rbRed''、''rbGreen''、''rbBlue''へ、キャプションを''Red''、''Green''、''Blue''へ変更する。 |
− | * | + | ** |
− | * | + | * そして、2番目のTGroupBoxをフォームに配置し、''gbBrightness''、とキャプションを''Brightness''名づける。 |
− | * | + | * このグループボックスはまた3つのラジオボタンをもち、名前を''rbBrightDark''、''rbBrightMedDark''、''rbBrightBright''、そしてキャプションを''Dark''、''MediumDark''、''Bright''と名づける。 |
− | * | + | * 新しいアプリケーションを作った場合、フォームにボタンを追加し''btnPaint''、キャプション''Draw new''と名づけなければならない。 |
+ | * ''btnPaint''の''OnClick''イベントハンドラのコードを以下に変更する: | ||
<syntaxhighlight lang=pascal> | <syntaxhighlight lang=pascal> | ||
Line 91: | Line 93: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | * | + | * そして、さらにTForm1の''private''節にコード'''<code>function Brightness: TColor;</code>'''を書き、[CTRL] + [Shift] + [c] (コード補完)を押す。関数が生成される。以下のコードを入力する: |
<syntaxhighlight lang=pascal> | <syntaxhighlight lang=pascal> | ||
Line 102: | Line 104: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | * | + | * アプリケーションを実行すると、グループ化された独立したラジオボタンを用いることができ、以下のように見えるだろう: |
[[image:RadioButtonExample5.png]] -> [[image:RadioButtonExample6.png]] | [[image:RadioButtonExample5.png]] -> [[image:RadioButtonExample6.png]] | ||
− | == | + | ==以下も参照のこと== |
* [[doc:lcl/stdctrls/tradiobutton.html|TRadioButton doc]] | * [[doc:lcl/stdctrls/tradiobutton.html|TRadioButton doc]] | ||
Line 113: | Line 115: | ||
* [[TCheckBox]] - Usage of CheckBoxes<br> | * [[TCheckBox]] - Usage of CheckBoxes<br> | ||
− | {{LCL Components}} | + | {{LCL Components/ja}} |
Latest revision as of 12:13, 20 March 2024
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
日本語 (ja) │
TRadioButton は相互排他的 - もし1つのボタンが選択されると、同じグループの他のものが選択できない - に他のラジオボタンともに機能するボタン選択を現すコンポーネントである。TRadioButtonはコンポーネントパレットのStandardタブで選択できる。
FormでTRadioButtonを使うには、単にコンポーネントパレットStandardから、選んでフォーム上でクリックし、配置する。
ラジオボタンは何でも選択可能なので、通常は単一のラジオボタンを用いることは意味をなさない。そのため、個々のラジオボタンの代わりにTRadioGroupを用いることもできる。
ソースコードのどこからでも、クエリ、Status := <RadioButton>.Checked;
により、有効か、無効かラジオボタンの状態を取得できる。通常のブール値としてCheckedを使うことができる。このため、割り当て、<RadioButton>.Checked := True;
が可能である。
簡単な例
- 新しいアプリケーションを作り、3つのラジオボタンを配置する。
- オブジェクトインスペクタタブのプロパティで名前をRadioButton1...3から、rbRed、rbGreen、rbBlueに変更する。
- 同様にそれらのラジオボタンのキャプションをRed、Green、Blueに変更する。
- フォームにTButtonを加え、そのキャプションをDraw new、その名前をbtnPaintに変更する。
- OnClickをオブジェクトインスペクタで選択し、[...]をクリックし、TButtonに対しOnClickイベントハンドラを作る。
- 以下のコードを加える:
procedure TForm1.btnPaintClick(Sender: TObject);
begin
if rbRed.Checked then Color:=clRed;
if rbGreen.Checked then Color:=clLime;
if rbBlue.Checked then Color:=clBlue;
end;
- アプリケーションでは、以下のように見えるはずである:
イベントの使い方
上の例との相違は、ボタンのクリックではなく、すでにラジオボタンの1つが選択された状態で再描画することである。
ソースコードより、ボタンとそのOnClickイベントハンドラを削除することにより、前の例を変更できる。新しい例もまた、簡単に作れる:
- 新しいアプリケーションを作り、フォームに3つのラジオボタンを配置する。
- オブジェクトインスペクタプロパティタブで、その名前をRadioButton1...3からrbRed、rbGreen、rbBlueへ変更する。
- 同様にラジオボタンのキャプションもRed、Green、Blueに変更する。
- ここでラジオボタンにOnChangeイベントハンドラを作る。すべてのラジオボタンに対して、オブジェクトインスペクタイベントタブでOnChangeイベントを選択し[...]をクリックするか、そのうえでダブルクリックする。
- クリックされたラジオボタンに応じて、ラジオボタンのOnChangeイベントハンドラにフォームの色を変更させるため:
procedure TForm1.rbRedChange(Sender: TObject);
begin
Self.Color:=clRed; //「Self」で、メソッドが存在するオブジェクトを選択する(メソッド:rbRedChange/オブジェクト:Form1)
end;
procedure TForm1.rbGreenChange(Sender: TObject);
begin
Form1.Color:=clLime; //直接オブジェクト''Form1''を選択できるが、お粗末である。
//なぜなら、クラス「Form1」の他のオブジェクトが生成されてないからだ
end; //訳注: clLimeとなっているが本文中ではclGreenである
procedure TForm1.rbBlueChange(Sender: TObject);
begin
Color:=clBlue; //もしくは「Self」を取り除く、そしてコンパイラは自動的に
end; //それ自身のオブジェクトを探し出すだろう
- アプリケーションを実行すると、このように見えるはずだ:
グルーピング
ラジオボタンをフォームに追加すると、そのフォームが親(ラジオボタンを含むコントロール)となる。ラジオボタンを選択するたびに(クリックまたはコードによって)、各設定で<RadioButton>.Checked:=True;
が行われると、同じ親を持つ異なるラジオボタンが選択されているかどうかを確認し、もしそうであれば、そのプロパティCheckedがFalseに変更される。
もし複数のラジオボタンをフォームで使い、異なる、独立した選択を提供するように設計したいのであれば、ラジオボタンをグループ化しなければならない。このため完成したコンポーネントTRadioGroupがある、または(例えば、TPanel、TGroupBox、TNotebook、TPageControlなどで)コントロールにまとめることになる。
以下の例はどのようにラジオボタンをまとめることができるかを示している:
簡単な例を変更するか、新しいアプリケーションを作り:
- 初めにStandardコンポーネントパレットのTGroupBoxをフォームに配置する必要がある。
- その名前をgbColorへ、そのキャプションをColorに変更する。
- ここで、このグループボックスをrbRed、rbGreen、rbBlueへサブクラス化する:
- 変更したプロジェクトで、引き続きオブジェクトインスペクタにあるラジオボタンをgbColorへ向けて、ドラッグアンドドロップによりで移動する。
- 新しいプロジェクトで、GroupBoxで挿入するためにクリックすることにより、それらの後に3つのラジオボタンを挿入し、名前をrbRed、rbGreen、rbBlueへ、キャプションをRed、Green、Blueへ変更する。
- そして、2番目のTGroupBoxをフォームに配置し、gbBrightness、とキャプションをBrightness名づける。
- このグループボックスはまた3つのラジオボタンをもち、名前をrbBrightDark、rbBrightMedDark、rbBrightBright、そしてキャプションをDark、MediumDark、Brightと名づける。
- 新しいアプリケーションを作った場合、フォームにボタンを追加しbtnPaint、キャプションDraw newと名づけなければならない。
- btnPaintのOnClickイベントハンドラのコードを以下に変更する:
procedure TForm1.btnPaintClick(Sender: TObject);
begin
if rbRed.Checked then Color:=Brightness or clRed;
if rbGreen.Checked then Color:=Brightness or clLime;
if rbBlue.Checked then Color:=Brightness or clBlue;
end;
- そして、さらにTForm1のprivate節にコード
function Brightness: TColor;
を書き、[CTRL] + [Shift] + [c] (コード補完)を押す。関数が生成される。以下のコードを入力する:
function TForm1.Brightness: TColor;
begin
Result:=0;
if rbBrightMedDark.Checked then Result:=$888888;
if rbBrightBright.Checked then Result:=$DDDDDD;
end;
- アプリケーションを実行すると、グループ化された独立したラジオボタンを用いることができ、以下のように見えるだろう:
以下も参照のこと
- TRadioButton doc
- TRadioGroup - Usage of RadioGroups
- TToggleBox - Usage of Toggleboxes
- TCheckBox - Usage of CheckBoxes