Pojedyncza akcja, taka jak przechodzenie z jednej kontrolki na obiekcie do innej kontrolki, może wywołać kilka różnych zdarzeń, które występują w określonej sekwencji. Ważna jest znajomość czasu i kolejności występowania zdarzeń, ponieważ może to wpłynąć na sposób i czas uruchamiania makr, a nawet procedur zdarzeń. Jeśli na przykład dwie procedury zdarzeń mają zostać uruchomione w określonej kolejności, skojarzone z nimi zdarzenia muszą wystąpić w takiej samej kolejności.
W tym artykule
- Kolejność zdarzeń kontrolek w formularzach
- Kolejność zdarzeń rekordów w formularzach
- Kolejność zdarzeń formularzy i podformularzy
- Kolejność zdarzeń naciśnięć klawiszy i kliknięć myszą
- Kolejność zdarzeń raportów i sekcji raportów
Kolejność zdarzeń kontrolek w formularzach
Zdarzenia kontrolek w formularzach występują po przeniesieniu fokusu do kontrolki oraz zmianie i zaktualizowaniu danych w kontrolce.
Uwaga
W programie Microsoft Office Access nazwy zdarzeń są wyświetlane nieco inaczej w Edytorze Visual Basic niż w arkuszu właściwości i Konstruktorze makr. Na przykład zdarzenie, które w arkuszu właściwości formularza i Konstruktorze makr ma nazwę Przy uzyskaniu fokusu, w Edytorze Visual Basic nosi nazwę GotFocus. W przykładach w tym artykule użyto nazw zdarzeń w formacie języka Visual Basic for Applications (VBA).
Przenoszenie fokusu do kontrolki
W przypadku przeniesienia fokusu do kontrolki w formularzu (na przykład przez otwarcie formularza zawierającego co najmniej jedną aktywną kontrolkę lub przez przeniesienie fokusu do innej kontrolki w tym samym formularzu) zdarzenia Enter i GotFocus występują w następującej kolejności:
Enter
GotFocus
W przypadku otwarcia formularza zdarzenia Enter i GotFocus występują po zdarzeniach skojarzonych z otwarciem formularza (takich jak Open, Activate i Current) w następujące kolejności:
Strzałka Otwórz (formularz)
Aktywuj (formularz)
bieżąca (
Enter (kontrolka
GotFocus (kontrolka)
W przypadku przeniesienia fokusu poza kontrolkę w formularzu (na przykład przez zamknięcie formularza zawierającego co najmniej jedną aktywną kontrolkę lub przejście do innej kontrolki w tym samym formularzu) zdarzenia Exit i LostFocus występują w następującej kolejności:
Exit
LostFocus
W przypadku zamknięcia formularza zdarzenia Exit i LostFocus występują przed zdarzeniami skojarzonymi z zamknięciem formularza (takimi jak Unload, Deactivate i Close) w następującej kolejności:
Exit (control)
LostFocus (kontrolka)
Unload (formularz)
Deactivate (formularz)
Close (formularz)
Zmienianie i aktualizowanie danych w kontrolce
W przypadku wprowadzenia lub zmiany danych w kontrolce w formularzu, a następnie przeniesienia fokusu do innej kontrolki występują zdarzenia BeforeUpdate i AfterUpdate:
Strzałka BeforeUpdate
AfterUpdate
Zdarzenia Exit i LostFocus kontrolki, której wartość jest zmieniana, występują po zdarzeniach BeforeUpdate i AfterUpdate:
BeforeUpdate
AfterUpdate
Exit
LostFocus
W przypadku zmiany tekstu w polu tekstowym lub w sekcji pola tekstowego w polu kombi występuje zdarzenie Change. To zdarzenie występuje po każdej zmianie zawartości kontrolki, ale przed przeniesieniem fokusu do innej kontrolki lub innego rekordu (dlatego występują przed zdarzeniami BeforeUpdate i AfterUpdate). Poniżej przedstawiono sekwencję zdarzeń występujących dla każdego naciśniętego klawisza w polu tekstowym lub w sekcji pola tekstowego w polu kombi:
KeyDown
KeyPress
Dirty
Change
KeyUp
Zdarzenie NotInList występuje po wprowadzeniu wartości w polu kombi, którego nie ma na liście pól kombi, i próbie przeniesienia fokusu do innej kontrolki lub innego rekordu. Zdarzenie NotInList występuje po zdarzeniach klawiatury i zdarzeniach Change pola kombi, ale przed zdarzeniami innej kontrolki lub innego formularza. Jeśli właściwość LimitToList pola kombi jest ustawiona na Wartość Tak, zdarzenie Error formularza występuje bezpośrednio po zdarzeniu NotInList :
KeyDown
KeyPress
Dirty
Change
KeyUp
NotInList
Error
Kolejność zdarzeń rekordów w formularzach
Zdarzenia rekordów w formularzach występują po przeniesieniu fokusu do innego rekordu, zaktualizowaniu danych w rekordzie, usunięciu istniejącego rekordu lub rekordów albo utworzeniu nowego rekordu.
Przenoszenie fokusu do rekordów i aktualizowanie danych w rekordach
W przypadku przeniesienia fokusu do istniejącego rekordu formularza, wprowadzenia lub zmiany danych w rekordzie, a następnie przeniesienia fokusu do innego rekordu w formularzu występuje następującą sekwencja zdarzeń:
Strzałka bieżąca (formularz)
BeforeUpdate (
AfterUpdate (formularz)
Current (formularz)
W przypadku opuszczenia rekordu, którego dane zostały zmienione, przed wprowadzeniem następnego rekordu występują zdarzenia Exit i LostFocus dla kontrolki z fokusem. Te zdarzenia występują po zdarzeniach BeforeUpdate i AfterUpdate formularza w następującej kolejności:
BeforeUpdate (formularz)
AfterUpdate (formularz)
Exit (
LostFocus (kontrolka)
Bieżący (formularz)
Przenoszenie fokusu między kontrolkami w formularzu powoduje występowanie zdarzeń dla poszczególnych kontrolek. Na przykład poniższa sekwencja zdarzeń występuje w przypadku wykonania następujących działań:
- Otwarcie formularza i zmiana danych w kontrolce:
Strzałka bieżąca (formularz)
Enter (
GotFocus (kontrolka)
BeforeUpdate (kontrolka)
AfterUpdate (kontrolka) - Przeniesienie fokusu do innej kontrolki:
Strzałka wyjścia (
1) LostFocus (
1) Enter (kontrolka
GotFocus (kontrolka2) - Przeniesienie fokusu do innego rekordu:
BeforeUpdate (formularz)
AfterUpdate (formularz)
Exit (kontrolka2
LostFocus (kontrolka2)
Bieżąca (formularz)
Usuwanie rekordów
W przypadku usunięcia rekordu występują następujące zdarzenia formularza, a w programie Microsoft Office Access jest wyświetlane okno dialogowe z monitem o potwierdzenie usunięcia:
Delete
BeforeDelConfirm
AfterDelConfirm
Jeśli anulujesz zdarzenie Delete, zdarzenia BeforeDelConfirm oraz AfterDelConfirm nie wystąpią i okno dialogowe nie zostanie wyświetlone.
Tworzenie nowego rekordu
W przypadku przeniesienia fokusu do nowego (pustego) rekordu w formularzu, a następnie utworzenia nowego rekordu przez wpisanie danych w kontrolce występuje następująca sekwencja zdarzeń:
Strzałka bieżąca (formularz)
Enter (
Strzałka GotFocus (kontrolka
BeforeInsert (formularz)
AfterInsert (formularz)
Zdarzenie BeforeInsert (formularz) wyzwala się zaraz po rozpoczęciu wpisywania tekstu w kontrolce. Zdarzenie AfterInsert (formularz) wyzwala się po opuszczeniu rekordu.
Zdarzenia BeforeUpdate i AfterUpdate kontrolek formularza oraz nowego rekordu występują po zdarzeniu BeforeInsert i przed zdarzeniem AfterInsert.
Kolejność zdarzeń formularzy i podformularzy
Zdarzenia formularzy występują w przypadku otwarcia i zamknięcia formularza, przejścia między formularzami lub pracy z danymi w formularzu lub podformularzu.
Otwieranie i zamykanie formularza
W przypadku otwarcia formularza występuje następująca sekwencja zdarzeń formularza:
Open
Load
Resize
Activate
Current
Jeśli w formularzu nie ma aktywnych kontrolek, zdarzenie GotFocus formularza występuje po zdarzeniu Activate, ale przed zdarzeniem Current.
W przypadku zamknięcia formularza występuje następująca sekwencja zdarzeń formularza:
Zwalnianie
Dezaktywuj
Zamknij
Jeśli w formularzu nie ma aktywnych kontrolek, zdarzenie LostFocus formularza występuje po zdarzeniu Unload , ale przed zdarzeniem Deactivate .
Przechodzenie między formularzami
W przypadku przełączenia między dwoma otwartymi formularzami występuje zdarzenie Deactivate dla pierwszego formularza i zdarzenie Activate dla drugiego formularza:
Strzałka Deactivate (formularz1
Activate (formularz 2)
Zdarzenie Deactivate formularza występuje również w przypadku przełączenia z formularza do innej karty obiektu w programie Access. Jednak zdarzenie Deactivate nie występuje w przypadku przełączenia do okna dialogowego, do formularza z właściwością PopUp z ustawioną wartością Tak lub do okna w innym programie.
Uwaga
Zdarzenie Open nie występuje w przypadku przeniesienia fokusu do formularza, który jest już otwarty, nawet jeśli przeniesiono fokus do tego formularza przez wykonanie akcji OtwórzFormularz.
Praca z danymi w formularzu
Zdarzenia formularzy i kontrolek występują w przypadku przechodzenia między rekordami w formularzu i zmiany danych. Na przykład w przypadku otwarcia formularza występuje następująca sekwencja zdarzeń:
Strzałka otwierania (formularza)
Załaduj (formularz)
Zmień rozmiar (formularz)
aktywowania (
Bieżąca (formularz)
Enter (kontrolka
GotFocus (kontrolka)
Podobnie w przypadku zamknięcia formularza występuje następująca sekwencja zdarzeń:
Exit (control)
LostFocus (kontrolka)
Unload (formularz)
Deactivate (formularz)
Close (formularz)
Jeśli wprowadzono zmiany danych w kontrolce, zdarzenia BeforeUpdate i AfterUpdate występują dla formularza oraz kontrolki przed zdarzeniem Exit kontrolki.
Praca z podformularzami
W przypadku otwarcia formularza zawierającego podformularz ten podformularz i jego rekordy są ładowane przed formularzem głównym. Dlatego zdarzenia podformularza i jego kontrolek (takie jak Open, Current, Enter i GotFocus) występują przed zdarzeniami formularza. Jednak zdarzenie Activate nie występuje dla podformularzy. Dlatego otwarcie formularza głównego powoduje wyzwolenie zdarzenia Activate tylko dla formularza głównego.
Podobnie w przypadku zamknięcia formularza zawierającego podformularz ten podformularz i jego rekordy są zwalniane po formularzu. Zdarzenie Deactivate nie występuje dla podformularzy. Dlatego zamknięcie formularza głównego powoduje wyzwolenie zdarzenia Deactivate tylko dla formularza głównego. Zdarzenia kontrolek, formularza i podformularza występują w następującej kolejności:
- Zdarzenia kontrolek podformularza (takie jak Exit i LostFocus)
- Zdarzenia kontrolek formularza (w tym kontrolki podformularza)
- Zdarzenia formularza (takie jak Deactivate i Close)
- Zdarzenia podformularza
Uwaga
Zdarzenia podformularza występują po zamknięciu formularza głównego, dlatego nie wystąpią pewne zdarzenia, takie jak anulowanie zamykania formularza głównego w zdarzeniu w podformularzu. Może być konieczne przeniesienie tego typu testów sprawdzania poprawności do zdarzenia w formularzu głównym.
Kolejność zdarzeń naciśnięć klawiszy i kliknięć myszą
Zdarzenia klawiatury występują w formularzach i kontrolkach po naciśnięciu klawiszy lub wysłaniu naciśnięć klawiszy, gdy na formularzu lub kontrolce jest fokus. Zdarzenia myszy występują w formularzach, sekcjach formularzy i kontrolkach w formularzach w przypadku klikania przycisków myszy, gdy wskaźnik myszy znajduje się w formularzu, sekcji lub kontrolce. Zdarzenia myszy występują także po umieszczeniu wskaźnika myszy na formularzu, sekcji lub kontrolce.
Zdarzenia klawiatury
Po naciśnięciu i zwolnieniu klawisza, gdy fokus ma fokus kontrolki w formularzu (lub użycie akcji Lub instrukcji SendKeys w celu wysłania naciśnięcia klawisza), występuje następująca sekwencja zdarzeń:
KeyDown
KeyPress
KeyUp
Po naciśnięciu i zwolnieniu klawisza lub wysłaniu naciśnięcia klawisza w zestawie znaków ANSI występują zdarzenia KeyDown, KeyPress i KeyUp . Jeśli naciśniesz i przytrzymasz klawisz ANSI, zdarzenia KeyDown i KeyPress wielokrotnie na przemian (KeyDown, KeyPress, KeyDown, KeyPress itd.) do momentu zwolnienia klawisza; wtedy występuje zdarzenie KeyUp .
W przypadku naciśnięcia i zwolnienia klawisza innego niż ANSI występują zdarzenia KeyDown i KeyUp. W przypadku naciśnięcia i przytrzymania klawisza innego niż ANSI wielokrotnie występuje zdarzenie KeyDown do czasu zwolnienia klawisza — wtedy występuje zdarzenie KeyUp.
Jeśli naciśnięcie klawisza powoduje wyzwolenie innego zdarzenia kontrolki, to zdarzenie występuje po zdarzeniu KeyPress, ale przed zdarzeniem KeyUp. Jeśli na przykład naciśnięcie klawisza powoduje zmianę tekstu w polu tekstowym, co powoduje wyzwolenie zdarzenia Change, występuje następująca sekwencja zdarzeń:
KeyDown
KeyPress
Change
KeyUp
Jeśli naciśnięcie klawisza powoduje przeniesienie fokusu do innej kontrolki, występuje zdarzenie KeyDown dla pierwszej kontrolki, natomiast dla drugiej kontrolki występują zdarzenia KeyPress i KeyUp. Jeśli na przykład zmienisz dane w kontrolce, a następnie naciśniesz klawisz TAB w celu przejścia do następnej kontrolki, wystąpią następujące sekwencje zdarzeń:
- Pierwsza kontrolka:
Strzałka keydown
BeforeUpdate
AfterUpdate
Exit
LostFocus - Druga kontrolka:
Enter
GotFocus
KeyPress
KeyUp
Zdarzenia myszy
W przypadku kliknięcia i zwolnienia przycisku myszy, gdy wskaźnik myszy znajduje się na kontrolce w formularzu, występuje następująca sekwencja zdarzeń kontrolki:
MouseDown
MouseUp
Click
Jeśli fokus jest ustawiony w kontrolce i klikniesz inną kontrolkę w celu przeniesienia do niej fokusu, wystąpią następujące sekwencje zdarzeń:
- Pierwsza kontrolka:
Exit
LostFocus - Druga kontrolka:
Enter
GotFocus
MouseDown
MouseUp
Click
Jeśli przejdziesz do innego rekordu, a następnie klikniesz kontrolkę, wystąpi też zdarzenie Current formularza przed zdarzeniem Enter kontrolki.
Dwukrotne kliknięcie kontrolki powoduje wystąpienie zdarzeń Click i DblClick. Na przykład dwukrotne kliknięcie kontrolki innej niż przycisk polecenia powoduje wystąpienie następującej sekwencji zdarzeń kontrolki:
MouseDown
MouseUp
Click
DblClick
MouseUp
W przypadku dwukrotnego kliknięcia przycisku polecenia występuje powyższa sekwencja zdarzeń, po której występuje drugie zdarzenie Click.
Zdarzenie MouseMove formularza, sekcji lub kontrolki występuje w przypadku umieszczenia wskaźnika myszy na formularzu, sekcji lub kontrolce. To zdarzenie nie zależy od innych zdarzeń myszy.
Kolejność zdarzeń raportów i sekcji raportów
Zdarzenia raportów i sekcji raportów występują w przypadku otwarcia raportu w celu wydrukowania go lub wyświetlenia jego podglądu albo zamknięcia raportu.
Zdarzenia raportów
W przypadku otwarcia raportu w celu wydrukowania go lub wyświetlenia jego podglądu, a następnie późniejszego zamknięcia raportu lub przejścia do innej karty obiektów w programie Access występuje następująca sekwencja zdarzeń raportu:
Strzałka otwierania
Załaduj StrzałkaAktywuj
Zamknij
Dezaktywuj
W przypadku przełączenia między dwoma otwartymi raportami występuje zdarzenie Deactivate dla pierwszego raportu i zdarzenie Activate dla drugiego raportu:
Strzałka Dezaktywuj (raport1)
Aktywuj (raport2)
Zdarzenie Deactivate raportu występuje również w przypadku przełączenia z raportu do innej karty obiektu w programie Access. Jednak zdarzenie Deactivate nie występuje w przypadku przełączenia do okna dialogowego, do formularza z właściwością PopUp z ustawioną wartością Tak lub do okna w innym programie.
W przypadku otwarcia raportu opartego na zapytaniu program Access wyzwala zdarzenie Open raportu przed uruchomieniem zapytania. W wyniku tego można ustawić kryteria raportu przy użyciu makra lub procedury zdarzenia odpowiadającej na zdarzenie Open. Na przykład makro lub procedura zdarzenia umożliwia otwarcie niestandardowego okna dialogowego, w którym można wprowadzić kryteria raportu.
Zdarzenia sekcji raportów
W przypadku drukowania raportu lub wyświetlania jego podglądu występują zdarzenia Format i Print sekcji raportu po zdarzeniach Open i Activate raportu oraz przed zdarzeniami Close i Deactivate raportu:
Strzałka otwierania (raportu)
Załaduj (raport)
Aktywowanie (raport)
Formatowanie (sekcja raportu)
drukowania (sekcja raportu)
Zamknij (raport)
Dezaktywuj (raport)
Zabezpieczeń Widok raportu umożliwia filtrowanie raportów przez użytkowników. Jednak w przeciwieństwie do podglądu wydruku zdarzenia Formatuj i Drukuj w żadnej sekcji nie występują w widoku raportu. Dotyczy to również wyników funkcji języka VBA oraz procedur zdefiniowanych przez użytkownika, które są wyświetlane w kontrolkach (takich jak podpisy etykiet, stan wyświetlania, formatowanie warunkowe, zmiana rozmiaru kontrolek itd.) w tych zdarzeniach. Dlatego nie używaj kodu w tym zdarzeniu do formatowania, ukrywania lub drukowania poufnych danych, które mogą zostać ujawnione. Zalecamy wstępne filtrowanie danych lub wyłączanie podglądu raportu, ustawiając właściwość AllowReportView na No (Nie).
Ponadto mogą wystąpić następujące zdarzenia podczas formatowania lub po jego zakończeniu, ale przed zdarzeniem Print:
- Zdarzenie Retreat występuje w przypadku powrotu programu Access do poprzedniej sekcji podczas formatowania raportu.
- Zdarzenie NoData występuje w przypadku braku rekordów wyświetlanych w raporcie.
- Zdarzenie Page występuje po zakończeniu formatowania, ale przed rozpoczęciem drukowania. Za pomocą tego zdarzenia można dostosować wygląd drukowanego raportu.