Sign in Join
Wiki copytemporary

TButton/fi: what changed

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

Title: TButton/fi

OldNewLine
1+**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ä]].
2+
3+TButton 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.
4+
5+Lisä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.
6+
7+Tapahtumakä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ä:
8+
9+``` pascal
10+procedure TForm1.Button1Click(Sender: TObject);
11+begin
12+
13+end;
14+```
15+
16+**[[Begin/fi|Begin]]** ja **[[End/fi|end]]** lauseiden välille kirjoitetaan koodi, jota kutsutaan, kun **Button1**:stä klikataan.
17+
18+Yleensä 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:
19+
20+- [[Form Tutorial|Ensimmäinen graafinen sovellus]] täydellisille aloittajille
21+- [[Lazarus Tutorial/fi|Ensimmäinen Lazarus ohjelmasi]] Lazarus opastus
22+- [[Object Oriented Programming with FreePascal and Lazarus|Ohjelmointi esimerkki]] olio-ohjelmoinnista Free Pascal:lla ja Lazaruksella
23+
24+#### Yksinkertainen esimerkki
25+
26+- Luo uusi sovellus, vedä ja pudota TButton lomakkeelle.
27+- Tuplaklikkaa tätä *Button1*-painiketta lomakkeella (luodaan *Button1* oletuskäsittelijä: *onClick*, lähdekoodieditori avautuu).
28+- Lisää seuraava koodi tapahtumakäsittelijään (lisää puuttuva rivi):
29+
30+``` pascal
31+procedure TForm1.Button1Click(Sender: TObject);
32+begin
33+ ShowMessage('Lazarus makes my day'); //Viesti-dialogi (message) näyttää sisällön
34+end;
35+```
36+
37+- Käynnistä ohjelma (esim. funktionäppäimellä <span class="kbd">F9</span>).
38+
39+## Hiiren oikea painike
40+
41+Jokaisella painikkeella (kuten monella muullakin komponentilla) on (valinnainen) PopupMenu ominaisuus (ponnahdusvalikko), joka aktivoi siihen liitetyn [[TPopupMenu/fi|TPopupMenu]]:n kun hiiren oikeata painiketta klikataan.
42+
43+## Dynaamisesti luotu painike
44+
45+Joskus 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.
46+
47+Tämä voidaan saavuttaa kuten seuraavassa esimerkissä (nopeasti tehty laskin):
48+
49+- Luo uusi **tyhjä** [[Form Tutorial|graafinen sovellus]] lomakkeelle *Form1* ja lisää **StdCtrls** [[Uses/fi|uses lauseeseen]] (koska siellä on TButton määritelty).
50+- vaihda caption *Form1* --\> *QuickAdd*.
51+- Luo OnCreate tapahtumankäsittelijä Form1:lle (Siirry komponenttimuokkaimessa tapahtumaan *OnCreate* ja klikkaa painonappia \[...\]).
52+- Täydennä koodi seuraavanlaiseksi:
53+
54+``` pascal
55+procedure TForm1.FormCreate(Sender: TObject);
56+var
57+ i: Integer;
58+ aButton: TButton;
59+begin
60+ for i:=0 to 9 do begin //Luodaan 10 painiketta
61+ aButton:=TButton.Create(Self); //Luodaan TButton painike, Owner on Form1, mihin se laitetaan
62+ aButton.Parent:=Self; //Määrittää missä se näytetään
63+ aButton.Width:=aButton.Height; //Leveys olisi sama kuin korkeus
64+ aButton.Left:=i*aButton.Width; //Vasemman reunan etäisyys
65+ aButton.Caption:=IntToStr(i); //Painikkeessa näytettävä teksti (numero 0..9)
66+ aButton.OnClick:=@aButtonClick; //Painikkeen tapahtumakäsittelijä (luodaan myöhemmin)
67+ end;
68+ Self.Height:=aButton.Height; //Lomakkeen korkeus on sama kuin painikkeen korkeus
69+ Self.Width:=aButton.Width*10; //Lomakkeen leveys olisi sama kuin painkkeiden leveys
70+end;
71+```
72+
73+- Nyt täytyy luoda tapahtuman käsittelijä painikkeen klikkaukseen.
74+- Lähdekoodieditorissa, siirry luokan *TForm1* osioon **`private`**.
75+- 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);`.
76+- Täydennä lähdekoodi seuraavaksi:
77+
78+``` pascal
79+procedure TForm1.aButtonClick(Sender: TObject);
80+const
81+ Cnt: Integer = 0;
82+var
83+ i: Integer;
84+begin
85+ if (Sender is TButton) and // Tarkistetaan että kutsuja oli painike
86+ TryStrToInt(TButton(Sender).Caption, i) // yritetään muuntaa painikkeen teksti kokonaisluvuksi
87+ then begin
88+ Cnt:=Cnt + i; // Lisätään laskuria painikkeessa olevalla luvulla
89+ Caption:='QuickAdd: '+IntToStr(Cnt); // Kirjoitetaan laskurin tulos lomakkeen yläpalkkiin
90+ end;
91+end;
92+```
93+
94+- Käynnistä sovellus.
95+
96+> **Note:** Painikkeiden tapahtumankäsittelijäksi voidaan liittää mikä tahansa lomakkeella oleva **`procedure <class>.<name of procedure>(Sender: TObject);`**.
97+>
98+> `Siten voidaan käyttää yhtä ja samaa aliohjelmaa muissakin luokissa!`
99+
100+## Katso myös
101+
102+- [[doc:lcl/stdctrls/tbutton.html|TButton doc]]
103+- [[TBitBtn]]
104+- [[TSpeedButton]]
105+- [[TColorButton]]
106+- [[15-puzzle/fi|15-peli]]
107+
108+---
109+*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