Sign in Join
Wiki copytemporary

TButton/fi: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11**TButton** ![](/wiki-images/b/b2/Tbutton.png) on komponentti, joka tarjoaa painonapin perustoiminnot. Se löytyy [[Component Palette/fi|komponenttipaletin]] [[Standard tab/fi|Standard-välilehdeltä]].
22
33TButton on yksi useimmin käytetyistä komponenteista [[TForm/fi|lomakkeella]]. Klikkaamalla hiirellä sitä ( tai siirrytään sille \<tab\>-näppäimellä ja painetaan \<enter\>-näppäintä) niin tapahtuma syntyy. Tämä klikkaus kutsuu tapahtumaa. Tähän tarvitaan [[Event order|tapahtumakäsittelijää]] johon kutsun jälkeen hypätään.
44
55Lisätään painike lomakkeelle, klikkaamalla TButton-komponenttia (painikkeen kuvake on se jossa on "OK" teksti keskellä) komponenttipaletin Standard-välilehdellä ja asettamalla se klikkauksella lomakkeelle.
66
77Tapahtumakäsittelijä saadaan hiiren napsautuksella voidaan melko helposti, Tuplaklikkaa Button:a(tai komponenttimuokkaimessa valitaan Button:n onclick tapahtuma). Button1 tapahtuma lomakkeella Form1 näyttää tältä:
88
99``` pascal
1010procedure TForm1.Button1Click(Sender: TObject);
1111begin
1212
1313end;
1414```
1515
1616**[[Begin/fi|Begin]]** ja **[[End/fi|end]]** lauseiden välille kirjoitetaan koodi, jota kutsutaan, kun **Button1**:stä klikataan.
1717
1818Yleensä aloittelijoiden oppaat käyttävät TButton:a helppona tulona [[Glossary|olio-ohjelmointiin]] Lazaruksella. Seuraavat oppaat sopivat hyvin aloittelijoille ymmärtääkseen painikkeiden käytön:
1919
2020- [[Form Tutorial|Ensimmäinen graafinen sovellus]] täydellisille aloittajille
2121- [[Lazarus Tutorial/fi|Ensimmäinen Lazarus ohjelmasi]] Lazarus opastus
2222- [[Object Oriented Programming with FreePascal and Lazarus|Ohjelmointi esimerkki]] olio-ohjelmoinnista Free Pascal:lla ja Lazaruksella
2323
2424#### Yksinkertainen esimerkki
2525
2626- Luo uusi sovellus, vedä ja pudota TButton lomakkeelle.
2727- Tuplaklikkaa tätä *Button1*-painiketta lomakkeella (luodaan *Button1* oletuskäsittelijä: *onClick*, lähdekoodieditori avautuu).
2828- Lisää seuraava koodi tapahtumakäsittelijään (lisää puuttuva rivi):
2929
3030``` pascal
3131procedure TForm1.Button1Click(Sender: TObject);
3232begin
3333 ShowMessage('Lazarus makes my day'); //Viesti-dialogi (message) näyttää sisällön
3434end;
3535```
3636
37-- Käynnistä ohjelma (esim. funktionäppäimellä <span class="kbd">F9</span>).
37+- Käynnistä ohjelma (esim. funktionäppäimellä `F9`).
3838
3939## Hiiren oikea painike
4040
4141Jokaisella painikkeella (kuten monella muullakin komponentilla) on (valinnainen) PopupMenu ominaisuus (ponnahdusvalikko), joka aktivoi siihen liitetyn [[TPopupMenu/fi|TPopupMenu]]:n kun hiiren oikeata painiketta klikataan.
4242
4343## Dynaamisesti luotu painike
4444
4545Joskus suunnitteluaikaisen luomisen sijasta painikkeita (tai muita komponentteja), on helpompaa luoda niitä dynaamisesti suorituksen aikana. Tämä lähestymistapa on hyödyllinen varsinkin jos täytyy tehdä toistuvia painikkeita lomakkeelle.
4646
4747Tämä voidaan saavuttaa kuten seuraavassa esimerkissä (nopeasti tehty laskin):
4848
4949- Luo uusi **tyhjä** [[Form Tutorial|graafinen sovellus]] lomakkeelle *Form1* ja lisää **StdCtrls** [[Uses/fi|uses lauseeseen]] (koska siellä on TButton määritelty).
5050- vaihda caption *Form1* --\> *QuickAdd*.
5151- Luo OnCreate tapahtumankäsittelijä Form1:lle (Siirry komponenttimuokkaimessa tapahtumaan *OnCreate* ja klikkaa painonappia \[...\]).
5252- Täydennä koodi seuraavanlaiseksi:
5353
5454``` pascal
5555procedure TForm1.FormCreate(Sender: TObject);
5656var
5757 i: Integer;
5858 aButton: TButton;
5959begin
6060 for i:=0 to 9 do begin //Luodaan 10 painiketta
6161 aButton:=TButton.Create(Self); //Luodaan TButton painike, Owner on Form1, mihin se laitetaan
6262 aButton.Parent:=Self; //Määrittää missä se näytetään
6363 aButton.Width:=aButton.Height; //Leveys olisi sama kuin korkeus
6464 aButton.Left:=i*aButton.Width; //Vasemman reunan etäisyys
6565 aButton.Caption:=IntToStr(i); //Painikkeessa näytettävä teksti (numero 0..9)
6666 aButton.OnClick:=@aButtonClick; //Painikkeen tapahtumakäsittelijä (luodaan myöhemmin)
6767 end;
6868 Self.Height:=aButton.Height; //Lomakkeen korkeus on sama kuin painikkeen korkeus
6969 Self.Width:=aButton.Width*10; //Lomakkeen leveys olisi sama kuin painkkeiden leveys
7070end;
7171```
7272
7373- Nyt täytyy luoda tapahtuman käsittelijä painikkeen klikkaukseen.
7474- Lähdekoodieditorissa, siirry luokan *TForm1* osioon **`private`**.
7575- Lisää **`procedure aButtonClick(Sender: TObject);`** ja paina näppäimiä \<CTRL\> + \<Shift\> + \<c\> (Koodin täydentäjä tulee aktiiviseksi ja luo aliohjelman `TForm1.aButtonClick(Sender: TObject);`.
7676- Täydennä lähdekoodi seuraavaksi:
7777
7878``` pascal
7979procedure TForm1.aButtonClick(Sender: TObject);
8080const
8181 Cnt: Integer = 0;
8282var
8383 i: Integer;
8484begin
8585 if (Sender is TButton) and // Tarkistetaan että kutsuja oli painike
8686 TryStrToInt(TButton(Sender).Caption, i) // yritetään muuntaa painikkeen teksti kokonaisluvuksi
8787 then begin
8888 Cnt:=Cnt + i; // Lisätään laskuria painikkeessa olevalla luvulla
8989 Caption:='QuickAdd: '+IntToStr(Cnt); // Kirjoitetaan laskurin tulos lomakkeen yläpalkkiin
9090 end;
9191end;
9292```
9393
9494- Käynnistä sovellus.
9595
9696> **Note:** Painikkeiden tapahtumankäsittelijäksi voidaan liittää mikä tahansa lomakkeella oleva **`procedure <class>.<name of procedure>(Sender: TObject);`**.
9797>
9898> `Siten voidaan käyttää yhtä ja samaa aliohjelmaa muissakin luokissa!`
9999
100100## Katso myös
101101
102102- [[doc:lcl/stdctrls/tbutton.html|TButton doc]]
103103- [[TBitBtn]]
104104- [[TSpeedButton]]
105105- [[TColorButton]]
106106- [[15-puzzle/fi|15-peli]]
107107
108108---
109109*From the Free Pascal wiki, page "TButton/fi", as it stood on 2020-02-29 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).*

Back to history