Kurs VBA – cz. 24 – Formularze – Atrybuty

W części kursu dotyczącej modelu obiektowego Excela opisałem, że każdy obiekt jest wyposażony w zestaw atrybutów, metod i zdarzeń. Atrybuty opisują stan obiektu, metody to procedury uruchamiane przez nas, natomiast zdarzenia uruchamiają się automatycznie.
Poniżej opisuję kilka najważniejszych atrybutów występujących w formularzach. W kolejnych częściach kursu omówię najczęściej używane metody i zdarzenia. Ostatecznie podpowiem gdzie szukać dokładnych informacji na temat poszczególnych elementów.

AtrybutyKażdy obiekt na formularzu posiada zestaw atrybutów opisujących jego aktualny stan. Jedne występują we wszystkich obiektach formularzy, inne są specyficzne tylko dla kilku z nich. Wszystkie atrybuty zaznaczonego obiektu można zobaczyć w oknie properties. Znajdują się tam atrybuty aktualnie zaznaczonego obiektu. Jeżeli przypadkiem zamkniemy to okno można je otworzyć przyciskiem F4. Po zaznaczeniu atrybutu i naciśnięciu F1 zobaczymy jego wyczerpujący opis.

Atrybuty możemy przeglądać alfabetycznie, łatwiej w ten sposób je znaleźć, jeżeli pamiętamy nazwę. W innym przypadku lepiej pogrupować po kategoriach. Mamy wtedy obok siebie atrybuty dotyczące jednego typu (wygląd, położenie, zachowanie itp.).

Widok atrybutów

Poniżej opisałem kilka najważniejszych, uniwersalnych atrybutów. Konsekwentne korzystanie z nich sprawi, że nasze formularze będą czytelniejsze i łatwiejsze w obsłudze,

Name (Nazwa)

Jest zdecydowanie najważniejszy i najczęściej ignorowany przez początkujących programistów. Nazwa pojawia się za każdym razem, kiedy używamy tej kontrolki. Kiedy odczytujemy lub zapisujemy wartość, przy wszystkich zdarzeniach, czy wywołaniach metod. Tak więc pierwszą czynnością po utworzeniu nowego formularza czy kontrolki musi być nadanie im znaczącej nazwy. Przykładowo po nadaniu formularzowi odpowiedniej nazwy będziemy go otwierać tak:

zamiast

Analogicznie polę z datą będziemy używać tak:

zamiast tak:

Accelerator (Akcelerator)

Atrybut istotny w intensywnie używanych formularzach. Ułatwia szybkie przeskakiwanie pomiędzy kontrolkami. Przypisujemy tutaj jedną literę. Jeżeli znajduje się w tekście kontrolki (powinna) to zostaje podkreślona.

Przycisk z akceleratorem „U”

Jeżeli teraz użytkownik naciśnie Alt + U, zostanie wykonane zdarzenie CommandButton_Click(). Podobnie można przypisać akcelerator zakładkom na formularzu (o zakładkach więcej w kolejnych częściach).

Trzy zakładki, każda ma inną literę jako akcelerator

Można teraz szybko przełączać się między zakładkami naciskając alt i jedną z liter D, F lub W. Oczywiście jako akcelerator można też wyznaczyć literę inną niż pierwsza lub nawet nie znajdującą się tekście kontrolki. W ostatnim przypadku nie zostanie ona jednak podkreślona i użytkownik będzie potrzebował dodatkowego szkolenia od programisty, żeby móc używać takiego skrótu.

ControlTipText (Podpowiedź)

Kolejny atrybut przydatny dla użytkownika. Tutaj umieszczony tekst pokazuje się w dymku po najechaniu myszką na kontrolkę. Dzięki temu zmniejszamy potrzebę szkolenia użytkownika.

Przycisk z dodanym ControlTipText
Color (Kolor)

Nie jest to tak naprawdę jeden atrybut, ale dwa. ForeColor oznacza kolor tekstu na kontrolce. BackColor decyduje o kolorze samej kontrolki. Kolor możemy wybrać z palety:

Powyższa paleta jest dość ograniczona, można więc wpisać też kod RGB (np. kod &H00FFFFFF& to biały).

Enabled (Włączony)

Atrybut decyduje czy dana kontrolka działa od chwili uruchomienia formularza. Zmieniając ten argument w kodzie, możemy wyłączyć przyciski, które nie mogą być w danym momencie uruchamiane. Np. przycisk „wyślij” włączymy dopiero, kiedy użytkownik wpisze wszystkie dane.

Przykład włączonych i wyłączonych kontrolek

Oczywiście wszystkie zaprogramowane zdarzenia dalej istnieją w pliku, jednak nic nie zostanie uruchomione, póki nie zmienimy Enabled na True.

Font

Z reguły zostawiamy ten atrybut w spokoju. Czasem możemy jednak chcieć uwypuklić jakiś kluczowy napis.

Modyfikując czcionkę pewne rzeczy zostały podkreślone
Picture (Obraz)

Istnieje dedykowana kontrolka służąca do wyświetlania obrazu. Innym kontrolkom możemy jednak też przypisywać obrazki, żeby uatrakcyjnić formularz. Np. zamiast napisu „Dalej” możemy stawić strzałkę w prawą stronę.

TabIndex

Kolejny atrybut ułatwiający korzystanie z arkusza, dzięki niemu niepotrzebna staje się myszka. Decyduje, które kolejno kontrolki będą się zaznaczać po naciśnięci przycisku TAB. Kolejno dodawane do formularza kontrolki mają w tym atrybucie numer 1, 2, 3 itd.

Prawidłowo ustawione TabIndex

W bardziej skomplikowanych formularzach będziemy dodawali kontrolki w kolejności innej niż będą wypełniane. Powinno się wtedy na koniec poprawić wartości tego atrybutu.

Height, Width (Wysokość, Szerokość)

Te dwa atrybuty określają wysokość i szerokość kontrolki. Z reguły ustawiamy je przy pomocy myszki w edytorze graficznym. Czasem jednak chcemy to zrobić precyzyjnie, aby zwiększyć estetykę. Można też zmieniać te atrybuty podczas działania programu.

Top, Left (Góra, Lewa)

Oznaczają odległość lewego, górnego rogu kontrolki od lewego, górnego rogu formularza. Kontrolka przesunięta maksymalnie w ten róg będzie miała tutaj wartość 0,0.

Rozmiary i położenie obrazów zmienia się dynamicznie, żeby powiększyć wskazany.

Atrybut domyślny

Każda klasa w modelu obiektowym może mieć atrybut domyślny. Każda kontrolka taki ma. Najczęściej jest to atrybut Value. Nie musimy więc pisać:

wystarczy

Na koniec

Muszę jeszcze raz przypomnieć, że większość argumentów można zmieniać w trakcie wykonywania programu. Możemy więc włączać/wyłączać przyciski, kolorować pola, które mają nieprawidłowe dane itp.

Projektując formularz ustalamy tylko jego początkową postać. W poniższym formularzu przycisk goni myszkę a na nagłówku pojawia się aktualna godzina.

Realizuje się to kilkoma liniami kodu:

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *