TPopupMenu/fi: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: TPopupMenu/fi
| Old | New | Line | |
|---|---|---|---|
| 1 | + | **TPopupMenu**  on ponnahdusvalikko, joka avautuu työpöydälle, kun kohteen päällä klikataan hiiren kakkospainikkeella. | |
| 2 | + | ||
| 3 | + | Se 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. | |
| 4 | + | ||
| 5 | + | Valikkomuokkaimeen pääsee ponnahdusvalikon kuvaketta klikkaamalla hiiren kakkospainikkeella lomakkeella. | |
| 6 | + | ||
| 7 | + | ## Ponnahdusvalikon tekeminen | |
| 8 | + | ||
| 9 | + | Seuraavassa vaiheessa nähdään kuinka voidaan antaa ponnahdusvalikko komponentille [[TForm|lomakkeella]]: | |
| 10 | + | ||
| 11 | + | - 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ä. | |
| 12 | + | - Komponenttimuokkaimessa (jossa on valittuna *Image1*) ja sen ominaisuudet välilehdellä valitaan *Align* ominaisuus. Asetetaan align arvoon *alClient* (niin Image1 säätyy koko lomakkeen kokoiseksi). | |
| 13 | + | - 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). | |
| 14 | + | - Klikkaa hiiren kakkospainikkeella "PopupMenu1", ponnahdusvalikko tulee esiin. Klikkaa ensimmäistä kohtaa **Valikkomuokkain**ta. | |
| 15 | + | - [[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>. | |
| 18 | + | - 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**. | |
| 19 | + | - 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. | |
| 20 | + | - Vaihdetaan uuden ponnahdusvalikon kohdan Caption arvoksi **Centered** ja Name ominaisuus arvoon **popCenter**. | |
| 21 | + | - 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. | |
| 22 | + | - Valitaan lomakkeella *Image1* ja siirrytään komponenttimuokkaimessa sen **PopupMenu**- ominaisuuteen. Siinä, valitaan yhdistelmäruudusta (combobox) arvo *PopupMenu1*. | |
| 23 | + | - Sovellusohjelman ajon aikana ponnahdusvalikko tulee aina näkyviin, jos klikataan kuvaa hiiren kakkospainikkeella. | |
| 24 | + | ||
| 25 | + | Nyt 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. | |
| 26 | + | ||
| 27 | + | Seuraavaksi selitetään, miten valikkoklikkausten tapahtumia tehdään ja muokataan komponenttimuokkaimen avulla. | |
| 28 | + | ||
| 29 | + | ## Laitetaan ponnahdusvalikko tekemään jotakin | |
| 30 | + | ||
| 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: | |
| 32 | + | ||
| 33 | + | ||
| 34 | + | ``` pascal | |
| 35 | + | procedure TForm1.popLoadClick(Sender: TObject); | |
| 36 | + | begin | |
| 37 | + | ||
| 38 | + | end; | |
| 39 | + | ``` | |
| 40 | + | ||
| 41 | + | - 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: | |
| 42 | + | - 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: | |
| 43 | + | ||
| 44 | + | ``` pascal | |
| 45 | + | procedure TForm1.popLoadClick(Sender: TObject); | |
| 46 | + | begin | |
| 47 | + | if OpenDialog1.Execute then //only if a file is selected | |
| 48 | + | try //try | |
| 49 | + | Image1.Picture.LoadFromFile(OpenDialog1.Filename); //to load that file | |
| 50 | + | except | |
| 51 | + | end; | |
| 52 | + | end; | |
| 53 | + | ``` | |
| 54 | + | ||
| 55 | + | - Tehdään vastaavat työt muille ponnahdusvalikon kohdille ja täydennetään niiden tapahtumankäsittelijän koodit seuraavanlaiseksi: | |
| 56 | + | ||
| 57 | + | ``` pascal | |
| 58 | + | procedure TForm1.popStretchClick(Sender: TObject); | |
| 59 | + | begin | |
| 60 | + | popStretch.Checked := not popStretch.Checked; //mark/checked on/off | |
| 61 | + | Image1.Stretch := popStretch.Checked; //Image1 streched yes/no | |
| 62 | + | end; | |
| 63 | + | ||
| 64 | + | procedure TForm1.popCenterClick(Sender: TObject); | |
| 65 | + | begin | |
| 66 | + | popCenter.Checked := not popCenter.Checked; //mark/checked on/off | |
| 67 | + | Image1.Center := popCenter.Checked; //Image1 center yes/no | |
| 68 | + | end; | |
| 69 | + | ``` | |
| 70 | + | ||
| 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. | |
| 72 | + | ||
| 73 | + | ## Ponnahdusvalikko omalla tavalla | |
| 74 | + | ||
| 75 | + | Voi olla että ponnahdusvalikko halutaan näyttää jollain muulla tavalla. Se voidaan toteuttaa **`PopupMenu.PopUp`**. | |
| 76 | + | ||
| 77 | + | Yksinkertainen esimerkki: | |
| 78 | + | ||
| 79 | + | - Luo uusi [[Form Tutorial|GUI-sovellus]] ja lisätään lomakkeelle TPopupMenu *PopupMenu1* ja [[TButton]] *Button1* . | |
| 80 | + | - Aseta muutamia valikkokohteita PopupMenu1: een | |
| 81 | + | - Luodaan tapahtumakäsittelijä *Button 1*: n OnClick-tapahtumasta ja täydennetään koodi seuraavanlaiseksi: | |
| 82 | + | ||
| 83 | + | ``` pascal | |
| 84 | + | procedure TForm1.Button1Click(Sender: TObject); | |
| 85 | + | begin | |
| 86 | + | PopupMenu1.PopUp; //Näytä ponnahdusvalikko | |
| 87 | + | end; | |
| 88 | + | ``` | |
| 89 | + | ||
| 90 | + | - Käynnistä ohjelma, ponnahdusvalikko kutsutaan klikkaamalla painiketta. | |
| 91 | + | ||
| 92 | + | ## Katso myös | |
| 93 | + | ||
| 94 | + | - [[doc:lcl/menus/tpopupmenu.html|TPopupMenu doc]] | |
| 95 | + | - [[TMainMenu]] | |
| 96 | + | ||
| 97 | + | --- | |
| 98 | + | *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).* |
