TRadioButton/fi: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: TRadioButton/fi
| Old | New | Line | |
|---|---|---|---|
| 1 | + | **TRadioButton**  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 [[Component Palette|komponenttipaletin]] [[Standard tab|Standard välilehdeltä]]. | |
| 2 | + | ||
| 3 | + | Jos halutaan käyttää TRadioButton:a [[TForm|lomakkeella]] , voidaan se valita komponenttipaletin Standard välilehdeltä ja asettaa se yhdellä klikkauksella lomakkeelle. | |
| 4 | + | ||
| 5 | + | 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ää). | |
| 6 | + | ||
| 7 | + | 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. | |
| 8 | + | ||
| 9 | + | ### Yksinkertainen esimerkki | |
| 10 | + | ||
| 11 | + | - Luo uusi sovellus ja vie kolme TRadioButton-kompoenttia lomakkeelle. | |
| 12 | + | - Komponenttimuokkaimessa ominaisuusuudet-välilehdellä muuta nimet *RadioButton1...3* arvoon *rbRed*, *rbGreen* ja *rbBlue*. | |
| 13 | + | - Vastaavasti, muuta niiden caption ominaisuus arvoihin *Red*, *Green* ja *Blue*. | |
| 14 | + | - Lisää lomakkeelle [[TButton/fi|painike (TButton)]] ja muuta caption arvoon *Draw new* ja nimeä (name) se *btnPaint*. | |
| 15 | + | - Luo *onclick* tapahtumankäsittelijä painikkeelle (TButton) menemällä komponenttimuokkaimen tapahtumat välilehdelle, valitaan *onClick* tapahtuma ja painetaan painiketta \[...\] tai tuplaklikkaa painiketta lomakkeella. | |
| 16 | + | - Täydennä lähdekoodi seuraavanlaiseksi: | |
| 17 | + | ||
| 18 | + | ``` pascal | |
| 19 | + | procedure TForm1.btnPaintClick(Sender: TObject); | |
| 20 | + | begin | |
| 21 | + | if rbRed.Checked then Color:=clRed; | |
| 22 | + | if rbGreen.Checked then Color:=clLime; | |
| 23 | + | if rbBlue.Checked then Color:=clBlue; | |
| 24 | + | end; | |
| 25 | + | ``` | |
| 26 | + | ||
| 27 | + | - Suorita sovellus, sen pitäisi joltain tämäntapaiselta näyttää: | |
| 28 | + | ||
| 29 | + |  -\>  | |
| 30 | + | ||
| 31 | + | ### Tapahtumien käyttö | |
| 32 | + | ||
| 33 | + | Erona edelliseen esimerkkiin, nyt ei maalata lomaketta painiketta klikkaamalla, vaan jo pelkkä valintanapin klikkaaminen riittää. | |
| 34 | + | ||
| 35 | + | Voit muokata edellistä esimerkkiä poistamalla painike ja sen *onClick* tapahtumakäsittely lähdekoodissa. Tai voidaan luoda uusi esimerkki joka myös helppo tehdä: | |
| 36 | + | ||
| 37 | + | - Luo uusi sovellus ja vie kolme TRadioButton-kompoenttia lomakkeelle. | |
| 38 | + | - Komponenttimuokkaimessa ominaisuusuudet-välilehdellä muuta nimet *RadioButton1...3* arvoon *rbRed*, *rbGreen* ja *rbBlue*. | |
| 39 | + | - Vastaavasti, muuta niiden caption ominaisuus arvoihin *Red*, *Green* ja *Blue*. | |
| 40 | + | - 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. | |
| 41 | + | - Laitetaan valintanappien *OnChange* tapahtumakäsittelijät vaihtamaan lomakkeen väriä kun klikataan valinnappia. | |
| 42 | + | ||
| 43 | + | ``` pascal | |
| 44 | + | procedure TForm1.rbRedChange(Sender: TObject); | |
| 45 | + | begin | |
| 46 | + | Self.Color:=clRed; // "Self", valitsee objektin jossa menetelmä on (metodi: rbRedChange / olio: Form1) | |
| 47 | + | end; | |
| 48 | + | ||
| 49 | + | procedure TForm1.rbGreenChange(Sender: TObject); | |
| 50 | + | begin | |
| 51 | + | Form1.Color:=clLime; //Voit suoraan valita objektin ''Form1 '', mutta se on huono | |
| 52 | + | //koska silloin mitään muuta kuin ''TForm1'' ei voida käyttää | |
| 53 | + | end; | |
| 54 | + | ||
| 55 | + | procedure TForm1.rbBlueChange(Sender: TObject); | |
| 56 | + | begin | |
| 57 | + | Color:=clBlue; //Tai jätetään pois "Self" ja kääntäjä automaattisesti tunnistaa olion | |
| 58 | + | end; | |
| 59 | + | ``` | |
| 60 | + | ||
| 61 | + | - Suorita sovellus, sen pitäisi joltain tämäntapaiselta näyttää: | |
| 62 | + | ||
| 63 | + |  -\>  | |
| 64 | + | ||
| 65 | + | ### Ryhmittäminen | |
| 66 | + | ||
| 67 | + | Jos lisäät valintanapin (TRadioButton) lomakkeelle niin sen [[Parent|vanhempi (parent)]] (kontrolli, joka sisltää valintanapin) on kyseinen lomake. | |
| 68 | + | ||
| 69 | + | 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]]*. | |
| 70 | + | ||
| 71 | + | 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). | |
| 72 | + | ||
| 73 | + | Seuraava esimerkki osoittaa, kuinka voidaan tehdä ryhmä valintanapeista: | |
| 74 | + | ||
| 75 | + | Voit muuttaa esimerkiksi aikaisemmin esitettyä ohjelmaa [[TRadioButton/fi|Yksinkertainen esimerkki]] tai luoda täysin uusi sovellus: | |
| 76 | + | ||
| 77 | + | - Ensimmäisenä pitäisi sijoittaa [[TGroupBox]]-komponentti komponenttipaletin Standard-välilehdeltä lomakkeelle. | |
| 78 | + | - Vaihdetaan sen nimeksi *gbColor* (kirjoita tämä name ominaisuuteen) ja sen caption ominaisuuteen kirjoitetaan *Color*. | |
| 79 | + | - Sitten tehdään GruopBox:n alaluokka valintanapeille *rbRed*, *rbGreen* ja *rbBlue*: | |
| 80 | + | - Muokatussa projektissa siirretään komponenttimuokkaimessa vedä ja pudota menetelmällä valintanapit *gbColor*-ryhmään. | |
| 81 | + | - 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* | |
| 82 | + | - Seuraavaksi laitetaan toinen TGroupBox lomakkeelle. Nimetään se *gbBrightness*:ksi ja kirjoitetaan caption-ominaisuuteen teksti: *Brightness*. | |
| 83 | + | - 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*. | |
| 84 | + | ||
| 85 | + | - Jos on luotu uusi sovellus, niin lomakkeelle täytyy lisätä painike (TButton) nimellä *btnPaint* ja sen caption ominaisuuteen kirjoitetaan *Draw new*. | |
| 86 | + | - Painikkeen *btnPaint* *OnClick* tapahtumankäsittelijän koodi koodataan seuraavanlaiseksi: | |
| 87 | + | ||
| 88 | + | ``` pascal | |
| 89 | + | procedure TForm1.btnPaintClick(Sender: TObject); | |
| 90 | + | begin | |
| 91 | + | if rbRed.Checked then Color:=Brightness or clRed; | |
| 92 | + | if rbGreen.Checked then Color:=Brightness or clLime; | |
| 93 | + | if rbBlue.Checked then Color:=Brightness or clBlue; | |
| 94 | + | end; | |
| 95 | + | ``` | |
| 96 | + | ||
| 97 | + | - 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: | |
| 98 | + | ||
| 99 | + | ``` pascal | |
| 100 | + | function TForm1.Brightness: TColor; | |
| 101 | + | begin | |
| 102 | + | Result:=0; | |
| 103 | + | if rbBrightMedDark.Checked then Result:=$888888; | |
| 104 | + | if rbBrightBright.Checked then Result:=$DDDDDD; | |
| 105 | + | end; | |
| 106 | + | ``` | |
| 107 | + | ||
| 108 | + | - Suorita sovellus, sen pitäisi joltain tämäntapaiselta näyttää: | |
| 109 | + | ||
| 110 | + |  -\>  | |
| 111 | + | ||
| 112 | + | ## Katso myös | |
| 113 | + | ||
| 114 | + | - [[doc:lcl/stdctrls/tradiobutton.html|TRadioButton dokumentaatio]] | |
| 115 | + | - [[TRadioGroup]] | |
| 116 | + | - [[TToggleBox]] | |
| 117 | + | - [[TCheckBox/fi|TCheckBox]] eli valintaruutu. | |
| 118 | + | ||
| 119 | + | --- | |
| 120 | + | *From the Free Pascal wiki, page "TRadioButton/fi", as it stood on 2020-03-01 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
