Zegarek
Transkrypt
Zegarek
VB dla dużych i małych Zadanie10_4 autor: Janusz Białowąs 90 min Zegar OPIS ZADANIA Zegar to zadanie polegające na utworzeniu prostej aplikacji pozwalającej na wyświetlenie aktualnego czasu, dnia tygodnia czy daty wraz informacją, który to dzień roku. W programie zostanie wykorzystana także kontrolka NotifyIcon, pozwalająca na umieszczenie ikony aplikacji w zasobniku systemowym oraz menu kontekstowe. Celem zadania jest poznanie nowych formantów VS .Net oraz doskonalenie umiejętności programowania zdarzeniowego. EFEKT KOŃCOWY Efektem końcowym zadania jest aplikacja przedstawiona na ilustracji poniżej. Pozwala ona sprawdzić aktualną datę oraz czas. - Zadanie wymaga użycia pliku zawierającego ikonę aplikacji, np. pliku zagar.ico dołączonego do scenariusza zadania. REALIZACJA ZADANIA Wykonując to zadanie, wykorzystasz kontrolkę Timer oraz metody klasy Date do uzyskania informacji o aktualnej dacie i czasie pobranym z zegara systemowego. Dodatkowo wykorzystasz formanty NotifyIcon oraz ContextMenu, by umieścić ikonę programu w zasobniku systemowym oraz przypisać do niej menu kontekstowe, pozwalające na obsługę aplikacji. Podczas realizacji zadania skoncentruj się na sposobie wykorzystania nowo poznanych kontrolek. Uwaga: W kolejnych krokach scenariusza nowo dodany kod oznaczony został czcionką pogrubioną. Niepogrubione linie kodu mają służyć wyłącznie do oznaczenia miejsca, w którym należy wpisać nowy kod. Algorytmika i programowanie 1 VB dla dużych i małych autor: Janusz Białowąs Krok 1: Tworzenie projektu formularza 1. Utwórz nowy projekt aplikacji Windows o nazwie Zegarek, w folderze wskazanym przez nauczyciela. 2. Ustaw właściwość formularza Text na Zegarek. 3. Na formularzu umieść kontrolki widoczne na rysunku powyżej: trzy przyciski typu RadioButton, dwa przyciski typu Button oraz pole etykiety (Label). Dla przycisków typu RadioButton ustaw właściwość Apperarance na Button. Nazwy kontrolek oraz ich właściwość Text zostały opisane w tabeli zamieszczonej poniżej: Typ kontrolki Nazwa kontrolki Właściwość Text kontrolki Label lblZegar „” RadioButton rbnCzas Godzina RadioButton rbnData Data RadioButton rbnDzien Dzień tygodnia Button btnUkryj Ukryj zegar Button btnKoniec Wyjście 4. Dodaj do formularza kontrolkę Timer; zostanie ona umieszczona w obszarze pod projektem formularza jako niewidoczny obiekt kontrolny. Krok 2: Dodanie procedur wyświetlających czas, datę i dzień tygodnia 1. Kliknij dwukrotnie ikonę kontrolki Timer1, by przejść do edytora kodu i procedury obsługi zdarzenia Tick dla tego formantu. Algorytmika i programowanie 2 VB dla dużych i małych autor: Janusz Białowąs Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick End Sub 2. Wyświetl w etykiecie lblZegar aktualny czas systemowy. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick lblZegar.Text = Date.Now.ToLongTimeString 3. Kliknij dwukrotnie przycisk Godzina, aby przejść do edytora kodu i procedury obsługi zdarzenia zmiany wartości tej kontrolki. Private Sub rbnGodzina_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbnGodzina.CheckedChanged End Sub 4. Włącz kontrolkę Timer1 oraz wywołaj procedurę obsługi zdarzenia Tick. Pamiętaj o podaniu domyślnych parametrów sender oraz e, stosowanych w procedurach obsługi zdarzeń. Private Sub rbnGodzina_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbnGodzina.CheckedChanged Timer1.Enabled = True Timer1_Tick(sender, e) 5. Kliknij dwukrotnie przycisk Data, aby przejść do edytora kodu i procedury obsługi zdarzenia zmiany wartości tej kontrolki. Private Sub rbnData_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbnData.CheckedChanged End Sub 6. Wyłącz kontrolkę Timer1, która wyświetla aktualną datę systemową oraz informację, który to jest dzień roku. Private Sub rbnData_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbnData.CheckedChanged Timer1.Enabled = False lblZegar.Text = Date.Now.ToLongDateString & vbCrLf & Date.Now.DayOfYear & " dzień roku" 7. Kliknij dwukrotnie przycisk Dzień tygodnia, aby przejść do edytora kodu i procedury obsługi zdarzenia zmiany wartości tej kontrolki. Private Sub rbnDzien_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbnDzien.CheckedChanged End Sub 8. Zadeklaruj zmienne pomocnicze oraz odczytaj numer dnia tygodnia. Private Sub rbnDzien_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbnDzien.CheckedChanged Algorytmika i programowanie 3 VB dla dużych i małych autor: Janusz Białowąs Dim nrDnia As Byte Dim dzien As String nrDnia = Date.Now.DayOfWeek 9. Zamień numer dnia tygodnia na nazwę dnia za pomocą instrukcji Select Case. Dim dzien As String nrDnia = Date.Now.DayOfWeek Select Case nrDnia Case 0 dzien = "niedziela" Case 1 dzien = "poniedziałek" Case 2 dzien = "wtorek" Case 3 dzien = "środa" Case 4 dzien = "czwartek" Case 5 dzien = "piątek" Case 6 dzien = "sobota" End Select 10. Wyłącz kontrolkę Timer1 i wyświetl dzień tygodnia na etykiecie. dzien = "sobota" End Select Timer1.Enabled = False lblZegar.Text = dzien 11. Kliknij dwukrotnie przycisk Koniec, aby przejść do edytora kodu i procedury obsługi zdarzenia kliknięcia tej kontrolki. Private Sub btnKoniec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKoniec.Click End Sub 12. Zamknij formularz. Private Sub btnKoniec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKoniec.Click Close() 13. Kliknij dwukrotnie przycisk Ukryj zegar, aby przejść do edytora kodu i procedury obsługi zdarzenia kliknięcia tej kontrolki. Private Sub btnUkryj_Click(ByVal sender System.EventArgs) Handles btnUkryj.Click As System.Object, ByVal e As End Sub 14. Ukryj formularz. Algorytmika i programowanie 4 VB dla dużych i małych Private Sub btnUkryj_Click(ByVal sender System.EventArgs) Handles btnUkryj.Click Me.Hide() autor: Janusz Białowąs As System.Object, ByVal e As Krok 3: Obsługa kontrolek NotifyIcon oraz ContextMenu. 1. Dodaj do formularza kontrolki NotifyIcon oraz ContextMenu. Nazwij formanty nicoZegar oraz cmnuIkona. 2. Ustaw właściwość ConextMenu kontrolki NotifyIcona na cmnuIkona. Algorytmika i programowanie 5 VB dla dużych i małych autor: Janusz Białowąs 3. Dodaj ikonę do kontrolki NotifyIcon poprzez właściwość Icon. 4. Kliknij ikonę kontrolki cmnuIkona i dodaj menu kontekstowe wg rysunku poniżej. Algorytmika i programowanie 6 VB dla dużych i małych autor: Janusz Białowąs 5. Kliknij dwukrotnie polecenie menu Pokaż zegar, aby przejść do edytora kodu i procedury obsługi zdarzenia kliknięcia tej kontrolki. Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click End Sub 6. Wpisz polecenie pokazujące formularz. Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click Me.Show() 7. Kliknij dwukrotnie polecenie menu Pokaż zegar, aby przejść do edytora kodu i procedury obsługi zdarzenia kliknięcia tej kontrolki. Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click End Sub 8. Wpisz polecenie pokazujące formularz. Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click Close 9. Kliknij dwukrotnie polecenie menu O programie, aby przejść do edytora kodu i procedury obsługi zdarzenia kliknięcia tej kontrolki. Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click End Sub 10. Wyświetl informacje o programie, wykorzystując polecenie MessageBox. Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click MessageBox.Show("Zegarek wersja 1.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information) Krok 4: Testowanie aplikacji 1. Uruchom aplikację. 2. Sprawdź, czy program wyświetla informacje o godzinie, dacie i dniu tygodnia. 3. Sprawdź, jak zachowuje się program po wciśnięciu przycisku Ukryj zegar oraz czy poprawnie funkcjonuje menu kontekstowe przypisane do ikony aplikacji. Algorytmika i programowanie 7