Każda podróż zaczyna się w jakimś miejscu. Autor ma nadzieję

Transkrypt

Każda podróż zaczyna się w jakimś miejscu. Autor ma nadzieję
Każda podróż zaczyna się w jakimś miejscu. Autor ma nadzieję, prezentowany cykl sześciu
artykułów pozwoli każdemu z czytelników (niezależnie od posiadanej wiedzy na temat
programowania), rozpocząć podróż do ciekawej i specjalistycznej dziedziny, jaką jest programowanie.
Pisząc ten cykl artykułów, będę miał na uwadze, że czytelnik może należeć do jednej z trzech grup:
osoby nie posiadające doświadczenia w programowaniu, osoby posiadające programowanie w innych
językach oraz osoby – profesjonaliści tworzący oprogramowanie przy pomocy języka Visual Basic.
Mam nadzieję, że każda z wymienionych grup znajdzie w każdym z kolejnych artykułów coś
ciekawego. Szczególnie polecam lekturę artykułu programującym w języku Visual Basic 6, mając
nadzieję, że każdy kolejny artykuł zachęci Państwa do „przesiadki” na Visual Basic .NET.
Nasz cykl artykułów zacznijmy od wyjaśnienia podstawowych pojęć, jakie powinien rozumieć
każdy z czytelników, niezależnie od wybranej platformy, narzędzia czy też języków programowania.
Pisanie aplikacji i programów w Visual Basic .NET najczęściej polega na wykorzystywaniu
odpowiednich obiektów oraz ich metod, własności oraz zdarzeń. Obiekty te to jednostki (lub „klocki”), z
jakich buduje się aplikacje. Typowym przykładem obiektu może być okno aplikacji, przycisk czy też
pole tekstowe.
Obiekty, własności, metody i zdarzenia
Wykorzystanie danego obiektu polega na odpowiednim wykorzystaniu w kodzie programu
jego własności i metod oraz oprogramowaniu poszczególnych eksponowanych przez ten obiekt
zdarzeń. Pojęcia obiektu oraz jego własności, metod i zdarzeń najprościej wytłumaczyć można
porównując obiekt z konkretnym – fizycznym przedmiotem – np. samochodem. Samochód posiada
szereg cech takich jak np. kolor karoserii, typ nadwozia, ilość drzwi czy też ilość biegów. Podobnie
każdy z obiektów dysponuje z góry zdefiniowaną listą cech – nazywanych własnościami. Spójrzmy na
przykład okna – formularza – podstawowego obiektu, z którego złożone są aplikacje Windows. Okno
również posiada własności – np. napis na belce tytułowej, możliwość zmiany wielkości okna przez
użytkownika, czy też kolor tła. Porównajmy teraz obiekt oraz samochód pod względem działania.
Oprócz cech opisujących samochód, posiada on również określone możliwości – np. hamowanie,
przyspieszanie, zmiana biegu czy też włączanie migaczy lub świateł pozycyjnych. Obiekt formularza
również posiada listę określonych działań, które może wykonać – np. zamknięcie, schowanie,
minimalizacja i maksymalizacja czy też zmiana położenia na ekranie. Aby porównanie było kompletne
musimy również spojrzeć na inny aspekt funkcjonowania obiektu i samochodu. W określonych
sytuacjach zarówno obiekt jak i samochód przekazują do otoczenia informacje sygnalizujące
określony stan. Przykładowy samochód może sygnalizować np. brak paliwa, konieczność przeglądu,
czy też otwarcie drzwi. Podobnie obiekt może przekazywać do otoczenia informacje dotyczące zajścia
określonej sytuacji – np. przesunięto formę, zminimalizowano formę czy też przełączenie się w
aplikacji na dane okno.
Podsumujmy wiadomości dotyczące obiektów:
Własność (ang. property)
Metoda (ang. method)
Zdarzenia (ang. events)
Cecha
charakterystyczna
obiektu
np:
wyświetlany napis, kolor, wielkość, czy położenie
Działania, jakie można wykonać dany obiekt: np
pokaż, schowaj, zamknij, otwórz
Działania, jakie zachodzą na danym obiekcie.
Obiekt przekazuje informacje o nich do otoczenia
np. zamknięto formę, wyświetlono formę,
użytkownik przełączył się w aplikacji na daną
formę
Spróbuj potraktować swoją osobą jako przykład obiektu. Zastanów się, jakie aspekty Twojej osoby
mogą być własnością. Jakimi metodami dysponujesz? W jaki sposób współdziałasz z otoczeniem?
Jak funkcjonowałbyś w prawdziwym świecie, gdybyś nie rozpoznawał zdarzeń? Jak myślisz, czy
każdy z czytelników doszedł do tych samych wniosków?
Zdarzenia i ich rola w aplikacji
Jak napisałem powyżej każdy z obiektów dysponuje określonym zestawem zdarzeń. Dzięki ich
istnieniu możliwe jest tworzenie programu, który reaguje odpowiednio na np. działania użytkownika.
To właśnie on jest główną przyczyną zachodzenia zdarzeń w aplikacji. Tworzenie prostej aplikacji
polegało więc będzie na stworzeniu odpowiedniego interfejsu dla użytkownika oraz odpowiednim
oprogramowaniu obiektów, z których interfejs ten jest zbudowany. Z tego też powodu programowanie
w Visual Basic .NET nazywane jest programowaniem opartym o zdarzenia (ang. event-driven).
Czytelnicy posiadający doświadczenie w programowaniu strukturalnym dostrzegą zapewne siłę i
naturalność takiej koncepcji programowania. Tworząc program w Visual Basic .NET nie trzeba już
tworzyć odpowiednich pętli, czy głównego programu oczekującego na dokonanie przez użytkownika
określonego wyboru opcji czy też funkcji programu. To system operacyjny dba w tym momencie o
detekcję określonych sytuacji (np. naciśnięcie przycisku) i przekazywanie ich do odpowiedniej
aplikacji, zawierającego obiekt, na którym zdarzenie to zaszło. Czy zdarzenia pochodzą tylko wskutek
działań użytkowników? Oczywiście działania użytkownika takie jak naciśniecie klawisza klawiatury czy
kliknięcie lub poruszenie wskaźnikiem myszki są najczęstszym źródłem zdarzeń. Oprócz użytkownika
źródłem zdarzeń może jednak być również np. sam system operacyjny czy też obiekt (np. kontrolka
Timer, która generuje zdarzenie Tick co określony interwał czasu). W momencie zajścia danego
zdarzenia, sprawdzane jest istnienie kodu – procedury jego obsługi. Jeśli procedura ta istnieje to
zostanie wykonana – stanowiąc reakcję aplikacji na dane zdarzenie.
Klasa i obiekty
Wiemy już, że każdy z obiektów posiada określoną charakterystykę. Czy dwa dowolne obiekty są do
siebie jednak podobne? Czy dysponują taką samą charakterystyką, opisem działaniem? Pozornie
wydaje się że nie. Jak można np. porównać okno aplikacji oraz przycisk? Oba obiekty mają co prawda
kilka cech wspólnych np. kolor tła, wielkość, ale czy dysponują tymi sami metodami, czy rozpoznają te
same zdarzenia? Porównajmy teraz dwa przyciski na formularzu. Każdy z nich stanowi osobny i
niezależny obiekt. Każdy z przycisków może mieć różny kolor tła, wielkość, położenie na formularzu
czy też wyświetlany napis. Czy zestaw własności, metod i zdarzeń jakimi dysponuje każdy z
przycisków jest jednak różny? Jeśli nie to dlaczego? Aby odpowiedzieć na to pytanie należy poznać
pojęcie klasy.
Pojęcie klasy i obiektu, zwłaszcza przez początkujących programistów, niesłusznie używane
jest zamiennie. Klasa stanowi szablon, wzór, projekt czy też symboliczną reprezentację niezbędną do
utworzenia obiektu. Dwa obiekty – przyciski pod względem opisujących ich cech i funkcjonalności są
więc tożsame, ponieważ utworzone są w oparciu o tę samą klasę. Nieporozumieniem jest więc
poruszanie tematyki związanej z obiektami w oderwaniu od klas, nie powinno się również stosować
obu terminów wymiennie. Obiekt stanowi więc konkretną reprezentację danej klasy. Ponieważ każdy z
obiektów jest wzajemnie niezależny, oraz każdy tworzony jest w oparciu o klasę o obiekcie często
mówi się jako o instancji danej klasy. Przykładowo każdy z formularzy jest więc instancją klasy Form,
a każdy z przycisków stanowi instancję klasy Button. Również każda z kontrolek, jakie odnaleźć
można w oknie przybornika (Toolbox) i przy pomocy których będziesz tworzył interfejs aplikacji
tworzona jest w oparciu o określone klasy.
Praca z Visual Studio .NET
Dalsza część artykułu odnosi się do środowiska Visual Studio .NET. Musisz więc nauczyć się je
uruchamiać oraz tworzyć nowy projekt.
Aby uruchomić Visual Studio .NET:
Kliknij przycisk Start
Z menu Programy wybierz Microsoft Visual Studio .NET, a następnie w rozwiniętym podmenu
kliknij na Microsoft Visual Studio .NET
Po otwarciu środowiska zostanie wyświetlone okno zawierające Stronę startową (Start page),
pozwalającą na tworzenie nowych i otwieranie istniejących projektów:
Spróbujmy teraz utworzyć pierwszy projekt.
Kliknij przycisk New Project, aby otworzyć poniższe okno:
Z listy Projects Types wskaż typ projektu, jaki chcesz utworzyć – w tym przypadku Visual Basic
Projects
Z dostępnych w prawej części szablonów (Templates) wybierz szablon aplikacji Windows
(Windows Application)
Korzystając z pól tekstowych Name i Location określ nazwę oraz lokalizację projektu
Naciśnie przycisk OK, aby zatwierdzić utworzenie nowego projektu.
Po naciśnięciu przycisku OK okno New Project zostanie zamknięte, a Visual Studio .NET otworzy
projekt formularza Form1.
Formularze
Formularze to podstawowy obiekty, z jakich tworzy się klasyczne aplikacje Windows. Każdy z
formularzy stanowi osobne okno lub dialog, jakim może dysponować aplikacja. Jeśli rozpoczniesz
projekt od wyboru szablonu aplikacji Windows, to projekt ten będzie zawierał domyślnie jedno okno
formularza. Każdy formularz, o ile nie zostanie to zmienione przy pomocy jego własności, zawiera
charakterystyczne elementy takie jak: belka tytułowa, control-box oraz położone w przyciski
maksymalizacji, minimalizacji oraz zamknięcia okna.
Jak z pewnością zauważyłeś większość aplikacji zawiera więcej niż jedno okno. Aby do dodać
do projektu nowe okno możesz:
Skorzystać z okna Solution Explorer (Eksplorator rozwiązań)
Jeśli okno Eksploratora Rozwiązań jest zamknięte –
otwórz je wybierając w Visual Studio .NET z menu
View polecenie Solution Explorer
W oknie Solution Explorer
przyciskiem na nazwie projektu
Wybierz opcję Add
Z wyświetlonego podmenu wybierz polecenie Add
Windows Form
kliknij
prawym
rys. 1 – wyświetlanie okna Add New Item
przy pomocy okna Solution Explorer
Skorzystać z menu Project i polecenia Add Windows Form
W Visual Studio .NET z menu Project wybierz polecenie Add
Windows Form
rys. 2 – wyświetlanie okna Add
New Item przy pomocy menu
Project
Oba działania spowodują otwarcie okna Add New Item, w którym następnie należy wybrać szablon
formularza Windows.
W wyświetlonym oknie Add New Item w panelu
Templates (Szablony) kliknij na szablonie Windows
Form
W polu Name wprowadź nazwę dla pliku formularza
Kliknij przycisk Open, aby zatwierdzić
formularza do projektu
dodanie
Zmiana własności
Tworzenie interfejsu użytkownika często wymagać będzie dostosowania poszczególnych własności
obiektu (np. formularza). Własności te mogą być modyfikowane:
w czasie projektowania interfejsu użytkownika – przy pomocy okna Properties (własności)
w czasie działania aplikacji – poprzez zmianę własności przy pomocy kodu
Po
uruchomieniu
aplikacji
własności obiektów zawsze są inicjowane
wartościami, jakie zostały ustawione przy
pomocy okna Properties.
Oznacza to, że jeśli kolor tła
formularza został zmieniony w oknie
Properties (własność BackColor), po
uruchomieniu
aplikacji
kolor
został
zmieniony poprzez kod i następnie
działanie aplikacji zostało przerwane, to
przy kolejnym uruchomieniu aplikacji
kolorem tła formularza będzie kolor
wybrany przy pomocy okna Properties.
Praca z oknem Properties Window
Jeśli okno to jest zamknięte możesz je
wyświetlić korzystając z menu View
oraz polecenia Properties Window.
W oknie projektowania formularza
(Design), kliknij formularz lub obiekt,
którego własności chcesz zmienić.
Uwaga: zwróć uwagę, że okno własności
po kliknięciu na obiekcie w górnej
części
zawiera
listę
rozwijaną
wyświetlającą nazwę i klasę bieżąco
wybranego obiektu. Lista ta pozwala
szybko zmienić obiekt na inny oraz
upewnić się, że zmieniasz własności
wybranego obiektu
Gdy okno Properties prezentuje już własności wybranego obiektu możesz kliknąć na danej
własności oraz wybrać lub wprowadzić jej nową wartość.
Pracę z listą własności ułatwiają przyciski Alphabetic oraz Categorized. Pozwalają one na
zmianę kolejności wyświetlanych własności. Przycisk Alphabetic powoduje, że własności zostaną
wyświetlone alfabetycznie, natomiast przycisk Categorized spowoduje wyświetlenie własności
zgodnie z kolejnością kategorii pod względem znaczenia.
Uwaga: zapamiętaj, że skutek zmiany niektórych własności nie jest widoczny w trybie
projektowania aplikacji. Niektóre ze zmian dokonanych we własnościach obiektu będą widoczne
dopiero po uruchomieniu aplikacji (np. własność formularza StartPosition, która odpowiada za
położenie formularza na ekranie)
Po wprowadzeniu stosownych zmian możesz uruchomić aplikację w Visual Studio .NET
korzystając z przycisku Start na pasku narzędzi lub polecenia Start w menu Debug.
Ćwiczenie
1. Uruchom Visual Studio .NET
2. Utwórz nowy projekt aplikacji Windows korzystając z szablonu Windows Application
3. Jeśli okno Properties jest zamknięte otwórz je korzystając z polecenia Properties Window w
menu View
4. Kliknij na formularzu Form1, aby stał się on aktywnym obiektem dla okna Properties
5. W oknie Properties kliknij na przycisku rozwijającym listę wartości – kolorów – własności
BackColor, wybierz dowolny z kolorów, inny niż domyślny kolor tła formularza.
Zapamiętaj: własność BackColor odpowiada za kolor tła formularza. Własność ta dodatkowo
definiuje domyślny kolor tła dla obiektów, które można umieścić na formularzu (np.
przycisków)
6. W oknie Properties zmień własność Text na napis Pierwszy formularz.
Zapamiętaj: własność Text formularza odpowiada napis widoczny na belce tytułowej okna
7. W oknie Properties zmień własność StartPosition wybierając z listy dostępnych wartości
CenterScreen.
8. Korzystając z przycisku Start na pasku narzędzi lub polecenia Start w menu Debug uruchom
aplikację w środowisku Visual Studio .NET
Własności formularzy
Poniższa tabela prezentuje wykaz niektórych własności jakimi dysponuje obiekt formularza.
Własność
(Name)
Accept Button
CancelButton
ControlBox
FormBorderStyle
MaximizeButton
MinimizeButton
Opis
Nazwa obiektu, dzięki której możesz się do
niego odwołać w kodzie.
Uwaga: zmiana nazwy obiektu formularza
może spowodować konieczność zmiany
obiektu startowego aplikacji. Domyślnie w
szablonie Windows Application obiektem
tym jest Form1
Określa domyślny przycisk akceptacji. Jeśli
formularz jest aktywny i użytkownik naciśnie
klawisz Enter, to będzie to równoznaczne z
kliknięciem na przycisku określonym przez
tę własność.
Określa domyślny przycisk akceptacji. Jeśli
formularz jest aktywny i użytkownik naciśnie
klawisz ESC, to będzie to równoznaczne z
kliknięciem na przycisku określonym przez
tę własność.
Określa czy wyświetlony formularz zawiera
control-box.
Okresla wygląd i działanie obramowania
formularza. Odpowiada za sposób, w jaki
formularz jest wyświetlany, możliwość
zmiany jego wielkości czy wygląd belki
tytułowej i dostępne przyciski fomularza.
Określa
dostępność
przycisku
maksymalizacji formularza.
Określa dostępność przycisku minimalizacji
formularza.
Wartość domyślna
Form1 itp., itd. Domyślnie nazwa
każdego obiektu tworzona jest na
podstawie
nazwy
klasy
na
podstawie,
której
obiekt
jest
tworzony oraz kolejnego numeru
obiektu danej klasy
Brak
Brak
True
Control-box jest wyświetlany
Sizable
–
użytkownik
może
zmieniać wielkość forrmularza
True
Przycisk jest wyświetlany
True
Przycisk jest wyświetlany
Formularz początkowy aplikacji
Jak już wiesz, każda z aplikacji może zawierać dowolną ilość okien. Wiesz też, że szablon
aplikacji Windows – Windows Application – określa, że formularzem, od którego aplikacja zacznie
działanie jest formularz Form1.
Zapamietaj: jeśli korzystając z własności Name zmieniłeś nazwę formularza, to będziesz musiał
również zmienić nazwę początkowego formularza apliakcji, tak aby wskazywała ona na jeden z
formularzy w twoim projekcie
Zmiana formularza początkowego aplikacji
Aby zmienić formularz początkowy aplikacji:
Jeśli okno Solution Explorer jest zamknięte to otwórz je korzystając z menu View i polecenia
Solution Explorer.
W oknie Solution Explorer klilknij prawym przyciskiem na nazwie projektu, a następnie
wyświetlonego menu kontekstowego wybierz polecenie Properties.
Z listy Startup object wybierz nazwę jednego z formularzy, jakie zawiera Twój projekt
Kliknij przycisk OK, aby zatwierdzić zmiany i zamknąć okno własności projektu
Metody
Każdy z formularzy posiada zdefiniowane w klasie metody. Metody te to działania, jakie obiekt – w tym
przypadku formularz – może wykonać. Przykładowe metody formularza opisuje poniższa tabela:
Nazwa metody
CenterToScreen
Close
Hide
Show
Działanie
Centruje formularz na ekranie
Zamyka formularz
Ukrywa formularz – pomimo, że formularz nie jest widoczny na
ekranie, nadal istnieje w pamięci
Pokazuje formularz
Aby w kodzie aplikacji wywołać wybraną metodę formularza możesz użyć następującego kodu:
Me.Metoda([Argumenty])
Gdzie: Me – oznacza obiekt bieżącego formularza zawierający kod, a Metoda jest nazwą metody
formularza, którą chcesz wywołać. Uwaga: Nie zapomnij o okrągłych nawiasach za nazwą metody.
Niektóre metody mogą wymagać do swego działania dodatkowych informacji, które umieściłbyś w
nawiasach (zastanów się np. nad metodą Przesuń – czy nie powinieneś wskazać miejsca docelowego
dla formularza?). Spójrz na poniższy przykład:
Me.CenterToScreen()
Jeśli prezentowany kod zawarty będzie w formularzu Form1, to jego wykonanie spowoduje
przemieszczenie formularza na środek ekranu.
IntelliSense®
Jedną z cech jaką Visual Studio .NET oferuje programistom jest Microsoft IntelliSense®. Pozwala
ona na znacznie szybsze i efektywniejsze tworzenie kodu aplikacji, zwalniając programistę z
konieczności pamięciowego opanowania słów kluczowych języka, wykazu metod i własności każdej z
klas itd. itp. Dzięki IntelliSense® tworzenie kodu w zasadzie przypomina wybieranie konkretnej
metody czy własności z listy dopuszczalnych dla danej klasy możliwości. Aby przekonać się o sile i
przydatności IntelliSense® wykonaj następujące ćwiczenie:
Kliknij dwukrotnie na w oknie projektanta formularza, aby przejść do edycji kodu, jaki zawiera
formularz
Napisz Me, aby odwołać się w kodzie do obiektu formularza
Nie dodając żadnych odstępów za słowem Me dodaj znak kropki (.)
Zwróć uwagę, na wyświetlone okienko. Zawiera ono listę wszystkich metod i własności, jakimi
dysponuje formularz. Ikony, jakie znajdują się w wyświetlonym oknie przed każdą nazwą pozwalają
określić czy jest to metoda czy własność.
W kolejnym odcinku Akademii PC Kuriera rozwinięta zostanie tematyka zdarzeń i ich roli w
programowaniu w Visual Basic .NET. Przedstawione zostaną również dalsze informacje na temat
tworzenia interfejsu użytkownika, pracy z kontrolkami, prawidłowej stylizacji kodu oraz poruszony
zostanie temat zmiennych i ich deklaracji oraz zagadnień związanych z typem danych.