Egyetlen művelet, például egy objektum egyik vezérlőjének áthelyezése egy másik vezérlőre, több különböző eseményt is kiválthat, amelyek egy adott sorrendben következnek be. Fontos tudni, hogy mikor és milyen sorrendben következnek be események, mert ez befolyásolhatja a makrók vagy az eseményeljárások futását. Ha például két eseményeljárást kell egy bizonyos sorrendben futtatni, győződjön meg arról, hogy a hozzájuk társított események ugyanabban a sorrendben történnek.
Tartalom
- Az űrlapokon lévő vezérlőkön bekövetkező események sorrendje
- Az űrlapokon szereplő rekordokon bekövetkező események sorrendje
- Az űrlapokon és a segédűrlapokon bekövetkező események sorrendje
- A billentyűleütés és az egérrel való kattintás hatására bekövetkező események sorrendje
- A jelentésekhez és a jelentések szakaszaihoz kapcsolódó események sorrendje
Az űrlapokon lévő vezérlőkön bekövetkező események sorrendje
Az űrlapokon lévő vezérlők eseményei akkor fordulnak elő, amikor a fókuszt egy vezérlőre helyezi, illetve amikor módosítja és frissíti egy vezérlő adatait.
Megjegyzés
A Microsoft Office Access nem ugyanúgy jeleníti meg az események nevét a Visual Basic Editorban, mint a tulajdonságlapon és a Makrószerkesztőben. Az űrlap tulajdonságlapján és a Makrószerkesztőben szereplő Fókusz vételekor eseménynek a Visual Basic Editorban GotFocus a neve. A cikkben szereplő példákban az események nevének VBA (Visual Basic for Applications) formátumú nevét használjuk.
A fókusz áthelyezése egy vezérlőre
Amikor a fókusz egy űrlap valamelyik vezérlőjére kerül (például egy olyan űrlap megnyitásakor, amely egy vagy több aktív vezérlőt tartalmaz, vagy a fókusznak az űrlap egy másik vezérlőjére való átvitelével), az Enter és a GotFocus esemény következik be, az alábbi sorrendben:
Enter arrow
GotFocus
Ha megnyit egy űrlapot, az Enter és a GotFocus esemény az űrlap megnyitásával kapcsolatos események (az Open, az Activate és a Current) után következik be, az alábbi sorrendben:
Open (űrlap)
Activate (form)
Current (form)
Enter (control)
GotFocus (control)
Amikor a fókusz elhagyja egy űrlap valamelyik vezérlőjét (például egy olyan űrlap bezárásakor, amely egy vagy több aktív vezérlőt tartalmaz, vagy a fókusznak az űrlap egy másik vezérlőjére való átvitelével), az Exit és a LostFocus esemény következik be, az alábbi sorrendben:
Kilépés aLostFocus
Az űrlapok bezárásakor az Exit és a LostFocus eseményre az űrlap bezárásához kapcsolódó események (az Unload, a Deactivate és a Close) előtt kerül sor, az alábbi sorrendben:
Kilépés (vezérlő)
LostFocus (vezérlő)
Eltávolítás (űrlap)
Inaktiválás (űrlap)
Bezárás (űrlap)
A vezérlőkben szereplő adatok módosítása és frissítése
Ha adatokat ír be egy űrlapon szereplő vezérlőelembe, vagy módosítja a benne szereplő adatokat, majd egy másik vezérlőre viszi a fókuszt, a BeforeUpdate és az AfterUpdate eseményre kerül sor:
BeforeUpdate
AfterUpdate
A módosult értékű vezérlőelem Exit és LostFocus eseményére a BeforeUpdate és az AfterUpdate esemény után kerül sor:
BeforeUpdate
AfterUpdate
Exit
LostFocus
Ha módosítja a szöveget egy kombinált lista szövegmező részében, a Change esemény következik be. Ez az esemény mindig bekövetkezik, ha a vezérlőelem tartalma módosul, de még azt megelőzően, hogy a fókusz másik vezérlőre vagy rekordra kerül (vagyis a BeforeUpdate és az AfterUpdate esemény előtt). A szövegmezőkben vagy a kombinált listák szövegmező szakaszában minden egyes billentyűlenyomáskor a következő eseménysorozat megy végbe:
KeyDown
KeyPress
Dirty
Change
KeyUp
A NotInList esemény következik be, ha olyan értéket ad meg egy kombinált listában, amely nem szerepel a kombinált lista lista részében, és így próbál meg továbblépni egy másik vezérlőre vagy rekordra. A NotInList eseményre a kombinált lista billentyűzeteseményei és Change eseménye után, de még az űrlap minden más vezérlőjének eseményei előtt kerül sor. Ha a kombinált lista LimitToList tulajdonsága Igen értékre van állítva, az űrlap Hiba eseménye közvetlenül a NotInList esemény után következik be:
KeyDown
KeyPress
Piszkos
Change
KeyUp
NotInList
Error
Az űrlapokon szereplő rekordokon bekövetkező események sorrendje
Az űrlapokon lévő rekordok eseményei akkor fordulnak elő, ha a fókuszt egy másik rekordra helyezi át, adatokat frissít egy rekordban, töröl egy meglévő rekordot vagy rekordot, vagy új rekordot hoz létre.
A fókusz átvitele a rekordokra és a rekordokban szereplő adatok frissítése
Ha egy űrlapon egy meglévő rekordra viszi a fókuszt, adatot visz be a rekordba, vagy módosítja a rekord adatait, majd egy másik rekordra viszi a fókuszt, az alábbi eseménysorozat következik be az űrlapon:
Current (űrlap)
BeforeUpdate (űrlap)
AfterUpdate (űrlap)
Current (form)
Amikor elhagyja a módosult adatokat tartalmazó rekordot, de még mielőtt a következő rekordra lép, az Exit és a LostFocus esemény következik be azon a rekordon, amelyen eddig volt a fókusz. Ezekre az eseményekre az űrlap BeforeUpdate és AfterUpdate eseménye előtt kerül sor, az alábbiak szerint:
BeforeUpdate (űrlap)
AfterUpdate (űrlap)
Kilépés (vezérlő)
LostFocus (vezérlő)
Aktuális (űrlap)
Ahogy lépteti a fókuszt egy űrlap vezérlőin, mindegyik vezérlőn bekövetkeznek a megfelelő események. Az alábbi műveletek végrehajtásakor például a következő eseménysorozatok zajlanak le:
- Űrlap megnyitása és egy vezérlőelem adatainak módosítása:
Current (űrlap)
Enter (control)
GotFocus (control)
BeforeUpdate (control)
AfterUpdate (control) - A fókusz átvitele egy másik vezérlőre:
Exit (control1)
LostFocus (control1)
Enter (control2)
GotFocus (control2) - A fókusz átvitele egy másik rekordra:
BeforeUpdate (űrlap)
AfterUpdate (űrlap)
Kilépés (control2)
LostFocus (control2)
Current (űrlap)
Rekordok törlése
Rekord törlésekor bekövetkeznek az alábbi események az űrlapon, és a Microsoft Office Access megjelenít egy párbeszédpanelt, amely kéri a törlés megerősítését:
Delete
BeforeDelConfirm
AfterDelConfirm
Ha visszavonja a Delete eseményt, nem kerül sor a BeforeDelConfirm és a AfterDelConfirm eseményre, és nem jelenik meg a párbeszédpanel.
Új rekord létrehozása
Ha egy űrlap új (üres) rekordjára viszi a fókuszt, majd új rekordot hoz létre úgy, hogy adatokat ír be egy vezérlőbe, a következő eseménysorozat megy végbe:
Current (űrlap)
Enter (control)
GotFocus (control)
BeforeInsert (űrlap)
AfterInsert (űrlap)
A BeforeInsert (űrlap) esemény azonnal aktiválódik, amint elkezd gépelni a vezérlőben. Az AfterInsert (űrlap) esemény a rekord elhagyása után aktiválódik.
Az űrlapon lévő vezérlők BeforeUpdate és AfterUpdate eseményei és az új rekord eseményei a BeforeInsert esemény után és az AfterInsert esemény előtt következnek be.
Az űrlapokon és a segédűrlapokon bekövetkező események sorrendje
Az űrlapok eseményei az űrlapok megnyitásakor és bezárásakor, az űrlapok közötti váltáskor, illetve az űrlapon vagy segédűrlapon található adatokkal kapcsolatos műveletek alkalmával következnek be.
Űrlap megnyitása és bezárása
Űrlap megnyitásakor az űrlap alábbi eseményei következnek be:
Open
Load
Resize
Activate
Current
Ha nincsenek az űrlapon aktív vezérlők, az űrlap GotFocus eseményére az Activate esemény után, de a Current esemény előtt kerül sor.
Az űrlapok bezárásakor a következő eseménysorozatra megy végbe az űrlapon:
Eltávolítás
Inaktiválás
Bezárás
Ha az űrlapon nincsenek aktív vezérlők, a LostFocus esemény az űrlapon a Eltávolítás esemény után, de az Inaktiválás esemény előtt következik be.
Váltás az űrlapok között
Ha vált két nyitva lévő űrlap között, először az első űrlap Deactivate eseménye, utána a második űrlap Activate eseménye következik be:
Deactivate (form1)
Activate (form2)
Az űrlapok Deactivate eseménye akkor is bekövetkezik, ha a felhasználó az űrlapról az Access egy másik objektumlapjára vált. A Deactivate eseményre azonban nem kerül sor, ha párbeszédpanelre vált, vagy egy olyan űrlapra, amelynek PopUp tulajdonsága Yes értékű, illetve egy másik program egy ablakára lép.
Megjegyzés
Az Open esemény nem következik be, ha már megnyitott űrlapra viszi át a fókuszt, még akkor sem, ha egy OpenForm művelettel vitte is át a fókuszt arra az űrlapra.
Az űrlapokon szereplő adatokon végzett műveletek
Az űrlapokon lévő rekordok között való mozgás és az adatok módosításának hatására űrlap- és vezérlőesemények következnek be. Amikor például először nyit meg egy űrlapot, a következő eseménysorozat megy végbe:
Open (űrlap)
Load (form)
Resize (form)
Activate (form)
Current (form)
Enter (control)
GotFocus (control)
Az űrlapok bezárásakor pedig a következő eseménysorozat megy végbe:
Kilépés (vezérlő)
LostFocus (vezérlő)
Eltávolítás (űrlap)
Inaktiválás (űrlap)
Bezárás (űrlap)
Ha módosította az adatokat egy vezérlőben, a vezérlő és az űrlap BeforeUpdate és AfterUpdate eseményére is a vezérlő Exit eseménye előtt kerül sor.
Segédűrlapok használata
Ha olyan űrlapot nyit meg, amely segédűrlapot tartalmaz, a segédűrlapok és rekordjaik betöltésére a fő űrlap betöltése előtt kerül sor. Ezért a segédűrlapnak és vezérlőinek az eseményei (például az Open, a Current, az Enter és a GotFocus) az űrlap eseményei előtt következnek be. A segédűrlapoknál azonban nem következik be az Activate esemény. Így tehát a fő űrlap megnyitása csak a fő űrlap Activate eseményét váltja ki.
Ehhez hasonlóan a segédűrlapot tartalmazó űrlapok bezárásakor a segédűrlapot és rekordjait az űrlap után távolítja el a memóriából a rendszer. A segédűrlapoknál nem következik be Deactivate esemény. Így tehát a fő űrlap bezárása csak a fő űrlap Deactivate eseményét váltja ki. A vezérlők, az űrlap és a segédűrlap eseményei az alábbi sorrendben következnek be:
- A segédűrlap vezérlőinek eseményei (például Exit és LostFocus)
- Az űrlap vezérlőinek eseményei (a segédűrlap vezérlőt is beleértve)
- Az űrlap eseményei (például Deactivate és Close)
- A segédűrlap eseményei
Megjegyzés
A segédűrlapok eseményeire a fő űrlap bezárása után kerül sor, ezért bizonyos események nem következnek be; ilyen például a fő űrlap bezárásának a segédűrlapon bekövetkező eseményből történő visszavonása. Az ilyen jellegű érvényesség-ellenőrzéseket célszerű a főűrlapon bekövetkező eseményhez kötni.
A billentyűleütés és az egérrel való kattintás hatására bekövetkező események sorrendje
Az űrlapok és vezérlőelemek billentyűzeteseményei akkor fordulnak elő, amikor lenyomja a billentyűket, vagy billentyűleütéseket küld, miközben az űrlap vagy vezérlőelem fókuszban van. Az űrlapok, űrlapszakaszok és vezérlőelemek egéreseményeire akkor kerül sor, ha lenyomja az egér gombjait, miközben az egérmutató egy űrlapon, egy szakaszban vagy egy vezérlőelemen van. Akkor is bekövetkeznek egéresemények, ha egy űrlap, szakasz vagy vezérlő fölé viszi az egérmutatót.
Billentyűzetesemények
Amikor lenyom és felenged egy billentyűt, miközben egy űrlap vezérlője a fókuszban van (vagy a Billentyűk küldése művelet vagy utasítás használatával billentyűleütést küld), a következő eseménysorozat következik be:
KeyDown
KeyPress
KeyUp
Amikor lenyom és felenged egy billentyűt, vagy leütést küld az ANSI-karakterkészletben, a KeyDown, a KeyPress és a KeyUp események mind bekövetkeznek. Ha egy ANSI-billentyűt lenyomva tart, akkor váltakozva ismétlődik a KeyDown és a KeyPress esemény (KeyDown, KeyPress, KeyDown, KeyPress stb.), amíg fel nem engedi a billentyűt; ekkor bekövetkezik a KeyUp esemény.
Ha egy nem ANSI-billentyűt lenyom és felenged, a KeyDown és a KeyUp esemény következik be. Ha egy nem ANSI-billentyűt lenyomva tart, akkor a KeyDown esemény ismétlődik, amíg fel nem engedi a billentyűt; ekkor bekövetkezik a KeyUp esemény.
Ha egy billentyű lenyomása kiváltja egy vezérlő egy másik eseményét, akkor az az esemény a KeyPress esemény után, de a KeyUp esemény előtt következik be. Ha például egy billentyűleütés módosítja egy szövegmező szövegét, és ezáltal aktiválódik a Change esemény, a következő eseménysorozat megy végbe:
KeyDown
KeyPress
Change
KeyUp
Ha egy billentyűleütés hatására a fókusz egyik vezérlőről a másikra kerül, a KeyDown esemény az első vezérlőn következik be, a KeyPress és a KeyUp esemény pedig a második vezérlőn. Ha például módosítja az adatokat egy vezérlőben, és a TAB billentyű lenyomásával a következő vezérlőre lép, akkor a következő eseménysorozat megy végbe:
- Első vezérlő:
KeyDown
BeforeUpdate
AfterUpdate
Exit
LostFocus - Második vezérlő:
Enter
GotFocus
KeyPress
KeyUp
Egéresemények
Ha lenyom vagy felenged egy egérgombot, amikor az egérmutató egy vezérlőelemen vagy egy űrlapon van, az űrlap alábbi eseményei következnek be:
MouseDown
MouseUp
Click
Ha a fókusz egy vezérlőn van, és Ön kattintással átviszi a fókuszt egy másik vezérlőre, az alábbi eseménysorozat következik be:
- Első vezérlő:
Kilépés aLostFocus
- Második vezérlő:
Enter
GotFocus
MouseDown
MouseUp
Click
Ha egy másik rekordra lép, majd rákattint egy vezérlőre, akkor az űrlap Current eseménye is bekövetkezik a vezérlő Enter eseménye előtt.
Ha duplán kattint egy vezérlőre, akkor a Click és a DblClick esemény is bekövetkezik. Ha például egy olyan vezérlőre kattint duplán, amely nem parancsgomb, az események alábbi sorozata következik be a vezérlőn:
MouseDown
MouseUp
Click
DblClick
MouseUp
Ha egy parancsgombra kattint duplán, az előző eseménysorozat zajlik de, de egy második Click esemény követi.
Az űrlapok, a szakaszok és a vezérlők MouseMove eseményére akkor kerül sor, ha az egérmutatót az űrlap, szakasz vagy vezérlő fölé viszi. Ez az esemény független a többi egéreseménytől.
A jelentésekhez és a jelentések szakaszaihoz kapcsolódó események sorrendje
A jelentések nyomtatásra vagy megtekintésre való megnyitásakor, illetve a jelentések bezárásakor a jelentésekhez és a jelentések szakaszaihoz kapcsolódó események következnek be.
A jelentések eseményei
Ha nyomtatásra vagy megtekintésre megnyit egy jelentést, majd később bezárja a jelentést, vagy az Access egy másik objektumlapjára lép, a jelentéshez kapcsolódó események alábbi sorozata következik be:
Open
Load
Activate
Close
Deactivate
Ha vált két jelentés között, először az első jelentés Deactivate eseménye, utána a második jelentés Activate eseménye következik be:
Deactivate (report1)
Activate (jelentés2)
A jelentések Deactivate eseménye akkor is bekövetkezik, ha a felhasználó a jelentésről az Access egy másik objektumlapjára vált. A Deactivate eseményre azonban nem kerül sor, ha párbeszédpanelre vált, vagy egy olyan űrlapra, amelynek PopUp tulajdonsága Yes értékű, illetve egy másik program egy ablakára lép.
Ha lekérdezésen alapuló jelentést nyit meg, az Access előbb a jelentés Open eseményét aktiválja, csak utána futtatja a jelentést megalapozó lekérdezést. Ennek következtében be lehet állítani a jelentés feltételeit olyan makróval vagy eseményvezérelt eljárással, amely az Open eseményre reagál. A makró vagy az eseményvezérelt eljárás például megnyithat egy egyéni párbeszédpanelt, amelyen megadhatók a jelentés feltételei.
A jelentések szakaszainak eseményei
Ha kinyomtat vagy megnyit egy jelentést, a jelentés szakaszainak Format és Print eseménye a jelentés Open és Activate eseménye után, de a jelentés Close vagy Deactivate eseménye előtt következik be:
Megnyitás (jelentés)
Betöltés (jelentés)
Aktiválás (jelentés)
Formátum (jelentésszakasz)
Nyomtatás (jelentésszakasz)
Bezárás (jelentés)
Inaktiválás (jelentés)
Biztonsági A Jelentés nézet használatával engedélyezheti a jelentések felhasználószűrését. A Nyomtatási kép funkcióval ellentétben azonban a formázási és nyomtatási események egyik szakaszban sem fordulnak elő Jelentés nézetben. Ez a VBA-függvények eredményeire és a felhasználó által meghatározott eljárásokra is vonatkozik, amelyek a vezérlőkben (például feliratozás, megjelenítési állapot, feltételes formázás, vezérlők átméretezése stb.) jelennek meg ezekben az eseményekben. Ezért ne használjon kódot ebben az eseményben bizalmas adatok formázására, elrejtésére vagy nyomtatására, amelyek nyilvánosságra kerülhetnek. Javasoljuk az adatok előzetes szűrését vagy a Jelentés előnézetének letiltását az AllowReportView tulajdonság Nem értékre állításával.
Ezenkívül a következő események fordulhatnak elő formázás közben vagy után, de még a Print esemény előtt:
- A Retreat esemény következik be, amikor az Access a jelentés formázása közben visszatér egy előző szakaszra.
- A NoData esemény következik be, ha nincsenek olyan rekordok, amelyeket a jelentés megjeleníthetne.
- A Page esemény következik be a formázás után, de a nyomtatás előtt. Ez az esemény felhasználható a kinyomtatott jelentés megjelenésének testreszabásához.