TRadioButton/fi

From Free Pascal wiki
Jump to: navigation, search

Deutsch (de) English (en) suomi (fi) français (fr)

TRadioButton tradiobutton.png on komponentti, valinnan näyttävä painike, joka toimii niin että se poissulkee muut valintanapit - jos yksi painike on valittuna, mikään muu ryhmän napeista ei ole valittu. TRadioButtons ovat valittavissa komponenttipaletin Standard välilehdeltä.

Jos halutaan käyttää TRadioButton:a lomakkeella , voidaan se valita komponenttipaletin Standard välilehdeltä ja asettaa se yhdellä klikkauksella lomakkeelle.

Yleensä ei ole järkevää käyttää vain yhtä valintanappia, koska niillä pyritään valitsemaan jokin vaihtoehto. Yksittäisten valitanappien sijaan voidaan käyttää myös TRadioGroup (eli valintanappiryhmää).

Lähdekoodissa on mahdollista saada tietää valintanapin tila. Onko se käytössä vai ei, kyselyllä Status  := <RadioButton>.Checked;. Tätä Checked arvoa voidaan käyttää kuten tavallista Boolean muuttujaa. Siten myös sijoitus <RadioButton>.Checked := True; on mahdollista.

Yksinkertainen esimerkki

  • Luo uusi sovellus ja vie kolme TRadioButton-kompoenttia lomakkeelle.
  • Komponenttimuokkaimessa ominaisuusuudet-välilehdellä muuta nimet RadioButton1...3 arvoon rbRed, rbGreen ja rbBlue.
  • Vastaavasti, muuta niiden caption ominaisuus arvoihin Red, Green ja Blue.
  • Lisää lomakkeelle painike (TButton) ja muuta caption arvoon Draw new ja nimeä (name) se btnPaint.
  • Luo onclick tapahtumankäsittelijä painikkeelle (TButton) menemällä komponenttimuokkaimen tapahtumat välilehdelle, valitaan onClick tapahtuma ja painetaan painiketta [...] tai tuplaklikkaa painiketta lomakkeella.
  • Täydennä lähdekoodi seuraavanlaiseksi:
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;
  • Suorita sovellus, sen pitäisi joltain tämäntapaiselta näyttää:

RadioButtonExample1.png -> RadioButtonExample2.png

Tapahtumien käyttö

Erona edelliseen esimerkkiin, nyt ei maalata lomaketta painiketta klikkaamalla, vaan jo pelkkä valintanapin klikkaaminen riittää.

Voit muokata edellistä esimerkkiä poistamalla painike ja sen onClick tapahtumakäsittely lähdekoodissa. Tai voidaan luoda uusi esimerkki joka myös helppo tehdä:

  • Luo uusi sovellus ja vie kolme TRadioButton-kompoenttia lomakkeelle.
  • Komponenttimuokkaimessa ominaisuusuudet-välilehdellä muuta nimet RadioButton1...3 arvoon rbRed, rbGreen ja rbBlue.
  • Vastaavasti, muuta niiden caption ominaisuus arvoihin Red, Green ja Blue.
  • Nyt luodaan OnChange tapahtumankäsittelijä valintanapeille (TRadioButton) menemällä komponenttimuokkaimen tapahtumat välilehdelle, valitaan Onchange tapahtuma ja painetaan painiketta [...] tai tuplaklikkaa valintanappia lomakkeella. Tämä tehdään jokaiselle valintanapille.
  • Laitetaan valintanappien OnChange tapahtumakäsittelijät vaihtamaan lomakkeen väriä kun klikataan valinnappia.
procedure TForm1.rbRedChange(Sender: TObject);
begin
  Self.Color:=clRed;    // "Self",  valitsee objektin jossa menetelmä on (metodi: rbRedChange / olio: Form1)
end;
 
procedure TForm1.rbGreenChange(Sender: TObject);
begin
  Form1.Color:=clLime;  //Voit suoraan valita objektin ''Form1 '', mutta se on huono
                        //koska silloin mitään muuta kuin  ''TForm1'' ei voida käyttää 
end;
 
