TRadioButton/ja

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) suomi (fi) français (fr) 日本語 (ja)

日本語版メニュー
メインページ - Lazarus Documentation日本語版 - 翻訳ノート - 日本語障害情報


TRadioButton tradiobutton.pngは相互排他的 - もし1つのボタンが選択されると、同じグループの他のものが選択できない - に他のラジオボタンともに機能するボタン選択を現すコンポーネントである。TRadioButtonはコンポーネントパレットStandardタブで選択できる。

FormでTRadioButtonを使うには、単にコンポーネントパレットStandardから、選んでフォーム上でクリックし、配置する。
ラジオボタンは何でも選択可能なので、通常は単一のラジオボタンを用いることは意味をなさない。そのため、個々のラジオボタンの代わりにTRadioGroupを用いることもできる。

ソースコードのどこからでも、クエリ、Status := <RadioButton>.Checked;により、有効か、無効かラジオボタンの状態を取得できる。通常のブール値としてCheckedを使うことができる。このため、割り当て、<RadioButton>.Checked := True;が可能である。

簡単な例

  • 新しいアプリケーションを作り、3つのラジオボタンを配置する。
  • オブジェクトインスペクタタブのプロパティで名前をRadioButton1...3から、rbRedrbGreenrbBlueに変更する。
  • 同様にそれらのラジオボタンのキャプションをRedGreenBlueに変更する。
  • フォームに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;
  • アプリケーションでは、以下のように見えるはずである:

RadioButtonExample1.png -> RadioButtonExample2.png

イベントの使い方

上の例との相違は、ボタンのクリックではなく、すでにラジオボタンの1つが選択された状態で再描画することである。

ソースコードより、ボタンとそのOnClickイベントハンドラを削除することにより、前の例を変更できる。新しい例もまた、簡単に作れる:

  • 新しいアプリケーションを作り、フォームに3つのラジオボタンを配置する。
  • オブジェクトインスペクタプロパティタブで、その名前をRadioButton1...3からrbRedrbGreenrbBlueへ変更する。
  • 同様にラジオボタンのキャプションも「赤」、「緑」、「青」に変更する。
  • ここでラジオボタンに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;                    //それ自身のオブジェクトを探し出すだろう
  • アプリケーションを実行すると、このように見えるはずだ:

RadioButtonExample3.png -> RadioButtonExample4.png

グルーピング

ラジオボタンをフォームに追加すると、そのフォームが親(ラジオボタンを含むコントロール)となる。ラジオボタンを選択するたびに(クリックまたはコードによって)、各設定で<RadioButton>.Checked:=True;が行われると、同じ親を持つ異なるラジオボタンが選択されているかどうかを確認し、もしそうであれば、そのプロパティ「Checked」がFalseに変更される。
もし複数のラジオボタンをフォームで使い、異なる、独立した選択を提供するように設計したいのであれば、ラジオボタンをグループ化しなければならない。このため完成したコンポーネントTRadioGroupがある、または(例えば、TPanelTGroupBoxTNotebookTPageControlなどで)コントロールにまとめることになる。

以下の例はどのようにラジオボタンをまとめることができるかを示している:

簡単な例を変更するか、新しいアプリケーションを作り:

  • 初めにStandardコンポーネントパレットのTGroupBoxをフォームに配置する必要がある。
  • その名前をgbColorへ、そのキャプションをColorに変更する。
  • ここで、このグループボックスをrbRedrbGreenrbBlueへサブクラス化する:
    • 変更したプロジェクトで、引き続きオブジェクトインスペクタにあるラジオボタンをgbColorへ向けて、ドラッグアンドドロップによりで移動する。
    • 新しいプロジェクトで、GroupBoxで挿入するためにクリックすることにより、それらの後に3つのラジオボタンを挿入し、名前をrbRedrbGreenrbBlueへ、キャプションをRedGreenBlueへ変更する。
  • そして、2番目のTGroupBoxをフォームに配置し、gbBrightness、とキャプションをBrightness名づける。
  • このグループボックスはまた3つのラジオボタンをもち、名前をrbBrightDarkrbBrightMedDarkrbBrightBright、そしてキャプションをDarkMediumDarkBrightと名づける。
  • 新しいアプリケーションを作った場合、フォームにボタンを追加しbtnPaint、キャプションDraw newと名づけなければならない。
  • btnPaintOnClickイベントハンドラのコードを以下に変更する:
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;
  • アプリケーションを実行すると、グループ化された独立したラジオボタンを用いることができ、以下のように見えるだろう:

RadioButtonExample5.png -> RadioButtonExample6.png

以下も参照のこと


LCL Components
Component Tab Components
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn/ja • TSpeedButton/ja • TStaticText/ja • TImage/ja • TShape/ja • TBevel/ja • TPaintBox/ja • TNotebook/ja • TLabeledEdit/ja • TSplitter/ja • TTrayIcon/ja • TControlBar/ja • TFlowPanel/ja • TMaskEdit/ja • TCheckListBox/ja • TScrollBox/ja • TApplicationProperties/ja • TStringGrid/ja • TDrawGrid/ja • TPairSplitter/ja • TColorBox/ja • TColorListBox/ja • TValueListEditor/ja
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TTaskDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog
Data Controls TDBNavigator/ja • TDBText/ja • TDBEdit/ja • TDBMemo/ja • TDBImage/ja • TDBListBox/ja • TDBLookupListBox/ja • TDBComboBox/ja • TDBLookupComboBox/ja • TDBCheckBox/ja • TDBRadioGroup/ja • TDBCalendar/ja • TDBGroupBox/ja • TDBGrid/ja • TDBDateTimePicker/ja
Data Access TDataSource/ja • TCSVDataSet/ja • TSdfDataSet/ja • TBufDataset/ja • TFixedFormatDataSet/ja • TDbf/ja • TMemDataset/ja
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TJSONPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery/ja • TSQLTransaction/ja • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TMySQL57Connection • TSQLite3Connection/ja • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHtmlDataProvider • TIpHttpDataProvider • TIpHtmlPanel
Virtual Controls TVirtualDrawTree • TVirtualStringTree • TVTHeaderPopupMenu