Jednoduchá akcia, napríklad presun z jedného ovládacieho prvku na objekte na iný ovládací prvok, môže spustiť niekoľko rôznych udalostí, ktoré nastanú v určitom poradí. Je dôležité vedieť, kedy udalosti nastanú a v akom poradí, pretože to môže ovplyvniť, ako a kedy sa vaše makrá alebo udalostné procedúry spustia. Ak napríklad existujú dve udalostné procedúry, ktoré majú byť spustené v určitom poradí, chcete sa uistiť, že udalosti, ku ktorým sú priradené, nastanú v rovnakom poradí.
Obsah tohto článku
Poradie udalostí pre ovládacie prvky vo formulároch
Udalosti pre ovládacie prvky vo formulároch nastanú, keď premiestníte zameranie na ovládací prvok, a keď zmeníte a aktualizujete údaje v ovládacom prvku.
Poznámka: Microsoft Office Access zobrazuje názvy udalostí v editore jazyka Visual Basic trochu inak, než to robí v hárku vlastností a v Zostavovači makier. Udalosť s názvom On Got Focus v hárku vlastností formulára a v Zostavovači makier sa napríklad v editore jazyka Visual Basic volá GotFocus. V príkladoch v tomto článku je pre názvy udalostí použitý formát jazyka Visual Basic pre aplikácie (VBA).
Premiestnenie zamerania na ovládací prvok
Pri premiestnení zamerania na ovládací prvok vo formulári (napríklad otvorením formulára, ktorý obsahuje jeden alebo viac aktívnych ovládacích prvkov alebo premiestnením zamerania na iný ovládací prvok v tom istom formulári), nastanú udalosti Enter a GotFocus v tomto poradí:
Zadajte GotFocus
Ak otvoríte formulár, nastanú udalosti Enter a GotFocus po udalostiach spojených s otvorením formulára (napríklad Open, Activate a Current) v nasledujúcim poradí:
Otvoriť (formulár) Aktivovať (formulár) Aktuálny (formulár) Enter (ovládací prvok) GotFocus (ovládací prvok)
Pri presune zamerania preč z ovládacieho prvku vo formulári (napríklad pri zatvorení formulára, ktorý obsahuje jeden alebo viac aktívnych ovládacích prvkov alebo premiestnením na iný ovládací prvok v tom istom formulári), nastanú udalosti Exit a GotFocus v tomto poradí:
Ukončiť LostFocus
Pri zatvorení formulára nastanú udalosti Exit a LostFocus pred udalosťami súvisiacimi so zatvorením formulára (napríklad Unload, Deactivate a Close) v nasledujúcom poradí:
Exit (control) LostFocus (control) Unload (form) Deactivate (form) Close (form)
Zmena a aktualizácia údajov v ovládacom prvku
Ak zadáte alebo zmeníte údaje v ovládacom prvku vo formulári a potom premiestníte zameranie na iný ovládací prvok, nastanú udalosti BeforeUpdate a AfterUpdate:
BeforeUpdate Afte rUpdate
Udalosti Exit a LostFocus pre ovládací prvok so zmenenou hodnotou nastanú po udalostiach BeforeUpdate a AfterUpdate:
BeforeUpdate AfterUpdate Exit LostFocus
Ak zmeníte text v textovom poli alebo v časti textového poľa v rozbaľovacom poli, nastane udalosť Change. Táto udalosť nastane pri každej zmene obsahu ovládacieho prvku, ale pred premiestnením zamerania na iný ovládací prvok alebo záznam (a teda pred výskytom udalostí BeforeUpdate a AfterUpdate). Nasledujúca postupnosť udalostí sa vyskytne pri každom stlačení klávesu v textovom poli alebo v časti textového poľa v rozbaľovacom poli:
KeyDown KeyPress Dirty Zmeniť KeyUp
Udalosť NotInList nastane po tom, čo zadáte hodnotu v rozbaľovacom poli, ktorá nie je v zozname rozbaľovacieho poľa, a potom sa pokúsite presunúť zameranie na ďalší ovládací prvok alebo záznam. Udalosť NotInList nastane po udalostiach klávesnice a udalostiach Change v rozbaľovacom poli, ale pred udalosťami pre iný ovládací prvok alebo formulár. Ak je vlastnosť rozbaľovacieho poľa LimitToList nastavená na hodnotu Yes, udalosť formulára Error nastane hneď po udalosti NotInList:
KeyDown KeyPress Dirty Zmena KeyUp NotInList 0 chyba
Poradie udalostí pre záznamy vo formulároch
V prípade záznamov vo formulároch nastanú udalosti v situácii , keď premiestníte zameranie na iný záznam, aktualizujete údaje v zázname, odstránite existujúci záznam alebo záznamy prípadne vytvoríte nový záznam.
Presun zamerania na záznamy a aktualizácia údajov v záznamoch
Ak premiestníte zameranie na existujúci záznam vo formulári, zadáte alebo zmeníte údaje v tomto zázname, a potom premiestníte zameranie na ďalší záznam, pre formulári sa vygeneruje nasledujúca postupnosť udalostí :
Current (form) BeforeUpdate (form) AfterUpdate (form) Current (form)
Po opustení záznamu, ktorého údaje boli zmenené, ale pred zadaním ďalšieho záznamu, nastanú pre ovládací prvok, ktorý má zameranie, udalosti Exit a LostFocus. Tieto udalosti nastanú po udalostiach pre formulár BeforeUpdate a AfterUpdate v tomto poradí:
BeforeUpdate (formulár) AfterUpdate (form) Exit (control) LostFocus (control) Current (form)
Keď presúvate zameranie medzi ovládacími prvkami vo formulári, udalosti nastanú pre každý ovládací prvok. V prípade nasledujúcich akcií napríklad nastane nasledujúca postupnosť udalostí:
-
Otvorenie formulára a zmena údajov v ovládacom prvku:
Current (form) Enter (control) GotFocus (control) BeforeUpdate (control) AfterUpdate (control)
-
Prechod na iný ovládací prvok:
Exit (control1) LostFocus (control1) Enter (control2) GotFocus (control2)
-
Prechod na iný záznam:
BeforeUpdate (form) AfterUpdate (form) Exit (control2) LostFocus (control2) Current (form)
Odstránenie záznamov
Ak odstránite záznam, pre formulár sa vygenerujú nasledujúce udalosti a Microsoft Office Access zobrazí dialógové okno so žiadosťou o potvrdenie odstránenia:
Odstrániť BeforeDelConfirm AfterDelConfirm
Ak udalosť Delete zrušíte, udalosti BeforeDelConfirm a AfterDelConfirm nenastanú a dialógové okno sa nezobrazí.
Vytvorenie nového záznamu
Ak premiestníte zameranie na nový (prázdny) záznam vo formulári a potom vytvoríte nový záznam zadaním údajov do ovládacieho prvku, nastane nasledujúca postupnosť udalostí:
Current (form) Enter (control) GotFocus (control) BeforeInsert (form) AfterInsert (form)
Udalosť BeforeInsert (formulár) sa spustí hneď, ako začnete písať do ovládacieho prvku. Udalosť AfterInsert (formulár) sa spustí po opustení záznamu.
Udalosti BeforeUpdate a AfterUpdate pre ovládacie prvky vo formulári a pre nový záznam nastanú po udalosti BeforeInsert a pred udalosťou AfterInsert.
Poradie udalostí pre formuláre a podformuláre
V prípade formulára nastanú udalosti, keď otvoríte alebo zatvoríte formulár, premiestníte sa medzi formulármi alebo pracujete s údajmi vo formulári alebo podformulári.
Otvorenie a zatvorenie formulára
Pri otvorení formulára nastane pre formulár nasledujúca postupnosť udalostí:
Otvorenie položky Načítať Zmeniť veľkosť Aktivovať Aktuálne
Ak neexistujú žiadne aktívne ovládacie prvky vo formulári, udalosť GotFocus pre formulár nastane po výskyte udalosti Activate, ale pred udalosťou Current.
Pri zatvorení formulára pre formulár nastane nasledujúca postupnosť udalostí:
Uvoľniť deaktivovať zavrieť
Ak vo formulári nie je žiaden aktívny ovládací prvok, pre formulár sa vygeneruje udalosť LostFocus po udalosti Unload, ale pred udalosťou Deactivate.
Presun medzi formulármi
Pri prepínaní medzi dvoma otvorenými formulármi nastane udalosť Deactivate pre prvý formulár a udalosť Activate pre druhý formulár:
Deaktivovať (formulár1) aktivovať (formulár2)
Udalosť Deactivate nastane pri formulári aj pri prepnutí z formulára na inú kartu objektu v programe Access. Udalosť Deactivate však nenastane, ak sa prepnete do dialógového okna, do formulára, ktorého vlastnosť PopUp je nastavená na hodnotu Áno alebo do okna v inom programe.
Poznámka: Udalosť Open sa nevyskytne, ak premiestníte zameranie do formulára, ktorý je už otvorený, ani v prípade, že ste premiestnili zameranie do tohto formulára vykonaním akcie OpenForm.
Práca s údajmi vo formulári
V prípade formulára a ovládacích prvkov nastanú udalosti pri presúvaní medzi záznamami vo formulári a pri zmene údajov. Pri prvom otvorení formulára nastane napríklad nasledujúca postupnosť udalostí:
Open (form) Load (form) Resize (form) Activate (form) Current (form) Enter (control)0 GotFocus (control)
Podobne pri zatvorení formulára nastane nasledujúca postupnosť udalostí:
Exit (control) LostFocus (control) Unload (form) Deactivate (form) Close (form)
Ak ste zmenili údaje v ovládacom prvku, nastanú udalosti BeforeUpdate a AfterUpdate pre ovládací prvok aj formulár pred udalosťou Exit pre ovládací prvok.
Práca s podformulármi
Keď otvoríte formulár s podformulárom, podformulár a jeho záznamy sa načítajú pred načítaním hlavného formulára. Znamená to, že udalosti pre podformulár a jeho ovládacie prvky (ako napríklad Open, Current, Enter a GotFocus) nastanú skôr než udalosti pre formulár. Pre podformuláre sa však nevyskytuje udalosť Activate. Z tohto dôvodu otvorenie hlavného formulára spustí udalosť Activate len pre hlavný formulár.
Podobne pri zatvorení formulára, ktorý obsahuje podformulár, je podformulár so svojimi záznamami uvoľnený až hlavnom formulári. Pre podformuláre sa udalosť Deactivate nevyskytuje. Z tohto dôvodu zatvorenie hlavného formulára spustí udalosť Deactivate len pre hlavný formulár. Udalosti pre ovládacie prvky, formulár a podformulár sa vyskytujú v tomto poradí:
-
Udalosti pre ovládacie prvky podformulára (napríklad Exit a LostFocus)
-
Udalosti pre ovládacie prvky formulára (vrátane ovládacieho prvku podformulára)
-
Udalosti pre formulár (napríklad Deactivate a Close)
-
Udalosti pre podformulár
Poznámka: Vzhľadom na to, že udalosti pre podformulár sú generované po zatvorení hlavného formulára, určité udalosti sa neuskutočnia (napríklad zrušenie zatvárania hlavného formulára prostredníctvom udalosti z podformulára). Možno budete musieť presunúť tieto typy overovacích testov do udalostí hlavného formulára.
Poradie udalostí pre stlačenia klávesov a kliknutia myšou
V prípade formulárov a ovládacích prvkov nastávajú udalosti klávesnice počas stlačenia klávesov alebo odosielaní stlačenia klávesov, keď má formulár alebo ovládací prvok zameranie. V prípade formulárov, sekcií alebo v ovládacích prvkov nastávajú udalosti myši v prípade, že kliknete na tlačidlá myši v čase, keď je ukazovateľ myši vo formulári, časti formulára alebo ovládacom prvku. Udalosť myši sa vyskytne aj vtedy, keď premiestníte ukazovateľ myši nad formulár, sekciu alebo ovládací prvok.
Udalosti klávesnice
Ak stlačíte a uvoľníte kláves počas toho, keď ovládací prvok vo formulári má zameranie (alebo použijete akciu SendKeys alebo príkaz na odoslanie stlačenia klávesu), nastane nasledujúca postupnosť udalostí:
KeyDown KeyPress KeyUp
Keď stlačíte a uvoľníte kláves alebo odošlete stlačenie klávesu v tabuľka znakov ANSI, dôjde k udalostiam KeyDown, KeyPress a KeyUp . Ak stlačíte a podržte kláves ANSI, KeyDown a KeyPress udalosti striedajú opakovane (KeyDown, KeyPress, KeyDown, KeyPress, a tak ďalej), kým sa uvoľníte kľúč; potom nastane udalosť KeyUp .
Ak stlačíte a uvoľníte kláves, ktorý nie je klávesom ANSI, vyskytnú sa udalosti KeyDown a KeyUp . Ak stlačíte a podržíte kláves, ktorý nie je klávesom ANSI, udalosť KeyDown sa bude opakovať dovtedy, kým kláves nevydáte, a potom nastane udalosť KeyUp .
Ak sa stlačením tlačidla spustí pre ovládací prvok ďalšia udalosť, táto udalosť nastane po udalosti KeyPress, ale pred udalosťou KeyUp. Ak napríklad stlačenie klávesu zmení text v textovom poli, ktoré spúšťa udalosť Change, nastane nasledujúca postupnosť udalostí:
KeyDown KeyPress Zmeniť KeyUp
Ak stlačenie klávesu spôsobuje premiestnenie zamerania z jedného ovládacieho prvku na iný ovládací prvok, nastane pre prvý ovládací prvok udalosť KeyDown, zatiaľ čo pre druhý ovládací prvok nastanú udalosti KeyPress a KeyUp. Ak napríklad zmeníte údaje v ovládacom prvku a potom stlačením klávesu TAB sa presuniete na ďalší ovládací prvok, nastane táto postupnosť udalostí:
-
Prvý ovládací prvok:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
Druhý ovládací prvok:
Zadajte GotFocus KeyPress KeyUp
Udalosti myši
Keď kliknete a uvoľníte tlačidlo myši, keď je ukazovateľ myši na ovládacom prvku vo formulári, nastane pre ovládací prvok nasledujúca postupnosť udalostí:
MouseDown MouseUp Click
Ak ovládací prvok má zameranie a vy kliknete na iný ovládací prvok, aby ste premiestnili zameranie na tento druhý ovládací prvok, vyskytne sa táto postupnosť udalostí:
-
Prvý ovládací prvok:
Ukončiť LostFocus
-
Druhý ovládací prvok:
Zadajte GotFocus MouseDown MouseUp Click
Ak sa premiestníte na iný záznam a potom kliknete na ovládací prvok, pred udalosťou Enter pre ovládací prvok nastane aj udalosť Current pre formulár.
Dvojité kliknutie na ovládací prvok spôsobí výskyt udalostí Click a DblClick. Po dvojitom kliknutí na ovládací prvok iný než príkazové tlačidlo napríklad nastane nasledujúca postupnosť udalostí pre ovládací prvok:
MouseD vlastné MouseUp Click DblClick MouseUp
Po dvojitom kliknutí na príkazové tlačidlo nastane predchádzajúca postupnosť udalostí a za ňou nasleduje druhá udalosť Click.
Pre formulár, sekciu alebo ovládací prvok nastane udalosť MouseMove v prípade, že premiestníte ukazovateľ myši nad formulár, sekciu alebo ovládací prvok. Táto udalosť je nezávislá od iných udalostí myši.
Poradie udalostí pre zostavy a sekcie zostáv
Udalosti pre zostavy a sekcie zostáv sa vyskytnú v prípade, že otvoríte zostavu na tlač alebo zobrazíte jej ukážku alebo zostavu zavriete.
Udalosti pre zostavy
Keď otvoríte zostavy na tlač alebo zobrazíte jej ukážku a neskôr zostavu zavriete alebo ju premiestníte na ďalšiu kartu objektu v Accesse, pre zostavu nastane nasledujúca postupnosť udalostí :
Otvorenie aktivácie zavretie deaktivácia
Pri prepínaní medzi dvoma otvorenými zostavami nastane udalosť Deactivate pre prvú zostavu a udalosť Activate pre druhú zostavu:
Deaktivovať (zostava1) aktivovať (zostava2)
Udalosť Deactivate sa pre zostavu vyskytne aj pri prepínaní zo zostavy na inú kartu objektu v Accesse. Udalosť Deactivate však nenastane, ak sa prepnete do dialógového okna, do formulára, ktorého vlastnosť PopUp je nastavená na hodnotu Áno alebo do okna v inom programe.
Keď otvoríte zostavu, ktorá vychádza z dotazu, Access pred spustením príslušného dotazu spúšťa pre zostavu udalosť Open. Výsledkom je, že môžete nastaviť kritériá pre zostavu pomocou makra alebo udalostnej procedúry, ktorá bude zodpovedať udalosti Open. Makro alebo udalostná procedúra môžu napríklad otvoriť vlastné dialógové okno, v ktorom zadáte kritériá zostavy.
Udalosti pre sekcie zostavy
Pri tlači alebo zobrazení ukážky zostavy nastanú pre sekcie zostavy udalosti Format a Print po udalostiach Open a Activate pre zostavu a pred udalosťami Close alebo Deactivate pre zostavu:
Otvorenie (zostava) Aktivácia (zostava) vo formáte (sekcia zostavy) tlači (sekcia zostavy) zavretie (zostava) deaktivácia (zostava )
Zabezpečenie Zobrazenie zostavy môžete použiť na povolenie filtrovania zostáv používateľmi. Na rozdiel od ukážky pred tlačou sa však udalosti Formát a Tlač v žiadnej časti v zobrazení zostavy nevyskytnú. To platí aj pre výsledky funkcie VBA a používateľom definované postupy, ktoré sa zobrazujú v ovládacích prvkoch (napríklad popisy označení, stav zobrazenia, podmienené formátovanie, zmena veľkosti ovládacích prvkov atď.) v rámci týchto udalostí. Preto nepoužívajte kód v tejto udalosti na formátovanie, skrytie alebo tlač dôverných údajov, ktoré sa môžu zobraziť. Odporúčame vopred filtrovať údaje alebo vypnúť ukážku zostavy nastavením vlastnosti AllowReportView na hodnotu Nie.
Okrem toho počas formátovania alebo po formátovaní môžu vyskytnúť nasledujúce udalosti (ale vždy pred udalosťou Print):
-
Udalosť Retreat nastane v prípade, že Access počas formátovania zostavy prejde naspäť do predchádzajúcej sekcie.
-
Udalosť NoData nastane v prípade, že zostava nezobrazuje žiadne záznamy.
-
Udalosť Page nastane po formátovaní, ale pred tlačou. Túto udalosť môžete použiť na prispôsobenie vzhľadu vytlačenej zostavy.