Sign in Join
Wiki copytemporary

TPopupMenu/fi: what changed

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

OldNewLine
11**TPopupMenu** ![](/wiki-images/e/e4/Tpopupmenu.png) on ponnahdusvalikko, joka avautuu työpöydälle, kun kohteen päällä klikataan hiiren kakkospainikkeella.
22
33Se on ns. näkymätön komponentti: eli jos kuvake on valittu [[Component Palette|Komponentti-paletin]] [[Standard tab/fi|Standard-välilehdeltä]] ja asetettu lomakkeelle, se ei tule näkyviin ajonaikana ennenkuin kohteen päällä klikataan hiiren kakkospainiketta jolloin näkyviin tulee valikkorakenne joka on sille määritelty.
44
55Valikkomuokkaimeen pääsee ponnahdusvalikon kuvaketta klikkaamalla hiiren kakkospainikkeella lomakkeella.
66
77## Ponnahdusvalikon tekeminen
88
99Seuraavassa vaiheessa nähdään kuinka voidaan antaa ponnahdusvalikko komponentille [[TForm|lomakkeella]]:
1010
1111- Luodaan uusi [[Form Tutorial|GUI sovellus]] ja tuodaan [[TImage]]-komponentti lomakkeelle. Tämä voidaan tehdä niin että valitaan TImage komponenttipaletin *[[Additional tab/fi|Additional]]*-välilehdeltä ja klikataan se lomakkeelle. Näin TImage tulee lomakkeelle *Image1*-nimellä.
1212- Komponenttimuokkaimessa (jossa on valittuna *Image1*) ja sen ominaisuudet välilehdellä valitaan *Align* ominaisuus. Asetetaan align arvoon *alClient* (niin Image1 säätyy koko lomakkeen kokoiseksi).
1313- Sen jälkeen laitetaan TPopupMenu (komponentti [[Standard tab/fi|standard]]-välilehdeltä)lomakkeelle . PopupMenu1- niminen komponentti näkyy lomakkeella (neliömäinen kuvake, jossa näkyvät pudotusvalikot ja komponentin nimi).
1414- Klikkaa hiiren kakkospainikkeella "PopupMenu1", ponnahdusvalikko tulee esiin. Klikkaa ensimmäistä kohtaa **Valikkomuokkain**ta.
1515- [[IDE Window: Menu Editor/fi|Valikkomuokkain ikkuna]] avautuu. Siinä ei vielä ole yhtään kohtaa. Klikkaamalla "Lisää valikon kohta" saadaan luotua kohta *MenuItem1*. Todennäköisesti se halutaan vaihtaa, klikataan sitä ja siirrytään komponenttimuokkaimeen.
16-- Määritetään komponenttimuokkaimessa Name ominaisuuden arvo "MenuItem1" kuvaavammaksi. Tämä on lataus, joten vaihdetaan Name ominaisuus kirjoittamalla **popLoad** siihen ja painamalla <span class="kbd">Enter</span>.
17-- Myös ponnahdusvalikon tässä kohtaa näytettävä teksti voisi olla parempi joten siirrytään Caption ominaisuuteen ja kirjoitetaan sinne **Load** ja painetaan <span class="kbd">Enter</span>.
16+- Määritetään komponenttimuokkaimessa Name ominaisuuden arvo "MenuItem1" kuvaavammaksi. Tämä on lataus, joten vaihdetaan Name ominaisuus kirjoittamalla **popLoad** siihen ja painamalla `Enter`.
17+- Myös ponnahdusvalikon tässä kohtaa näytettävä teksti voisi olla parempi joten siirrytään Caption ominaisuuteen ja kirjoitetaan sinne **Load** ja painetaan `Enter`.
1818- Vielä halutaan luoda yksi valikkomerkintä. Palataan Valikkomuokkain-ikkunaan. Klikkaa hiiren kakkospainikkeella Lataa. Ponnahdusvalikko tulee näkyviin. Klikkaa "Lisää uusi kohta alle" ja syntyy uusi valikon kohta. Kuten kahdessa edellisessä kohdassa on selitetty niin vaihdetaan komponenttimuokkaimessa samalla tavoin Name ominaisuus **popStretch** ja Caption ominaisuus arvoon **Stretched**.
1919- Tehdään vielä yksi ponnahdusvalikkomerkintä. Se onnistuu valikkomuokkaimessa. Klikataan hiiren kakkospainikkeella kohtaa **Load** ja klikataan "Lisää uusi kohta alle" tai klikataan hiiren kakkospainikkeella kohtaa **Stretched** ja klikataan **Lisää uusi kohta yläpoulelle**. Näin saadaan ponnahdusvalikon keskelle uusi kohta.
2020- Vaihdetaan uuden ponnahdusvalikon kohdan Caption arvoksi **Centered** ja Name ominaisuus arvoon **popCenter**.
2121- Kun on lisätty kaikki valikonkohdat, niin on vielä määritettävä, mihin komponenttiin sen pitäisi liittyä. Tässä tapauksessa pitäisi olla TImage:n *Image1* , mikä on jo alussa asetettu lomakkeella.
2222- Valitaan lomakkeella *Image1* ja siirrytään komponenttimuokkaimessa sen **PopupMenu**- ominaisuuteen. Siinä, valitaan yhdistelmäruudusta (combobox) arvo *PopupMenu1*.
2323- Sovellusohjelman ajon aikana ponnahdusvalikko tulee aina näkyviin, jos klikataan kuvaa hiiren kakkospainikkeella.
2424
2525Nyt kaikki tämä saa aikaan ponnahdusvalikon, joka näkyy sovelluksen ajon aikana ja antaa käyttäjälle mahdollisuuden klikata ponnahdusvalikon eri kohtia. Se ei kuitenkaan todellisuudessa tee mitään. Jos halutaan, että valikon eri kohdat tekevät jotain, niin on lisättävä tapahtuma jokaiselle valikon kohdalle, joka reagoi klikkaamiseen.
2626
2727Seuraavaksi selitetään, miten valikkoklikkausten tapahtumia tehdään ja muokataan komponenttimuokkaimen avulla.
2828
2929## Laitetaan ponnahdusvalikko tekemään jotakin
3030
31-- Palataan takaisin valikkomuokkaimeen (niin että "PopupMenu1" on valittuna komponenttimuokkaimessa) ja valitaan kohta *'Load*. Nyt voidaan valita hiiren kakkospainikkeen tuomasta valikosta "Lisää OnClick käsittelijä" tai siirtyä komponenttimuokkaimeen ja valita välilehti "Tapahtumat". Se ainoa tapahtuma, jota haluataan todella muuttaa, on OnClick , joka on tällä hetkellä tyhjä. Jos valmiina on sopiva tapahtumankäsittelyrutiini niin sitä voidaan käyttää ja valita se, muuten voidaan luoda tapahtuman käsittelijän "kehykset" Lazaruksen avulla. Oikealla puolella on 3 pisteen painike <span class="kbd">...</span>. Klikataan sitä ja uusi aliohjelma luodaan koodiin ja näkymä muuttuu lähdekoodieditoriksi. Aliohjelman runko näyttää jotain tällaista:
31+- Palataan takaisin valikkomuokkaimeen (niin että "PopupMenu1" on valittuna komponenttimuokkaimessa) ja valitaan kohta *'Load*. Nyt voidaan valita hiiren kakkospainikkeen tuomasta valikosta "Lisää OnClick käsittelijä" tai siirtyä komponenttimuokkaimeen ja valita välilehti "Tapahtumat". Se ainoa tapahtuma, jota haluataan todella muuttaa, on OnClick , joka on tällä hetkellä tyhjä. Jos valmiina on sopiva tapahtumankäsittelyrutiini niin sitä voidaan käyttää ja valita se, muuten voidaan luoda tapahtuman käsittelijän "kehykset" Lazaruksen avulla. Oikealla puolella on 3 pisteen painike `...`. Klikataan sitä ja uusi aliohjelma luodaan koodiin ja näkymä muuttuu lähdekoodieditoriksi. Aliohjelman runko näyttää jotain tällaista:
3232
3333
3434``` pascal
3535procedure TForm1.popLoadClick(Sender: TObject);
3636begin
3737
3838end;
3939```
4040
4141- Lauseiden **begin** ja **end** väliin lisätään ohjelmakoodi mitä tehdään kun ohjelman käyttäjä klikkaa ponnahdusvalikon kohtaa *Load*. Tässä tapauksessamme voidaan lisätä lomakkeelle [[TOpenDialog]]-komponentti ja käyttää sitä valitsemaan kuvan:
4242- Laita [[TOpenDialog]] komponentti (löytyy komponenttipaletin Dialogs-välilehdeltä) lomakkeelle, Nimetään se *OpenDialog1*:ksi (joka on oletusarvo). Muutetaan edellä esitetty aliohjelma tälläiseksi:
4343
4444``` pascal
4545procedure TForm1.popLoadClick(Sender: TObject);
4646begin
4747 if OpenDialog1.Execute then //only if a file is selected
4848 try //try
4949 Image1.Picture.LoadFromFile(OpenDialog1.Filename); //to load that file
5050 except
5151 end;
5252end;
5353```
5454
5555- Tehdään vastaavat työt muille ponnahdusvalikon kohdille ja täydennetään niiden tapahtumankäsittelijän koodit seuraavanlaiseksi:
5656
5757``` pascal
5858procedure TForm1.popStretchClick(Sender: TObject);
5959begin
6060 popStretch.Checked := not popStretch.Checked; //mark/checked on/off
6161 Image1.Stretch := popStretch.Checked; //Image1 streched yes/no
6262end;
6363
6464procedure TForm1.popCenterClick(Sender: TObject);
6565begin
6666 popCenter.Checked := not popCenter.Checked; //mark/checked on/off
6767 Image1.Center := popCenter.Checked; //Image1 center yes/no
6868end;
6969```
7070
71-- Nyt voidaan testata tätä ohjelmaa painamalla <span class="kbd">F9</span>, avaa ponnahdusvalikko hiiren kakkosnäppäimen klikkauksella ja valitse *Load*. Lataa nyt haluamasi kuva. Kun olet ladannut kuvan, kokeile muita valikkokohtia.
71+- Nyt voidaan testata tätä ohjelmaa painamalla `F9`, avaa ponnahdusvalikko hiiren kakkosnäppäimen klikkauksella ja valitse *Load*. Lataa nyt haluamasi kuva. Kun olet ladannut kuvan, kokeile muita valikkokohtia.
7272
7373## Ponnahdusvalikko omalla tavalla
7474
7575Voi olla että ponnahdusvalikko halutaan näyttää jollain muulla tavalla. Se voidaan toteuttaa **`PopupMenu.PopUp`**.
7676
7777Yksinkertainen esimerkki:
7878
7979- Luo uusi [[Form Tutorial|GUI-sovellus]] ja lisätään lomakkeelle TPopupMenu *PopupMenu1* ja [[TButton]] *Button1* .
8080- Aseta muutamia valikkokohteita PopupMenu1: een
8181- Luodaan tapahtumakäsittelijä *Button 1*: n OnClick-tapahtumasta ja täydennetään koodi seuraavanlaiseksi:
8282
8383``` pascal
8484procedure TForm1.Button1Click(Sender: TObject);
8585begin
8686 PopupMenu1.PopUp; //Näytä ponnahdusvalikko
8787end;
8888```
8989
9090- Käynnistä ohjelma, ponnahdusvalikko kutsutaan klikkaamalla painiketta.
9191
9292## Katso myös
9393
9494- [[doc:lcl/menus/tpopupmenu.html|TPopupMenu doc]]
9595- [[TMainMenu]]
9696
9797---
9898*From the Free Pascal wiki, page "TPopupMenu/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).*

Back to history