ActionList aneb jak si ušetřit práci

vložil Radek Červinka 21. června 2010 21:38

Sem tam se ke mně dostane na posouzení nějaký kód a v mnoha případech jsem překvapen, proč si autor trochu neusnadní práci. Konkrétně třeba za pomocí komponenty ActionList.

Tato komponenta byla přidána v Delphi 5 (pokud se nepletu - resp. tam už určitě existuje) a jejím cílem bylo usnadnit obsluhu stejné akce z více míst. Určitě mi rozumíte: máte např. v programu otevřít soubor, jenže jednou je to z hlavního menu, podruhé z toolbaru, potřetí z popup menu a čert ví kde ještě.

Jasně, člověk může mít pro všechny možnosti společnou obsluhu, ale to je jen poloviční řešení problému. Důležité je třeba zakazování komponent, konsistentní popisky nebo hinty, a o ikonách ani nemluvě. Člověk aby si na všechno myslel. A přitom se to dá hodně z toho relativně jednoduše řešit za pomocí komponenty ActionList.

ActionList

ActionList ve starších Delphi

Editor se spustí poklepáním na ikonu ActionListu. ActionList je v podstatě seznam akcí (následník TAction - např. otevření souboru, spuštění tisku, atd.). U každé akce se dají definovat vlastnosti, které jsou následně přebrány komponentou, která akci bude používat (např. Caption, IconIndex, Hint, Checked …).

TAction

Definice akce

Dále je zde několik událostí z nichž klíčová je OnExecute, což je událost, která bude zavolána při spuštění akce (kliknutí na tlačítko, vybrání položky menu atd.).

  • Vždy definujte tuto událost a ne událost na komponentě, která akci používá. V opačném případě by totiž u ostatních komponent používajících tuto akci nedošlo k zavolání - bylo by to jen např. pro to menu.
  • pokud nebude akce mít tuto obsluhu, bude Disabled - upozorňuji na to rovnou

Pokud nastavíte akci Visible nebo Enabled, resp. jakoukoliv vlastnost, promítne se změna do všech komponent používajících tuto akci. Tj. pokud chcete zakázat všude otevření souboru tak jednoduše zakážete příslušnou akci, žádné chuchvalce kódu s Enabled := False, prostě jen jeden řádek.

Kromě jiného i ActionList má určité události, např. OnUpdate - je vyvolána v případě kdy je třeba aktualizovat stav komponent (tj. celkem často), zvažte zda to obsloužíte, nebo budete povolovat stav manuálně.

Na prvním obrázku lze vidět kategorie. Jedná se čistě o nevizuální začlenění vašich akcí do kategorií. Slouží to jen Vám (pokud se nepletu). Kategorie definujete tak, že u libovolné TAction napíšete (později vyberete ze seznamu) property Category - viz. druhý obrázek - a IDE hned přesune akci do kategorie (pokud neexistuje, tak ji vytvoří).

Pokud máme nyní vytvořen seznam akcí (samozřejmě ho můžeme doplňovat), přistoupíme k napojení na komponenty. Např. otevřeme editor menu a jen vybereme položku a nastavíme u ní příslušnou akci. Nic víc, resp. maximálně budeme muset vybrat jméno nové komponenty pokud nepoužíváme CnWizards, který by nám ho inteligentně předgeneroval.

Malá odbočka: pokud si zvolím pro akci prefix např. actXXXX, pro tlačítko btnXXX, položky menu např. miXXX, tak mi CnWizards automaticky např. pro akci actFileOpen vygeneruje btnFileOpen nebo miFileOpen a mám v tom pořádek, ale je to každého osobní věc.

TAction na položce menu

Propojení např. s položkou menu

Vybráním akce se vyplní položky, které jsou společné, včetně obsluhy pro spuštění. Pokud např. ale chceme mít jinou ikonu (např. v toolbaru), můžeme nyní změnit IconIndex a změna bude jen pro ikonu v toolbaru (dokud neprovedeme změnu původní akce, ta pak přerazí námi definované změny). Ještě jednou upozorním, že propojení mezi akcí a komponentou je dynamické - tj. veškeré změny v akci se promítnou do komponenty (např. změna Caption nebo uvedeného indexu ikony).

Kromě Vámi definovaných akcí jsou k dispozici tzn. standardní akce. Vkládají se v editoru přes první ikonu v toolbaru (resp. rozbalením jejího tlačítka).

Tagy: , , ,

Začátečníci

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců