Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 6 - Menu, seznamy obrázků a poznámky

Vítej, programátore! Už toho určitě hodně umíš (z předchozích lekcí) a tak se pustíme do hlavní věci v programu! A to je MENU. Nejprve však probereme jednu věcičku, která s tím souvisí! A tak v položce Win32 (třetí odleva) najděte
IMAGELIST.

Imagelist

Zde si uložíte obrázky, které jdou pak jinde použít. Tak se podívejme do Object Inspectoru na dvě důležité věci:

  • Height - tentokrát neznačí výšku objektu, ale obrázků v seznamu
  • Width - stejně jako u Height - značí tentokrát šířku obrázků

Pokud chcete přidat obrázek, klikněte dvojitě na ikonku ImageListu a v novém okně můžete přemísťovat obrázky, přidávat nové (Add), přepisovat je jinými (Replace), mazat (Delete), ukládat na disk (Export), všechny smazat (Clear), měnit průhlednou barvu (uprostřed nahoře) a měnit zarovnání obrázku (Crop-obrázek se prostě ořízne do zadaného rozměru; Stretch-obrázek se smrskne, nebo roztáhne, aby byl akorát na zadaný rozměr; Center-vyřízne se střed obrázku v zadaných rozměrech). A teď si ukážeme jeden ze způsobů, jak ImageList použít:

Mainmenu

Uděláme si slibované menu! V položce Standart hned druhé zleva je MAINMENU neboli hlavní menu. Prostě ta lišta nahoře, kde je Soubor (nebo File), Úpravy (nebo Edit) atd. Takže se podívejme do Object Inspectoru na 2 speciality:

  • Images - zde si vyberete ImageList, ze kterého se budou používat obrázky do menu (nejlepší je rozměr 16x16)
  • Items - a zde si zvolíte položky menu. Vyvolá se také dvojklikem na ikonku menu!

Viz. níže:

Po dvojitém kliknutí na Items, nebo na ikonku MainMenu se vám otevřelo okno se jménem menu. Ze začátku by mělo být prázdné! Jen v levém horním rohu by měl být přerušovanou čarou udělaný rámeček! A na něj klikněte!

"Fíha, vono se v tom vokně vlevo votevřel nějakej objekt beze jména typu TMenuItem! Co s tím?" Ano, to je správné! Nejprve pojmenujte položku menu! Můžete sice pouze vyplnit Caption a program si vytvoří název sám, ale ne každému se líbí tlačítko s nápisem Ukončit, které se jmenuje Ukonit1. Vám ano? Potom si ušetřete pojmenovávání položek v menu! Uloitvytvoennpi­syaobrzky1 - já vás varoval! (Caption='Uložit vytvořené nápisy a obrázky') :-D No, ale pojďme dál! Jaké další zvláštní položky nás čekají?

  • AutoCheck - Pokud chcete, aby po kliknutí na položku se u ní objevil znak pro označování, zvolte True!
  • Bitmap - Můžete si načíst z disku obrázek, který bude nalevo od nápisu položky! Nejlépe v rozměrech 16x16!
  • GroupIndex - Zde určíte číslo skupiny zaškrtávacích tlačítek. Pokud ale nemáte RadioItem (viz.níže) jako True, není třeba se o tuto položku starat!
  • ImageIndex - A je to tady! Konečně se bude hodit znát ImageList. Zde totiž zadáte číslo, které je v předem zvoleném ImageListu pod obrázkem, který chcete nalevo od textu položky.
  • RadioItem - Pokud zadáte True, ve skupině tlačítek půjde zaškrtnou pouze jedno (znaménko zaškrtnutí se změní na kolečko!).
  • ShortCut - Vyberete si klávesovou zkratku, která se má přiřadit položce v menu. Stačí tedy stisknout např. pouze Ctrl + A a nemusíte v hledat položku v menu! Navíc se zkratka objeví napravo na položce!
  • SubMenuImages - Pokud znáte položku v menu, která má má vpravo takovou šipečku a když na ní kliknete, objeví se další menu po straně již otevřeného, musím vám říct, že v Delphi to samozřejmě jde udělat také! Klikněte v okně pro editaci menu na vámi určenou položku pravým tlačítkem a vyberte položku Create Submenu! Tím vám vznikne ono vedlejší menu zvané SubMenu... Vraťme se ale k SUBMENUIMAGES! Zde nastavíte, který ImageList bude používat SubMenu navazující na vybranou položku! Stačí? To jsem rád! :)

