TMainMenu/fi: what changed
Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.
| Old | New | Line | |
|---|---|---|---|
| 1 | 1 | **TMainMenu**  on ei-visuaalinen komponentti [[Component Palette/fi|komponenttinpaletin]] [[Standard tab/fi|Standard]]-välilehdeltä, joka muodostaa lomakkeen päävalikon. | |
| 2 | 2 | ||
| 3 | 3 | ## Kuvaus | |
| 4 | 4 | ||
| 5 | 5 | Päävalikko esiintyy lomakkeen yläosassa josta käyttäjä voi valita valikon eri vaihtoehdoista. | |
| 6 | 6 | ||
| 7 | 7 | Valikkomuokkaimen saa esille klikkaamalla oikealla näppäimellä TMainMenu:n kuvaketta lomakkeella. | |
| 8 | 8 | ||
| 9 | 9 | ## Yleinen käytäntö | |
| 10 | 10 | ||
| 11 | 11 | On 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. | |
| 12 | 12 | ||
| 13 | 13 | ## Valikkojen luominen | |
| 14 | 14 | ||
| 15 | 15 | 1. 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*. | |
| 16 | 16 | 2. 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. | |
| 17 | 17 | 3. Klikkaa hiiren oikealla painikkeella lomakkeella olevaa TMainMenu-komponentin kuvaketta joka on nyt nimeltään XMenu jolloin avautuu ponnahdusvalikko. Valitaan ponnahdusvalikon ensimmäinen kohta **Valikkomuokkain**. | |
| 18 | 18 | 4. 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. | |
| 19 | 19 | 5. Komponenttimuokkaimeessa vaihdetaan Name ominaisuus johonkin sopivammaksi. Aika usein tämä on Tiedosto-valikko, joten vaihdetaan nimi kirjoittamalla **mnuFile** ja painamalla Enter. | |
| 20 | - | ||
| 20 | + | 6. Oletusteksti 'New Item1' ei ole hyvä, joten siirrytään Caption-ominaisuuteen ja kirjoitetaan esim. **&File** ja painetaan enter. **[[&]]**-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. | |
| 21 | 21 | ||
| 22 | 22 | Tässä vaiheessa voidaan luodaan lisää ylätason valikoita. | |
| 23 | 23 | ||
| 24 | - | ||
| 25 | - | ||
| 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. | |
| 26 | 26 | 3. 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 | - | ||
| 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**. | |
| 28 | 28 | 5. Muuta kohteen kohteen ominaisuutta komponenttimuokkaajalla niin että sen Name ominaisuus on **mnuEdit** ja Caption ominaisuus on **&Edit** (Muokkaa). | |
| 29 | 29 | 6. Sovella edellä mainittuja toimintoja tarvittavan valikon ja alavalikon mukaisesti. | |
| 30 | 30 | ||
| 31 | 31 | Tä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. | |
| 32 | 32 | ||
| 33 | 33 | ## Laitetaan valikko tekemään jotakin | |
| 34 | 34 | ||
| 35 | - | ||
| 35 | + | 1. Palaa takaisin valikkomuokkain ikkunaan. Valitaan **File** valikon alikohtaa **Open**. Siirrytään komponenttimuokkaimen "Tapahtumat"-välilehdelle. | |
| 36 | 36 | ||
| 37 | 37 | Ainoa 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ä: | |
| 38 | 38 | ||
| 39 | 39 | \#:**procedure** TfrmMain.mnuFileOpenClick(Sender: TObject); | |
| 40 | 40 | ||
| 41 | 41 | \#:**begin**\ | |
| 42 | - | ||
| 42 | + | ||
| 43 | 43 | \#:**end**; | |
| 44 | 44 | ||
| 45 | - | ||
| 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. | |
| 46 | 46 | 2. Edellä mainitun toistamisella voidaan aloittaa lisävalikoiden ja alivalikoiden luominen. Luoda käsittelijät jokaisen valikkovaihtoehdon mukaan tarpeen mukaan. | |
| 47 | 47 | ||
| 48 | 48 | ## Valintaruutu valikkoon | |
| 49 | 49 | ||
| 50 | 50 | Jos 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: | |
| 51 | 51 | ||
| 52 | - | ||
| 53 | - | ||
| 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 | |
| 54 | 54 | ||
| 55 | - | ||
| 55 | + | näppäinyhdistelmää `ALT`+`r`. Siksi tässä kohdassa on [[&]] merkki ennen kirjainta r). | |
| 56 | 56 | ||
| 57 | 57 | 1. 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). | |
| 58 | 58 | 2. Valitaan **Tapahtumat** välilehti, Valitaan **OnClick** ominaisuus ja klikataan (..) painiketta. | |
| 59 | 59 | 3. Lazarus vaihtaa auki lähdekoodieditorin ja luo Click tapahtuman rungon tälle valikon kohdalle. | |
| 60 | 60 | 4. Varattujen sanojen **begin** ja **end** väliin kirjoitetaan seuraavanlainen teksti: | |
| 61 | 61 | ||
| 62 | 62 | mnuEditPreserve.checked := not mnuEditPreserve.checked ; | |
| 63 | 63 | 5. 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. | |
| 64 | 64 | ||
| 65 | 65 | ## Erottimet | |
| 66 | 66 | ||
| 67 | - | ||
| 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. | |
| 68 | 68 | ||
| 69 | 69 | ## Näppäinoikotiet | |
| 70 | 70 | ||
| 71 | 71 | Jos halutaan määrittää valikon tiettyyn näppäinyhdistelmään niin toimitaan seuraavasti: | |
| 72 | 72 | ||
| 73 | 73 | - Valitaan valikkomuokkaimessa valikon kohta mihin pitäisi liittää näppäinoikotie. | |
| 74 | 74 | - Mennään komponenttimuokkaimeen ja asetetaan arvo ominaisuuteen *ShortCut* klikkaamalla \[...\]-painiketta. | |
| 75 | 75 | - Se näyttää ikkunan, jossa voidaan asettaa haluttu näppäinyhdistelmä. | |
| 76 | 76 | - Ohjelman ajon aikana käytettäessä tätä näppäinoikotietä, tapahtuu sama kuin olisi klikannut kyseistä valikon kohtaa. | |
| 77 | 77 | ||
| 78 | 78 | ## Kuva valikon edessä | |
| 79 | 79 | ||
| 80 | 80 | Jos halutaan tehdä valikosta visuaalisesti houkuttelevampi tai luoda valikkokohteille viittaus mahdolliseen työkalupalkkiin, voidaan näyttää kuvia valikon eri kohteiden edessä. Seuraavat vaiheet ovat tarpeen: | |
| 81 | 81 | ||
| 82 | 82 | - 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. | |
| 83 | 83 | - Klikataan hiiren kakkospainikkeella *ImageList1*-komponenttia lomakkeella niin voidaan avata **ImageList muokkain**. | |
| 84 | 84 | - Lisätään kaikki valokuvat, yksi toistensa jälkeen, mitä tarvitaan valikkoihin, ImageListiin. Klikataan vain painiketta *Lisää* ja valitaan sopiva kuva. | |
| 85 | 85 | - Kun on lisätty kaikki tarvittavat kuvat ImageListiin niin vahvistetaan valinta valitsemalla \[OK\] -painike ja ImageList muokkain on sulkeutuu. | |
| 86 | 86 | - Tämän jälkeen on valittava MainMenu ja asetettava komponenttimuokkaimessa *Images*ominaisuuteen kyseinen ImageList. Valitsemalla vain ImageList1 kyseisen kohdan yhdistelmäruudussa. | |
| 87 | 87 | - Avataan valikonmuokkain uudelleen ja valitaan valikon kohta, johon halutaan saada kuva. | |
| 88 | 88 | - Menemällä komponenttimuokkaimessa valikon *ImageIndex*-ominaisuuteen jossa voidaan valita kyseisessä kohdassa näytettävä kuva. | |
| 89 | 89 | - Valitse seuraava valikon kohta ja valitse sille kuva jne. | |
| 90 | 90 | ||
| 91 | 91 | ## Vihje: alivalikon kohdat vasemmalle (Windows Vista, 7 and 10) | |
| 92 | 92 | ||
| 93 | 93 | Jos 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. | |
| 94 | 94 | ||
| 95 | 95 | Tämä voidaan tarkistaa seuraavasti: | |
| 96 | 96 | ||
| 97 | 97 | - Paina Window-painiketta + R. | |
| 98 | - | ||
| 98 | + | - Liitä: **shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}** ja paina `enter`. | |
| 99 | 99 | - Mene avautuvan ikkunan välilehdelle **Other**. | |
| 100 | 100 | - Oletusarvona pitäisi olla **Left-handed** jotta valikot näkyvät oikealla, muuten ne näkyvät vasemmalla. | |
| 101 | 101 | - Huomaa: Alavalikon nuoli näkyy edelleen valikon oikealla puolella, riippumatta siitä, mikä tämä asetus on. | |
| 102 | 102 | ||
| 103 | 103 | ## Ajonaikainen luonti | |
| 104 | 104 | ||
| 105 | 105 | Ajonaikainen luonnissa TMainMenu pitäisi owner:ksi laittaa kyseinenlomake. | |
| 106 | 106 | ||
| 107 | 107 | ```delphi | |
| 108 | 108 | mnuMainMain = TMainMenu.Create(Form1); | |
| 109 | 109 | ``` | |
| 110 | 110 | ||
| 111 | 111 | (Huomaa, että parent määrittäminen ei ole välttämätöntä, määrittämällä sovellus omistajaksi, ei ole haluttua vaikutusta) | |
| 112 | 112 | ||
| 113 | 113 | ## Katso myös | |
| 114 | 114 | ||
| 115 | 115 | - [[doc:lcl/menus/tmainmenu.html|TMainMenu doc]] | |
| 116 | 116 | - [[TPopupMenu]] | |
| 117 | 117 | - [[TActionList]] | |
| 118 | 118 | ||
| 119 | 119 | --- | |
| 120 | 120 | *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).* |
