Živě.cz o počítačích a internetu

Tipy a triky v Delphi, díl 147. - menu v novém stylu

Jan Šindelář 14.7.2004

Dnešním tématem bude tvorba menu v novějších verzích Delphi. Bez externích komponent nyní získáme nejen modernější (Office XP) vzhled, ale i samotný návrh menu bude mnohem efektivnější.

Než se pustíme do samotného postupu, je třeba zdůraznit, že budeme potřebovat minimálně Delphi 7. Na záložce Additional zde najdeme komponenty ActionManager a ActionMainMenuBar, s jejichž pomocí bude menu vytvořeno.

Vzhled ve stylu XP nijak nesouvisí s komponentou XPManifest (kterou najdeme na záložce Win32), protože tato komponenta pouze přidává příslušný XML soubor do zdrojů aplikace (stejně jako jsme si kdysi ukazovali ručně) pro aktivování podpory vizuálních stylů Windows XP, kdežto použité komponenty se starají přímo o zobrazení menu. Proto bude toto vizuální vylepšení zachováno i ve starších verzích Windows řady 9x.

Nyní již tedy k samotnému postupu. Vytvoříme novou prázdnou aplikaci a na formulář umístíme již zmiňovanou komponentu ActionManager ze záložky Additional. Právě ve vlastnostech této komponenty pak můžeme zapnout či vypnout styl XP. Nic víc nás nebude u této komponenty pro tuhle chvíli zajímat.

Druhá klíčová komponenta je pak ActionMainMenuBar. Umístíme jí na formulář a první věc, kterou musíme udělat, je to, že jí "napojíme" na již existující ActionManager právě přes vlastnost ActionManager, kterou najdeme v Object Inspectoru hned na prvním místě.

Teď přichází na řadu opět ActionManager. O této komponentě by se dalo napsat skoro několik samostatných článků a možná se k ní v budoucnu vrátíme podrobněji, ale pro tento okamžik nám bude stačit zjednodušené vysvětlení pro ty, kteří netuší oč se jedná. Velmi zevrubně se tedy dá říci, že ActionManager je chytrá komponenta, která obsahuje definovanou množinu "akcí" (což není nic jiného než jednotlivé funkce, kusy zdrojových kódů), které jsou roztříděny do skupin podle svého zaměření a jsou pak velmi snadno dostupné (rozuměj spustitelné) přes vlastnost Action u jednotlivých dalších komponent (např. tlačítek). Jednotlivé kategorie a příslušné akce si můžeme jednak vytvořit sami (hned si ukážeme jak), ale zároveň existuje celá řada standardních a již předem připravených akcí, mezi kterými si můžeme vybrat. Mimo jiné mezi ně patří i nejobvyklejší položky v menu (otevření souboru, uložení, tisk, práce se schránkou atd..), takže si ukážeme, jak je použít.

Dvojklikem na komponentu ActionManager se nám otevře okno se třemi záložkami, kde nás bude zajímat pouze záložka Actions (měla by být již zvolena). Seznam Categories je zatím prázdný a tím pádem nejsou dostupné ani žádné příslušné akce v seznamu Actions. Právě nad tímto seznamem najdeme žlutou ikonku s rozbalovací šipkou pro přidání akce. Klikneme na šipku a z nabídky vybereme volbu New Standard Action. Tím se nám zobrazí okno se stromem standardních připravených akcí. Označíme kategorii File včetně všech (nebo jen některých) jejích dostupných akcí a potvrdíme. Nyní již v okně ActionManageru vidíme kategorii File a příslušné akce, které jsme si zvolili v předchozím kroku. Zbývá nám poslední věc a sice jak dostat tyto položky do menu. To provedeme velmi snadno. Myší uchopíme celou kategorii File a metodou drag & drop ji umístíme do hlavního menu na formuláři. Ihned se nám vytvoří položka File se zvolenými akcemi. Z okna ActionManageru můžete pochopitelně přenášet i jednotlivé akce samostatně a umístit je libovolně do struktury menu.

Po spuštění aplikace pak vidíte, že už menu krásně funguje, nemusíte ručně přidávat prakticky ani řádek kódu. Jistá potíž je v tom, že položky jsou anglicky, ale pochopitelně můžete všechny libovolně přejmenovat. Zbývá nám poslední věc, totiž naučit se přidat vlastní kategorii a akce. Opět klikneme na šipku u žluté ikonky a tentokrát zvolíme New Action. Ihned se nám do seznamu vloží nová položka s názvem Action1. Tu můžeme hned pomocí Object Inspectoru přejmenovat a dvojklikem pak přejít do editoru a doplnit zdrojový kód akce. Tato nová akce bude umístěna do té kategorie, která byla vybrána v okamžiku klikání na žlutou ikonku. V případě, že nebyla zvolena žádná kategorie, stačí opět v Object Inspectoru vložit do příslušné vlastnosti nový název a ihned se objeví v okně ActionManageru.

Vytváření vnořených menu je rovněž velmi snadné. Vnořenou větev si připravíme jako samostatnou kategorii v okně ActionManageru. Celou tuto kategorii pak myší přeneseme na příslušnou pozici v menu a ihned bude vytvořeno vnořené menu.

Tímto způsobem tedy můžeme velmi efektivně vytvářet menu, pochopitelně lze přidat i ikonky k jednotlivým položkám, klávesové zkratky atd.., takže menu pak vypadá opravdu tak jak má.