Nakonec vám ještě chci říct, jak vytvořit oddělovací čáru: Jednoduše! Místo textu napište do položky Caption jednu pomlčku (neboli minus) a program si oddělovací čáru vyrobí sám! A pokud chcete, aby bylo nějaké písmeno textu podtržené, napište před něj znak &. Podtržené písmeno bude funkovat podobně, jako klávesová zkratka. ... A teď pojďme dál:

PopupMenu

Naučím vás dělat i takovéto menu, které se otevře pravým kliknutím. Hned vedle MainMenu naleznete POPUPMENU Na co tohle okno je, už víte, tak se pusťme do speciality v Object Inspectoru:

  • Aligment - Kde se má objevit menu, když kliknete? Napravo od místa, kam kliknete (paLeft), pod místo, kam kliknete (paCenter), nebo nalevo (paRight)?

A ostatní je stejné, jako u MainMenu!

Ještě by ale chtělo říct, že pokud někde chcete PopupMenu, musíte ho přiřadit nějakému objektu, který má položku PopupMenu. Stejně tak i u Main, menu, ale to si okno přiřadí samo! :) A to je z menu vše!

Nezajímá vás ten divný objekt nalevo od MainMenu? Z položky Standart už znáte skoro vše vlevo, akorát tohle vám to ruší! Tak dobře! Povím vám o tom! Ale bude to vyžadovat další znalosti:

Frames (rámy)

Napadlo vás někdy vložit okno do okna? Mne ne a jestli to napadlo vás, asi se zcvoknu, protože jsem vám ani neřekl, jak udělat další okno! Nebo ANO? NE! Řeknu vám to za chvíli. Ale ten nápad lze uskutečnit pomocí tohoto objektu! Kliknete někam a z nabídky si vyberete, které okno chcete vložit! Objekt má potom stejné vlastnosti jako ono okno! Kromě pozice a názvu!

Ale teď k tvorbě více oken:

Takže! Pokud chcete vytvořit nové okno, vyberte položku New v menu (File) a v SubMenu (doufám, že víte, co toje!) vyberte položku Form! A je to. Teď už postupujte, jako když vytváříte nový Project. Prostě přejmenujte okno atd... Ale takhle bych vám nepomohl! Dále potřebujete nějak seřadit okna! A tak probereme důležitou položku v menu! Nejprve vyberte Project a úplně dole naleznete položku Options! Zde máte spoustu částí nastavení a tak začněme tou, díky které vám to vysvětluji: Forms.

V této části je důležitá akorát volba okna, které se otevře při spuštění programu (Main form)! A jdeme dál: Application

Velmi důležité! Takže: Title - zde napíšete název programu (i s háčky a čárkami). Pak už je jen důležitá položka Icon - po kliknutí na ní vyberete, jaká ikona bude u programu! Tato ikona bude u EXE souboru a na hlavním panelu ve windows (když spustíte program) společně s názvem programu!!! Ikona? Ptáte se! Ano, odpovídám! ... Dost! Prostě vám chci říct, že ikonky, které máte ve Windows může mít i váš program! K oknu už ikonku dát umíte, ale k EXE souboru? ... Teď už ano! Ale kde je brát? No, buď na internetu a nebo si je sami vyrobit! JAK?? V Delphi, přece!

Teď si řekneme, jak pracovat s více okny! Sice jen 3 základní příkazy, ale co jiného? :-)

Takže tady jsou:

  • Close - To už určitě znáte (URČITĚ - na 100%, protože jestli ne, tak neprogramujte. To je základní příkaz!). Pokud ale nechcete zavřít okno, do jehož textu příkaz dáváte, musíte napsat příkaz ve tvaru: NazevOkna.Close; Nazev okna samozřejmě nahradíte názvem okna, které chcete zavřít! Např.: Form2.Close;
  • Show To je to nejhlavnější! Chcete otevřít nějaké okno? Pak napište: NazevOkna.Show; Nazev okna samozřejmě nahradíte názvem okna, které chcete otevřít! Např.: Form2.Show; A Form2 se objeví. Kdykoli můžete překliknout na jiné okno v programu, nebo nějaké zavřít! POZOR!!! Pokud zavřete HLAVNÍ OKNO, zavřete celý program!!!
  • ShowModal - Skoro to samé, jako Show: NazevOkna.Show­Modal; Takže např.: Form2.ShowModal; A Form2 se objeví, ale dokud ho nezavřete, nesmíte k ostatním oknům programu! Tak např. fungují okna s chybovými hláškami! Dokud nekliknete třeba na OK, nemůžete dál pracovat!

A to je vše! Teď si řekneme, jak vyrábět OBRÁZKY!

Obrázky

V menu Delphi najděte položku Tools. Když jí rozbalíte, úplně dole je položka Image editor.

Nástrojová lišta Image Editoru s popisky

Kdo umí anglicky, už zjistil, že Image Editor znamená Obrázkový Editor, a že se tam asi budou vytvářet nějaké obrázky. A uhádl! Image Editor je podprogram Delphi. Nemusíte ho spouštět přímo z Delphi, ale klidně i z Windows (stačí ho nalézt ve složce s Delphi). Když ho tedy spustíte, otevře se okno velmi podobné Malování ve Windows. Akorát je vše anglicky a lze zde vytvářet víc věcí pro Delphi. V položce Files a v Submenu z New se vám zatím bude hodit akorát Bitmap, Icon a Cursor File.

Chcete-li vytvořit jakýkoli obrázek, klikněte na Bitmap File. Otevře se vám okno. Zde si zvolíte šířku (width), výšku a počet použitelných barev (vpravo). Po stisknutí OK můžete vesele začít vytvářet. Pokud ale chcete vyrobit ikonu například pro svůj program, klikněte na Icon File! Také se vám otevře okno! Tentokrát si vlevo vyberete, zda chcete vytvářet malou (small icon), nebo velkou ikonu (standart icon) a vpravo opět počet barev.

Po stisknutí OK už nebude editor stejný! Ve výběru barev budou navíc dvě barvy (viz. obr. vpravo)! Když někam umístíte horní barvu, na onom místě bude vždy opačná barva, než je pozadí. Dolní barva je naopak průhledná! A to se u ikon hodí! Dále je zde také navíc tlačítko New... a výběr mezi dalšími typy ikony. Když kliknete na New, do souboru ikony se přidá ještě jedna ikona, který si zvolíte v otevřeném okně. Můžete tedy mít třeba soubor Ikona.ico, v němž budou třeba 4 obrázky... A ještě byla řeč o Cursor File! Tentokrát se vám okno neotevře! Akorát si prostě můžete nakreslit svůj soubor kurzoru myši. Barvy jsou jen čtyři: bílá, černá, průhledná a neprůhledná (viz. Icon File). Takže hybaj do kreslení ikonek pro svou hru (nebo samozřejmě program)!

Ano, máte pravdu! Prve jsem říkal, že odleva máme skoro celou položku Standart, ale chybí ještě:

Memo (poznámka)

  • MEMO - Ten rámeček s linkami (jakoby textem)! Zde prostě editujete text s více řádky! Určitě vám to chybělo, že? Tak, jaké máme speciální vlastnosti?:
  • Color - Opakuji se, ale musím (nebo spíš mi to připadá vhodné) uvést, že to znamená barvu pozadí...
  • Lines - Klikněte 2x na tuto položku a otevře se vám okno, kde editujete text, který bude v Memu!
  • Text - Tato položka sice není v Object Inspectoru, ale je důležitá! Je to totiž nápis, který je v Memu. Narozdíl od Lines je Text proměnná string!
  • ReadOnly - Pokud zadáte True, nepůjde do Mema zapisovat! Pouze číst a kopírovat!
  • ScrollBar - Zde si určíte posuvníky:
    • ssBoth - Memo bude mít posuvník vpravo i dole
    • ssHorizontal - Memo bude mít posuvník jenom dole (řádky se nebudou automaticky zalamovat!)
    • ssNone - Memo nebude mít žádné posuvníky
    • ssVertical - Memo bude mít posuvník jenom vpravo
  • WantReturns - Pokud zadáte False, bude Memo ignorovat stisknutí klávesy Enter
  • WantTabs - Pokud zadáte False, bude Memo ignorovat stisknutí klávesy Tab
  • WordWrap - Zadáte-li False, řádky se nebudou automaticky zalamovat

Stačí? To jsem rád...

Program

A nakonec už jenom uvedu nějaký program na zopakování! TAKŽE: Je to skoro až nesmysl, ale po dnešním specializovaném díle nic jiného ani sesmolit nejde! Nejprve si vytvoříme tři okna (včetně původního). Okno1, Okno2 a Okno3! Do Okna1 vložíme MainMenu. Na něj dvakrát klikneme a uděláme dvě hlavní položky (buňky): Program (bude vlevo) a Okna (bude vpravo). Pod Program vložíme položky Editovat a Konec. Pod Okna vložíme položky Normální a Chybové. Do Okna2 vložíme PopupMenu s položkami Zavřít okno a Zavřít program. Nezapomeňte Oknu2 přiřadit to PopupMenu! A do Okna3 vložte FRAMES. Jako okno vyberteOkno2! A teď se pusťme do psaní! Nejprve ale do Okna1 vložte Memo (název Zapisnik a ReadOnly je True) a u položky Editovat nastavte AutoCheck na True! Posléze na ní klikněte a pište:

if ReadOnly then
  Zapisnik.ReadOnly := False
else
  Zapisnik.ReadOnly := True;

A je to! Teď položku Konec. To snad víte! Ano: Close;
Následuje položka Normální: Okno2.Show;
Dále máme už jenom položku Chybové: Okno3.ShowModal;

A můžeme postoupit do položek v PopupMenu v Okně2! Takže: Zavřít okno: Close;
A pak už jenom Zavřít program: Okno1.Close;

Vidíte, a program je hotov! :-) Pokud jste nepochopili, jak program funguje, buď si to zjistěte z horního textu, nebo mi někam napište! A pokud jste to pochopili, jsem rád, že už se v Delphi tak vyznáte...

...Kukensius

Delphi

 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 462x (213.65 kB)
Aplikace je včetně zdrojových kódů v jazyce Delphi

 

Předchozí článek
Hudba, zvuk a video, hlášky a vlastní mediaplyer
Všechny články v sekci
Delphi
Přeskočit článek
(nedoporučujeme)
Dialogy, práce se soubory a kalendář
Článek pro vás napsal Kukensius
Avatar
Uživatelské hodnocení:
5 hlasů
Jméno: Lukáš Kučera alias Kukensius<br/> Narození: říjen 1987 (ve znamení vah)<br/> Bydliště: Jihlava, Česká Republika<br/> Studium: 1. ročník magisterského studia<br/> Škola: Vysoké učení technické v Brně<br/> Fakulta: Fakulta elektrotechniky ...
Aktivity