TMainMenu/fi

From Free Pascal wiki

Deutsch (de) English (en) suomi (fi) français (fr) русский (ru)


TMainMenu tmainmenu.png on ei-visuaalinen komponentti komponenttinpaletin Standard-välilehdeltä, joka muodostaa lomakkeen päävalikon.

Kuvaus

Päävalikko esiintyy lomakkeen yläosassa josta käyttäjä voi valita valikon eri vaihtoehdoista.


Valikkomuokkaimen saa esille klikkaamalla oikealla näppäimellä TMainMenu:n kuvaketta lomakkeella.

Yleinen käytäntö

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.


Valikkojen luominen

  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.
  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.
  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.
  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.
  5. Komponenttimuokkaimeessa vaihdetaan Name ominaisuus johonkin sopivammaksi. Aika usein tämä on Tiedosto-valikko, joten vaihdetaan nimi kirjoittamalla mnuFile ja painamalla Enter.
  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.

Tässä vaiheessa voidaan luodaan lisää ylätason valikoita.

  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 .
  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.
  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) .
  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.
  5. Muuta kohteen kohteen ominaisuutta komponenttimuokkaajalla niin että sen Name ominaisuus on mnuEdit ja Caption ominaisuus on &Edit (Muokkaa).
  6. Sovella edellä mainittuja toimintoja tarvittavan valikon ja alavalikon mukaisesti.

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ä 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.

Laitetaan valikko tekemään jotakin

  1. Palaa takaisin valikkomuokkain ikkunaan. Valitaan File valikon alikohtaa Open. Siirrytään komponenttimuokkaimen "Tapahtumat"-välilehdelle.

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ä:

  1. procedure TfrmMain.mnuFileOpenClick(Sender: TObject);
    begin

    end;
  2. 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.
  3. Edellä mainitun toistamisella voidaan aloittaa lisävalikoiden ja alivalikoiden luominen. Luoda käsittelijät jokaisen valikkovaihtoehdon mukaan tarpeen mukaan.

Valintaruutu valikkoon

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:

  1. Siirry valikkomuokkaimeen kohtaan Edit
  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

näppäinyhdistelmää ALT+r. Siksi tässä kohdassa on & merkki ennen kirjainta r).

  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).
  2. Valitaan Tapahtumat välilehti, Valitaan OnClick ominaisuus ja klikataan (..) painiketta.
  3. Lazarus vaihtaa auki lähdekoodieditorin ja luo Click tapahtuman rungon tälle valikon kohdalle.
  4. Varattujen sanojen begin ja end väliin kirjoitetaan seuraavanlainen teksti:
    mnuEditPreserve.checked := not mnuEditPreserve.checked ;
  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.

Erottimet

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 viiva (-) merkin.

Näppäinoikotiet

Jos halutaan määrittää valikon tiettyyn näppäinyhdistelmään niin toimitaan seuraavasti:

  • Valitaan valikkomuokkaimessa valikon kohta mihin pitäisi liittää näppäinoikotie.
  • Mennään komponenttimuokkaimeen ja asetetaan arvo ominaisuuteen ShortCut klikkaamalla [...]-painiketta.
  • Se näyttää ikkunan, jossa voidaan asettaa haluttu näppäinyhdistelmä.
  • Ohjelman ajon aikana käytettäessä tätä näppäinoikotietä, tapahtuu sama kuin olisi klikannut kyseistä valikon kohtaa.

Kuva valikon edessä

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:

  • Lisää TImageList 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.
  • Klikataan hiiren kakkospainikkeella ImageList1-komponenttia lomakkeella niin voidaan avata ImageList muokkain.
  • Lisätään kaikki valokuvat, yksi toistensa jälkeen, mitä tarvitaan valikkoihin, ImageListiin. Klikataan vain painiketta Lisää ja valitaan sopiva kuva.
  • Kun on lisätty kaikki tarvittavat kuvat ImageListiin niin vahvistetaan valinta valitsemalla [OK] -painike ja ImageList muokkain on sulkeutuu.
  • Tämän jälkeen on valittava MainMenu ja asetettava komponenttimuokkaimessa Imagesominaisuuteen kyseinen ImageList. Valitsemalla vain ImageList1 kyseisen kohdan yhdistelmäruudussa.
  • Avataan valikonmuokkain uudelleen ja valitaan valikon kohta, johon halutaan saada kuva.
  • Menemällä komponenttimuokkaimessa valikon ImageIndex-ominaisuuteen jossa voidaan valita kyseisessä kohdassa näytettävä kuva.
  • Valitse seuraava valikon kohta ja valitse sille kuva jne.

Vihje: alivalikon kohdat vasemmalle (Windows Vista, 7 and 10)

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.

Tämä voidaan tarkistaa seuraavasti:

  • Paina Window-painiketta + R.
  • Liitä: shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E} ja paina Enter.
  • Mene avautuvan ikkunan välilehdelle Other.
  • Oletusarvona pitäisi olla Left-handed jotta valikot näkyvät oikealla, muuten ne näkyvät vasemmalla.
  • Huomaa: Alavalikon nuoli näkyy edelleen valikon oikealla puolella, riippumatta siitä, mikä tämä asetus on.

Ajonaikainen luonti

Ajonaikainen luonnissa TMainMenu pitäisi owner:ksi laittaa kyseinenlomake.

  mnuMainMain = TMainMenu.Create(Form1);

(Huomaa, että parent määrittäminen ei ole välttämätöntä, määrittämällä sovellus omistajaksi, ei ole haluttua vaikutusta)

Katso myös


LCL Components
Component Tab Components
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog • TTaskDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TBufDataset • TMemDataset • TSdfDataSet • TFixedFormatDataSet • TDbf
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHttpDataProvider • TIpHtmlPanel