procedure TForm1.rbBlueChange(Sender: TObject);
begin
  Color:=clBlue;        //Tai jätetään pois "Self" ja kääntäjä automaattisesti tunnistaa olion
end;
  • Suorita sovellus, sen pitäisi joltain tämäntapaiselta näyttää:

RadioButtonExample3.png -> RadioButtonExample4.png

Ryhmittäminen

Jos lisäät valintanapin (TRadioButton) lomakkeelle niin sen vanhempi (parent) (kontrolli, joka sisltää valintanapin) on kyseinen lomake.

Jokainen asettaminen (tulipa se koodin kautta tai ohjelman käyttäjältä napin painalluksella) <RadioButton>.Checked:=True; tarkistetaan, onko toinen tämän vanhemman valintanappi valittu (arvossa True) ja jos on niin se muutettaisiin arvoon False.

Jos halutaan käyttää useita valitanappeja lomakkeella, joka on suunniteltu tarjoamaan erilaisia, itsenäisiä valintoja, niin ne on ryhmiteltävä. Tähän tarkoitukseen tarjolla on valmis komponentti TRadioGroup tai sitten tehtävä ryhmän ohjauskomponenteilla (esim. TPanel, TGroupBox, TNotebook, TPageControl jne).

Seuraava esimerkki osoittaa, kuinka voidaan tehdä ryhmä valintanapeista:

Voit muuttaa esimerkiksi aikaisemmin esitettyä ohjelmaa Yksinkertainen esimerkki tai luoda täysin uusi sovellus:

  • Ensimmäisenä pitäisi sijoittaa TGroupBox-komponentti komponenttipaletin Standard-välilehdeltä lomakkeelle.
  • Vaihdetaan sen nimeksi gbColor (kirjoita tämä name ominaisuuteen) ja sen caption ominaisuuteen kirjoitetaan Color.
  • Sitten tehdään GruopBox:n alaluokka valintanapeille rbRed, rbGreen ja rbBlue:
    • Muokatussa projektissa siirretään komponenttimuokkaimessa vedä ja pudota menetelmällä valintanapit gbColor-ryhmään.
    • Uudessa projektissa, voit asettaa kolme valintapainiketta yksi toisensa jälkeen, napsauttamalla lisätä GroupBox:n, muuta sitten nimiä (name) rbRed, rbGreen ja rbBlue. Caption ominaisuuteen vastaavasti Red, Green and Blue
  • Seuraavaksi laitetaan toinen TGroupBox lomakkeelle. Nimetään se gbBrightness:ksi ja kirjoitetaan caption-ominaisuuteen teksti: Brightness.
  • Lisää tähän GroupBox:n myös kolme valintapainikkeita ja nimeä ne rbBrightDark, rbBrightMedDark ja rbBrightBright ja kirjoitetaan vastaavaan caption-ominaisuuteen teksti: Dark, MediumDark tai Bright.
  • Jos on luotu uusi sovellus, niin lomakkeelle täytyy lisätä painike (TButton) nimellä btnPaint ja sen caption ominaisuuteen kirjoitetaan Draw new.
  • Painikkeen btnPaint OnClick tapahtumankäsittelijän koodi koodataan seuraavanlaiseksi:
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;
  • Seuraavaksi koodataan funktio Brightness luokan TForm1 private osaan kirjoittamalla siihen teksti function Brightness: TColor; ja painamalla näppäimillä [CTRL] + [Shift] + [C] (koodin täydentäminen) jolloin funktion kehys tulee luotua. Täydennä se seuraavanlaiseksi:
function TForm1.Brightness: TColor;
begin
  Result:=0;
  if rbBrightMedDark.Checked then Result:=$888888;
  if rbBrightBright.Checked  then Result:=$DDDDDD;
end;
  • Suorita sovellus, sen pitäisi joltain tämäntapaiselta näyttää:

RadioButtonExample5.png -> RadioButtonExample6.png

Katso myös


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 • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog • TTaskDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TBufDataset • TMemDataset • TSdfDataSet • TFixedFormatDataSet • TDbf
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 • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TTreeFilterEdit • TShortPathEdit • TLvlGraphControl
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 • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TSQLite3Connection • 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 • TIpHttpDataProvider • TIpHtmlPanel