Kurs VBA – cz. 25 – Formularze – Zdarzenia

W tej części kursu opiszę najważniejsze zdarzenia formularza i jego kontrolek. W zdarzeniach możemy umieścić kod, który uruchomi się automatycznie w odpowiedzi na działanie użytkownika.Jest to główna metoda programowania formularzy. Ostatecznie taka jest ich filozofia, program wyświetla pewien szablon przed użytkownikiem i czeka na jego reakcję. Użytkownik może zacząć wypełniać pierwsze pole, może zacznie od drugiego, może kliknie od razu ok albo się rozmyśli i zamknie okno. Wszystkie te działania uruchamiają określone zdarzenia.

Kod zdarzeń umieszczamy w pliku kodu formularza. Możemy go włączyć wybierając View Object po kliknięciu prawym przyciskiem na formularzu w drzewku projektu.

Przełączać się pomiędzy widokiem formularza a kodem formularza możemy używając na zmianę F7 i shift + F7 albo wybierając View Code lub View Object w powyższym menu.

 Dodawanie zdarzeń

Dodawaniem zdarzenia nazywamy wypełnianie go kodem w pliku kodu formularza. Najłatwiej dodać kod do zdarzenia Click. Wystarczy dwa razy kliknąć kontrolkę na formularzu w trybie edycji.

W przypadku pól tekstowych zostanie dodane zdarzenie Change, które jest ważniejsze dla tego typu kontrolki. O tym jednak w dalszej części kursu.

Inne zdarzenia też można bardzo łatwo dodać.

  1. Otwieramy widok kodu danego formularza.
  2. Na górnej liście wybieramy interesującą nas kontrolkę lub sam formularz. Widać na tej liście tylko kontrolki z formularza wybranego w drzewku projektu.
  3. Prawa lista jest wtedy uzupełniana o zdarzenia związane z daną kontrolką. Po wybraniu pozycji z prawej listy, zdarzenie zostaje dodane do pliku.

Jak widać w trakcie zostało dodane zdarzenie Click (jeszcze go nie było). Jest to swego rodzaju „ułatwienie”. Zdarzenie Click występuje prawie zawsze, ponieważ myszka jest podstawową metodą poruszania się po formularzu. Jeżeli nie chcemy programować tego zdarzenia, można je usunąć.

Pomoc do zdarzeń

Dokładny opis każdego zdarzenia otrzymamy po zaznaczeniu jego nazwy i kliknięciu F1.

 

W przypadku zdarzeń bardzo istotne są argumenty. Dzięki nim wiemy np. gdzie była myszka w momencie naciśnięcia przycisku albo jaka litera została wpisana w polu tekstowym. Dodatkowo, modyfikując wartość argumentów możemy wpływać na proces, w którym znajduje się zdarzenie. Na przykład zapobiegać zamknięciu formularza po kliknięciu krzyżyka.

Wszystkie strony pomocy wyglądają podobnie:

Strona pomocy zaczyna się od opisania sytuacji, w których dane zdarzenie występuje.

W części Syntax opisana jest składnia zdarzenia. Znajdziemy tam kolejność argumentów. Po dodaniu zdarzenia, to wszystko wpisywane jest automatycznie.

W części Settings znajdziemy dodatkowe wyjaśnienia dotyczące argumentów. W powyższym przykładzie dowiemy się, że argument button może przyjmować wartości 1,2 lub 4, zależnie, który przycisk myszki został wciśnięty.

Ostatnia część to Remarks, czyli dodatkowe uwagi, opisujące ogólny kontekst zdarzenia.

Najważniejsze zdarzenia

Jak w przypadku atrybutów, zobaczymy teraz najważniejsze, uniwersalne zdarzenia.

Click,  

Zdecydowanie najczęściej używane zdarzenie. Umieszczamy w nim kod, który ma się wykonać po kliknięciu kontrolki myszką. Używamy go więc przede wszystkim dla wszystkich przycisków. Istnieje także kilka innych zdarzeń związanych z myszką, które wykonują się w określonej kolejności.

  1. MouseDown
  2. MouseUp
  3. Click
  4. DblClick
Change

Wywołuje się, kiedy zmienia się atrybut Value. Może to być spowodowane działaniem użytkownika, lub wykonaniem programu. Wydarzenie to może być używane do synchronizacji wartości różnych kontrolek. Poniżej pole combo jest filtrowane wartościami z pola tekstowego w czasie rzeczywistym.

Można to uzyskać w poniższy sposób (na formularzu są dwie kontrolki Txt_Filter i Lbx_MonthList).

Initialize

Zdarzenie się uruchamia, kiedy pojawia się formularz. Kod wykona się, zanim użytkownik będzie miał szansę wykonać cokolwiek na formularzu. Możemy więc wykonać tutaj dodatkowe czynności przygotowujące. Na przykład wypełnić pola combo, albo pobrać dane z bazy danych.

QueryClose

Uruchamia się przed zamknięciem formularza. Możemy tutaj wykonać dodatkowe czynności „sprzątające” lub zadać standardowe pytanie „Czy jesteś pewien?”.

Jak widać powyżej, jeżeli ustawimy argument na True, proces zamykania będzie przerwany i formularz pozostanie otwarty.

KeyDown, KeyPress, KeyUp

Zestaw zdarzeń związanych z naciskaniem klawisza. Wywołują się w określonej kolejności:

  1. KeyDown
  2. KeyPress
  3. KeyUp
Wydarzenia KeyDown i KeyPress wywołują się na zmianę, dopóki klawisz nie zostanie zwolniony. Wtedy wywołuje się zdarzenie KeyUp.
Wydarzenie KeyPress posiada argument KeyANSI, który wskazuje, który klawisz został naciśnięty. Kody przycisków można znaleźć w tabeli ASCII:
https://duckduckgo.com/?q=ansii+character+set&atb=v41-6b_&ia=web

Na szczęście może nam też w tym pomóc funkcja Chr(). Opisana w części kursu o funkcjach wbudowanych. Tłumaczy ona kod znaku na znak widoczny na klawiaturze.

Subskrybuj RSS, lub polub blog na Facebooku aby otrzymywać najnowsze informacje o rozwoju kursu.

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *