Sign in Join
Wiki copytemporary

TMainMenu/fi: what changed

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

OldNewLine
11**TMainMenu** ![](/wiki-images/6/6f/Tmainmenu.png) on ei-visuaalinen komponentti [[Component Palette/fi|komponenttinpaletin]] [[Standard tab/fi|Standard]]-välilehdeltä, joka muodostaa lomakkeen päävalikon.
22
33## Kuvaus
44
55Päävalikko esiintyy lomakkeen yläosassa josta käyttäjä voi valita valikon eri vaihtoehdoista.
66
77Valikkomuokkaimen saa esille klikkaamalla oikealla näppäimellä TMainMenu:n kuvaketta lomakkeella.
88
99## Yleinen käytäntö
1010
1111On aika yleinen käytäntö nimetä eri valikot alkaviksi kirjaimilla *mnu* tai *menu*. Alivalikot jatkavat tätä nimeämistapaa lisäämällä siihen valikonnimen, johon ne kuuluvat, esim. ylätason valikon "Muokkaa" alivalikko "Leikkaa" on yleensä nimetty *mnuEditCut* tai *menuEditCut*. Tämä nimeämistapa helpottaa muistamista, kuusi kuukautta myöhemmin, kun tehdään muutoksia, niin tiedetään miten ne nimettiin/nimetään. Huomaa, että tämä on vain yleinen käytäntö joten se ei ole pakollinen mutta jos niin tehdään, niin se on luultavasti helpompi tehdä muutoksia myöhemmin tai ymmärtää mitä koodi tekee kun koodia ei ole katseltu vähään aikaan. Tai joku muu joutuu ylläpitämään ohjelmaa.
1212
1313## Valikkojen luominen
1414
15151. Valitse komponenttipaletista TMainMenu ja aseta komponentti lomakkeelle klikkaamalla esin komponenttipaletilla TMainMenu-komponenttia ja sitten klikkaamalla lomaketta. TMainMenu-komponentin kuvake näkyy lomakkeella. Tämä neliömäinen kuvake, jossa on näkyvissä pudotusvalikko ja komponentin nimi, joka on oletusarvoisesti *MainMenu1*.
16162. Jos **MainMenu1**- nimi ei ole sopiva niin siirrytään komponenttimuokkaimeen ja muutetaan Name-ominaisuus sopivaksi. Jos se halutaan vaihtaa XMenu:ksi niin kirjoitetaan XMenu Name -ominaisuuden vasemmalla puolella olevaan ruutuun ja painetaan {{keypress \| enter} jolloin komponentin nimi muuttuu.
17173. Klikkaa hiiren oikealla painikkeella lomakkeella olevaa TMainMenu-komponentin kuvaketta joka on nyt nimeltään XMenu jolloin avautuu ponnahdusvalikko. Valitaan ponnahdusvalikon ensimmäinen kohta **Valikkomuokkain**.
18184. Valikkomuokkain avautuu. Mitään valikon kohtaa ei ole vielä tehty. Klikataan kohtaa **Lisää valikon kohta** tällöin luodaan "New Item1". Tämä on ylätason valikko, joka muistuttaa "File Edit View Help" -valikkoa, joita on monissa ohjelmissa. Todennäköisesti tätä nimeä halutaan muuttaa, klikataan sitä jos se ei ole valittuna ja siirrytään sitten komponenttimuokkaimeen.
19195. Komponenttimuokkaimeessa vaihdetaan Name ominaisuus johonkin sopivammaksi. Aika usein tämä on Tiedosto-valikko, joten vaihdetaan nimi kirjoittamalla **mnuFile** ja painamalla Enter.
20-6. Oletusteksti 'New Item1' ei ole hyvä, joten siirrytään Caption-ominaisuuteen ja kirjoitetaan esim. **&File** ja painetaan enter. **[[&amp;]]**-merkki kirjaimen edessä kertoo näppäinoikotien kyseiseen kohtaan. Se alleviivaa seuraavan kirjaimen. Sen avulla voit avata valikon painamalla <span class="kbd">Alt</span>-näppäintä ja alleviivattua kirjainta. Valikon otsikko muuttuu **<u>F</u>ile**:ksi.
20+6. Oletusteksti 'New Item1' ei ole hyvä, joten siirrytään Caption-ominaisuuteen ja kirjoitetaan esim. **&File** ja painetaan enter. **[[&amp;]]**-merkki kirjaimen edessä kertoo näppäinoikotien kyseiseen kohtaan. Se alleviivaa seuraavan kirjaimen. Sen avulla voit avata valikon painamalla `Alt`-näppäintä ja alleviivattua kirjainta. Valikon otsikko muuttuu **File**:ksi.
2121
2222Tässä vaiheessa voidaan luodaan lisää ylätason valikoita.
2323
24-1. Palaa valikkomuokkain-ikkunaan. Valitse <u>F</u>ile ja klikkaa sitä hiiren kakkospainikkeella. Ponnahdusvalikko tulee näkyviin. Valitse niistä *Lisää uusi kohta jälkeen* (Insert New Item After) ja uusi valikko nimellä *Menu Item2* tulee näkyviin. Kuten kahdessa edellisessä kohdassa selitettiin niin vaihdetaan nimi **mnuHelp** ja komponenttimuokkaimessa Caption-ominaisuuteen kirjoitetaan **&Help** .
25-2. Tehdään valikkokohta <u>F</u>ile:n alle. Klikkaa sitä hiiren kakkospainikkeella ja valitse sitten **Lisää alavalikko alle** . File-valikon alavalikko nimeltä "MenuItem" tulee näkyviin.
24+1. Palaa valikkomuokkain-ikkunaan. Valitse File ja klikkaa sitä hiiren kakkospainikkeella. Ponnahdusvalikko tulee näkyviin. Valitse niistä *Lisää uusi kohta jälkeen* (Insert New Item After) ja uusi valikko nimellä *Menu Item2* tulee näkyviin. Kuten kahdessa edellisessä kohdassa selitettiin niin vaihdetaan nimi **mnuHelp** ja komponenttimuokkaimessa Caption-ominaisuuteen kirjoitetaan **&Help** .
25+2. Tehdään valikkokohta File:n alle. Klikkaa sitä hiiren kakkospainikkeella ja valitse sitten **Lisää alavalikko alle** . File-valikon alavalikko nimeltä "MenuItem" tulee näkyviin.
26263. Vaihdetaan nimi kuvaavampaan muotoon kertomaan mitä se tekee, vaikkapa "Open" (tai "Avaa"). Siirrytään komponenttimuokkaimeen ja muutetaan Name-ominaisuuteen teksti **mnuFileOpen** ja muuta Caption ominaisuuteen **&Open** (Avaa) .
27-4. Jos tarvitaan ylätason valikkokohta **<u>F</u>ile** ja **<u>H</u>elp** välille . Voidaan esim. valita hiiren kakkospainikkeella **<u>F</u>ile** ja valitsemalla **Lisää uusi kohde jälkeen**. Tämä onnistuu myöskin valitsemalla **<u>H</u>elp** hiiren kakkospainikkeella ja valitsemalla **Lisää uusi kohta ennen**.
27+4. Jos tarvitaan ylätason valikkokohta **File** ja **Help** välille . Voidaan esim. valita hiiren kakkospainikkeella **File** ja valitsemalla **Lisää uusi kohde jälkeen**. Tämä onnistuu myöskin valitsemalla **Help** hiiren kakkospainikkeella ja valitsemalla **Lisää uusi kohta ennen**.
28285. Muuta kohteen kohteen ominaisuutta komponenttimuokkaajalla niin että sen Name ominaisuus on **mnuEdit** ja Caption ominaisuus on **&Edit** (Muokkaa).
29296. Sovella edellä mainittuja toimintoja tarvittavan valikon ja alavalikon mukaisesti.
3030
3131Tähän asti tehty näyttää valikon joka näkyy ajon aikana ja antaa käyttäjälle mahdollisuuden klikata sen valintoja. Mutta se ei todellisuudessa tee mitään. Jos halutaan, että valikkokohteet tekevät jotain, niin on lisättävä [[Event order|tapahtumia]] jokaiseen valikkoon tai alivalikkoon, joka reagoi klikkaamiseen. Yleensä ylätason valikot eivät reagoi toisin kuin alavalikot tekevät. Valikon reagointiin on kaksi vaihtoehtoa: voidaan lisätä tapahtumia valikkoon tai voidaan käyttää [[TActionList]]-komponenttia. Tärkeimpiä syitä käyttää TActionList-komponenttia on, jos aiotaan käyttää kuvakeita työkalurivillä, jossa on valikoita valikoista, kuten "File"-valikon New, Open, Save, Save As, Quit jne. alivalikoina ja työkalupalkilla on samojen toimintojen painikkeet. Sen sijaan, että kirjoitettaisiin kahta rutiinia New ja Open -toimintojen käsittelemiseen, käytetään sekä Valikko- että työkalurivin TActionList-asetusta. Katso miten TActionListia käytetään. Nyt kuitenkin selitetään miten käsitellä valikkokohtaa käyttämällä tapahtumia.
3232
3333## Laitetaan valikko tekemään jotakin
3434
35-1. Palaa takaisin valikkomuokkain ikkunaan. Valitaan **<u>F</u>ile** valikon alikohtaa **<u>O</u>pen**. Siirrytään komponenttimuokkaimen "Tapahtumat"-välilehdelle.
35+1. Palaa takaisin valikkomuokkain ikkunaan. Valitaan **File** valikon alikohtaa **Open**. Siirrytään komponenttimuokkaimen "Tapahtumat"-välilehdelle.
3636
3737Ainoa tapahtuma, jota halutaan todella muuttaa, on OnClick, joka on tyhjä. Jos olisi jo ollut olemassa oleva tapahtumakäsittelijä niin voitaisiin käyttää sitä, mutta koska näin ei ole niin voidaan saada Lazarus luomaan sen. Oikealla on 3 pisteen painike \[...\]. Klikkaamalla sitä luodaan uusi aliohjelma lähdekoodiin ja näkymä siirtyy lähdekoodieditoriin. Se näyttää samanlaiselta kuin tämä:
3838
3939\#:**procedure** TfrmMain.mnuFileOpenClick(Sender: TObject);
4040
4141\#:**begin**\
42-\
42+
4343\#:**end**;
4444
45-1. Lauseiden **[[Begin]]** ja **[[End]]** väliin kirjoitetaan koodi joka käsittelee toimintoja kun valikosta valitaan Open. Tämä saattaa tarkoittaa esimerkiksi [[TOpenDialog]]- komponentin asettamista lomakkeelle (se löytyy Dialogis- välilehdeltä) ja muokkaamalla kyseistä valintaikkunaa standardin Avaa-valintaikkunan luomiseksi. Sama pätee, jos on **<u>S</u>ave** tai **Save <u>a</u>s** alivalikko.
45+1. Lauseiden **[[Begin]]** ja **[[End]]** väliin kirjoitetaan koodi joka käsittelee toimintoja kun valikosta valitaan Open. Tämä saattaa tarkoittaa esimerkiksi [[TOpenDialog]]- komponentin asettamista lomakkeelle (se löytyy Dialogis- välilehdeltä) ja muokkaamalla kyseistä valintaikkunaa standardin Avaa-valintaikkunan luomiseksi. Sama pätee, jos on **Save** tai **Save as** alivalikko.
46462. Edellä mainitun toistamisella voidaan aloittaa lisävalikoiden ja alivalikoiden luominen. Luoda käsittelijät jokaisen valikkovaihtoehdon mukaan tarpeen mukaan.
4747
4848## Valintaruutu valikkoon
4949
5050Jos haluataan valintaruutu valikkoon, jossa silloin, kun käyttäjä klikkaa sitä, se kääntää valintaruudun päälle tai pois päältä. Näin se tehdään:
5151
52-1. Siirry valikkomuokkaimeen kohtaan **<u>E</u>dit**
53-2. Tehdään sen alle valikkokohta (esim. valinnalla **Lisää alavalikko alle**). Siirry komponenttimuokkaimen "Ominaisuudet"- välilehdelle. Anna Name-ominaisuuteen teksti **mnuEditPreserve** ja Caption-ominaisuuteen **P&reserve case** (Koska Copy (kopioi) ja Paste (liitä) tavallisesti käyttää näppäinyhdistelmiä <span class="kbd">ALT</span>+<span class="kbd">C</span> ja <span class="kbd">ALT</span>+<span class="kbd">P</span> niin käytetään
52+1. Siirry valikkomuokkaimeen kohtaan **Edit**
53+2. Tehdään sen alle valikkokohta (esim. valinnalla **Lisää alavalikko alle**). Siirry komponenttimuokkaimen "Ominaisuudet"- välilehdelle. Anna Name-ominaisuuteen teksti **mnuEditPreserve** ja Caption-ominaisuuteen **P&reserve case** (Koska Copy (kopioi) ja Paste (liitä) tavallisesti käyttää näppäinyhdistelmiä `ALT`+`C` ja `ALT`+`P` niin käytetään
5454
55-näppäinyhdistelmää <span class="kbd">ALT</span>+<span class="kbd">r</span>. Siksi tässä kohdassa on [[&amp;]] merkki ennen kirjainta r).
55+näppäinyhdistelmää `ALT`+`r`. Siksi tässä kohdassa on [[&amp;]] merkki ennen kirjainta r).
5656
57571. Oletuksena ominaisuus *checked* on arvossa [[False]]. Jos tämän valikon oletustila on valittuna, kaksoisklikkaamalla arvoa se kääntyy False-arvosta [[True]]-arvoon (ja päinvastoin).
58582. Valitaan **Tapahtumat** välilehti, Valitaan **OnClick** ominaisuus ja klikataan (..) painiketta.
59593. Lazarus vaihtaa auki lähdekoodieditorin ja luo Click tapahtuman rungon tälle valikon kohdalle.
60604. Varattujen sanojen **begin** ja **end** väliin kirjoitetaan seuraavanlainen teksti:
6161
6262 mnuEditPreserve.checked := not mnuEditPreserve.checked ;
63635. Tämä kääntää checked arvon. Jotta tätä voidaan käyttää koodissa, niin viitataan siihen **`mnuEditPreserve.checked`**. Sitä käytetään aivan kuten mikä tahansa muuta [[Boolean]] arvoa.
6464
6565## Erottimet
6666
67-Joskus halutaan valikon, jossa on rivin erottava merkintä. Esimerkiksi **<u>E</u>dit** -valikossa voi olla alavalikkoja **Cut**, **Copy** ja **Paste** ja sen jälkeen on erotinlinja ennen seuraavaa alivalikkoa. Jos halutaan luoda erotuslinja niin tehdään uusi valikon kohta ja Caption ominaisuus sisältää yhden [[Minus|viiva (-)]] merkin.
67+Joskus halutaan valikon, jossa on rivin erottava merkintä. Esimerkiksi **Edit** -valikossa voi olla alavalikkoja **Cut**, **Copy** ja **Paste** ja sen jälkeen on erotinlinja ennen seuraavaa alivalikkoa. Jos halutaan luoda erotuslinja niin tehdään uusi valikon kohta ja Caption ominaisuus sisältää yhden [[Minus|viiva (-)]] merkin.
6868
6969## Näppäinoikotiet
7070
7171Jos halutaan määrittää valikon tiettyyn näppäinyhdistelmään niin toimitaan seuraavasti:
7272
7373- Valitaan valikkomuokkaimessa valikon kohta mihin pitäisi liittää näppäinoikotie.
7474- Mennään komponenttimuokkaimeen ja asetetaan arvo ominaisuuteen *ShortCut* klikkaamalla \[...\]-painiketta.
7575- Se näyttää ikkunan, jossa voidaan asettaa haluttu näppäinyhdistelmä.
7676- Ohjelman ajon aikana käytettäessä tätä näppäinoikotietä, tapahtuu sama kuin olisi klikannut kyseistä valikon kohtaa.
7777
7878## Kuva valikon edessä
7979
8080Jos halutaan tehdä valikosta visuaalisesti houkuttelevampi tai luoda valikkokohteille viittaus mahdolliseen työkalupalkkiin, voidaan näyttää kuvia valikon eri kohteiden edessä. Seuraavat vaiheet ovat tarpeen:
8181
8282- Lisää [[TImageList]] [[TForm/fi|lomakkeelle]]. Se löytyy komponentti paletin *Common Controls*-välilehdeltä. Valitse kyseinen TImageList-komponentti ja vie se klikkaamalla lomaketta lomakkeelle. Nyt lomakkeella luotiin *ImageList1* niminen TImageList-komponentti. Tämä ImageList tulee sisältämään kaikki symbolit tai kuvat, jotka näytetään valikossa.
8383- Klikataan hiiren kakkospainikkeella *ImageList1*-komponenttia lomakkeella niin voidaan avata **ImageList muokkain**.
8484- Lisätään kaikki valokuvat, yksi toistensa jälkeen, mitä tarvitaan valikkoihin, ImageListiin. Klikataan vain painiketta *Lisää* ja valitaan sopiva kuva.
8585- Kun on lisätty kaikki tarvittavat kuvat ImageListiin niin vahvistetaan valinta valitsemalla \[OK\] -painike ja ImageList muokkain on sulkeutuu.
8686- Tämän jälkeen on valittava MainMenu ja asetettava komponenttimuokkaimessa *Images*ominaisuuteen kyseinen ImageList. Valitsemalla vain ImageList1 kyseisen kohdan yhdistelmäruudussa.
8787- Avataan valikonmuokkain uudelleen ja valitaan valikon kohta, johon halutaan saada kuva.
8888- Menemällä komponenttimuokkaimessa valikon *ImageIndex*-ominaisuuteen jossa voidaan valita kyseisessä kohdassa näytettävä kuva.
8989- Valitse seuraava valikon kohta ja valitse sille kuva jne.
9090
9191## Vihje: alivalikon kohdat vasemmalle (Windows Vista, 7 and 10)
9292
9393Jos nähdään pudotusvalikko, joka on kohdistettu valikoiden kohdissa oikealle puolelle ja se avautuu vasemmalle, koska Windows on asetettu oikeakätisesti Tablet PC -asetuksiin . Tämä tapahtuu, kun käytetään tabletteja ja kirjoitetaan / painetaan ruudulla, valikot näkyvät suoraan. Jos olet oikeakätinen ja haluaisit valikot vasemmalle. Normaalissa PC-toiminnassa tämä on oletusarvoisesti vasemmanpuoleinen.
9494
9595Tämä voidaan tarkistaa seuraavasti:
9696
9797- Paina Window-painiketta + R.
98-- Liitä: **shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}** ja paina <span class="kbd">enter</span>.
98+- Liitä: **shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}** ja paina `enter`.
9999- Mene avautuvan ikkunan välilehdelle **Other**.
100100- Oletusarvona pitäisi olla **Left-handed** jotta valikot näkyvät oikealla, muuten ne näkyvät vasemmalla.
101101- Huomaa: Alavalikon nuoli näkyy edelleen valikon oikealla puolella, riippumatta siitä, mikä tämä asetus on.
102102
103103## Ajonaikainen luonti
104104
105105Ajonaikainen luonnissa TMainMenu pitäisi owner:ksi laittaa kyseinenlomake.
106106
107107```delphi
108108 mnuMainMain = TMainMenu.Create(Form1);
109109```
110110
111111(Huomaa, että parent määrittäminen ei ole välttämätöntä, määrittämällä sovellus omistajaksi, ei ole haluttua vaikutusta)
112112
113113## Katso myös
114114
115115- [[doc:lcl/menus/tmainmenu.html|TMainMenu doc]]
116116- [[TPopupMenu]]
117117- [[TActionList]]
118118
119119---
120120*From the Free Pascal wiki, page "TMainMenu/fi", as it stood on 2018-03-01 after a change by Djzepi, 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