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.