UKO Użytkowanie Komputerów
Visual Basic Lab 3
Projekt FazyKsiężyca daje okazję do zapoznania się z następującymi możliwościami Visual Basica:
używanie wielu form równocześnie;
korzystanie z pól wyboru;
korzystanie z pól opcji;
wypisywanie komunikatu o błędzie, jeśli użytkownik nie wprowadzi wymaganych danych;
dodawanie dodatkowych przycisków opcji;
użycie ramek;
skrócenie kodu, w przypadku, gdy podobny kod stosuje się do podobnych obiektów (tablica kontrolek);
Krok 1.
Projektujemy formę, pozwalającą użytkownikowi wybrać tryb wyświetlania faz Księżyca.
(a) (b)
Rys. 1. Forma pozwalająca wybrać tryb wyświetlania obrazków faz Księżyca:
(a) przed rozpoczęciem pracy; (b) po dokonaniu wyboru.
Opis kontrolek formy z Rys. 1.
Kontrolka, właściwość |
|
Wartość |
|
|
|
Forma, Name |
|
frmWybierz |
Forma, Caption |
|
Wybierz Fazę |
Etykieta, Name |
|
etkFazyKsiężyca |
Etykieta, BorderStyle |
|
1 - Fixed Single |
Etykieta, Caption |
|
Fazy Księżyca |
Przycisk opcji nr 1, Name |
|
opcPolaWyboru |
Przycisk opcji nr 1, Caption |
|
Pola &wyboru |
Przycisk opcji nr 2, Name |
|
opcPrzyciskiOpcji |
Przycisk opcji nr 2, Caption |
|
Przyciski &opcji |
Przycisk poleceń nr 1, Name |
|
plcWybór |
Przycisk poleceń nr 1, Caption |
|
Kliknij, gdy będziesz gotów! |
Przycisk poleceń nr 2, Name |
|
plcKoniec |
Przycisk poleceń nr 2, Caption |
|
&Koniec |
Kod pierwszej formy (startowej)
01 Private Sub Form_Load()
02 'Anuluj wybór wszystkich przycisków opcji
03 opcPolaWyboru = False
04 opcPrzyciskiOpcji = False
05 End Sub
06
07 Private Sub plcKoniec_Click()
08 'Zakończ działanie programu
09 Beep
10 End
11 End Sub
12
13 Private Sub plcWybór_Click()
14 'Sprawdź, czy nie wystąpił błąd,
15 ' a następnie wyświetl odpowiednią formę,
16 ' zgodnie z wyborem użytkownika
17
18 Dim intOdp As Integer 'przechowuje wartość
19 'zwracaną z okna komunikatu
20 If ((opcPolaWyboru.Value = False) _
21 And (opcPrzyciskiOpcji.Value = False)) Then
22 intOdp = MsgBox("Powinieneś wybrać jakąś opcję" _
23 & ", spróbuj jeszcze raz!", _
24 vbCritical, _
25 "Błąd!")
26 ElseIf (opcPolaWyboru.Value = True) Then
27 'Wyświetl fazy Księżyca z polami wyboru
28 frmFazyPolaWyboru.Show
29 Else 'opcPrzyciskOpcji.Value = True
30 'Wyświetl fazy Księżyca z polami opcji
31 frmFazyPrzyciskiOpcji.Show
32 End If
33 End Sub
Linie 1-5 określają sposób wyświetlania pierwszej formy. Linie 3 i 4 czyszczą wybór opcji, więc użytkownik musi dokonać wyboru, gdyż w przeciwnym przypadku zostanie zgłoszony błąd (linie 18-25) Linie 28 lub 31 realizują wybór użytkownika.
Polecenia frmFazyPolaWyboru.Show i frmFazyPrzyciskiOpcji.Show to metody form frmFazyPolaWyboru i frmFazyPrzyciskiOpcji wyświetlania Faz Księżyca albo w wersji z polami wyboru albo w wersji z przyciskami opcji.
Krok 2.
Projektujemy dwie formy o identycznych tytułach (ale o różnych nazwach), pozwalające użytkownikowi wyświetlić nawet wszystkie fazy Księżyca (w zależności od liczby zaznaczonych pól wyboru) lub tylko jedną fazę Księżyca (w zależności od wybranej opcji), ale za to w wersji dużej lub małej (w zależności od wybranej opcji w ramce).
(a) (b)
Rys. 2. Propozycje projektowe form pozwalające użytkownikowi:
(a) wyświetlić każdą fazę Księżyca (wersja z polami wyboru);
(b) wyświetlić jednocześnie tylko jedną fazę Księżyca z możliwością wyboru dużego lub małego obrazka.
Opis kontrolek formy z Rys. 2a.
Kontrolka, właściwość |
|
Wartość |
|
|
|
Forma, Name |
|
frmFazyPolaWyboru |
Forma, Caption |
|
Fazy Księżyca |
Pole wyboru nr 1, Name |
|
pwbFaza |
Pole wyboru nr 1, Caption |
|
Faza &1 |
Pole wyboru nr 2, Name |
|
pwbFaza |
Pole wyboru nr 2, Caption |
|
Faza &2 |
Pole wyboru nr 3, Name |
|
pwbFaza |
Pole wyboru nr 3, Caption |
|
Faza &3 |
Pole wyboru nr 4, Name |
|
pwbFaza |
Pole wyboru nr 4, Caption |
|
Faza &4 |
Obraz nr 1, Name |
|
obrFaza |
Obraz nr 1, Picture |
|
Ścieżka dostępu |
Obraz nr 1, Visible |
|
False |
Obraz nr 2, Name |
|
obrFaza |
Obraz nr 2, Picture |
|
Ścieżka dostępu |
Obraz nr 2, Visible |
|
False |
Obraz nr 3, Name |
|
obrFaza |
Obraz nr 3, Picture |
|
Ścieżka dostępu |
Obraz nr 3, Visible |
|
False |
Obraz nr 4, Name |
|
obrFaza |
Obraz nr 4, Picture |
|
Ścieżka dostępu |
Obraz nr 4, Visible |
|
False |
Przycisk poleceń, Name |
|
plcWróć |
Przycisk poleceń, Caption |
|
&Wróć do wyboru opcji wyboru! |
Opis kontrolek formy z Rys. 2b.
Kontrolka, właściwość |
|
Wartość |
|
|
|
Forma, Name |
|
frmFazyPrzyciskiOpcji |
Forma, Caption |
|
Fazy Księżyca |
Przycisk opcji nr 1, Caption |
|
Faza &1 |
Przycisk opcji nr 2, Name |
|
opcFaza |
Przycisk opcji nr 2, Caption |
|
Faza &2 |
Przycisk opcji nr 3, Name |
|
opcFaza |
Przycisk opcji nr 3, Caption |
|
Faza &3 |
Przycisk opcji nr 4, Name |
|
opcFaza |
Przycisk opcji nr 4, Caption |
|
Faza &4 |
Ramka, Name |
|
rmkRozmiar |
Ramka, Caption |
|
Wielkość Obrazka |
Ramka, przycisk opcji nr 1, Name |
|
opcDuży |
Ramka, przycisk opcji nr 1, Caption |
|
&Duży |
Ramka, przycisk opcji nr 2, Name |
|
opcMały |
Ramka, przycisk opcji nr 2, Caption |
|
&Mały |
Obraz nr 1, Name |
|
obrFaza |
Obraz nr 1, Picture |
|
Ścieżka dostępu |
Obraz nr 1, Stretch |
|
True |
Obraz nr 2, Name |
|
obrFaza |
Obraz nr 2, Picture |
|
Ścieżka dostępu |
Obraz nr 2, Stretch |
|
True |
Obraz nr 3, Name |
|
obrFaza |
Obraz nr 3, Picture |
|
ścieżka dostępu |
Obraz nr 3, Stretch |
|
True |
Obraz nr 4, Name |
|
obrFaza |
Obraz nr 4, Picture |
|
ścieżka dostępu |
Obraz nr 4, Stretch |
|
True |
Przycisk poleceń, Name |
|
plcWróć |
Przycisk poleceń, Caption |
|
&Wróć do wyboru opcji wyboru! |
Kod formy frmFazyPolaWyboru
01 Private Sub pwbFaza_Click(Index As Integer)
02 'Wyświetl obrazek, jeśli pole wyboru jest wybrane
03 If pwbFaza.Item(Index).Value = 1 Then
04 obrFaza.Item(Index).Visible = True
05 Else
06 obrFaza.Item(Index).Visible = False
07 End If
08 End Sub
09
10 Private Sub plcWróć_Click()
11 'Wróć do pierwszej formy
12 frmFazyPolaWyboru.Hide
13 frmWybierz.Show
14 End Sub
Wszystkie pola wyboru są umieszczone w jednej tablicy pwbFaza, a dostęp do każdego z nich odbywa się poprzez określenie odpowiedniego indeksu Index. Osiągamy ten stan, nazywając wszystkie pola wyboru (atrybut Name) jednakową nazwą pwbFaza, a program niemal automatycznie umieszcza je w tablicy. Obrazek jest wyświetlany tylko wtedy, jeśli właściwość obrazka Visible ma wartość True.
Przycisk plcWróć pozwala na powrót do poprzedniej formy frmWybierz.
Kod formy frmFazyPrzyciskiOpcji
01 Private Sub Form_Load()
02 'Przy ładowaniu formy wybierz opcję Mały
03 opcMały.Value = True
04 End Sub
05
06 Private Sub opcFaza_Click(Index As Integer)
07 'Wyświetl wybrany obrazek
08 Select Case Index
09 Case 0
10 obrFaza.Picture = frmFazyPolaWyboru.obrFaza.Item(0).Picture
11 Case 1
12 obrFaza.Picture = frmFazyPolaWyboru.obrFaza.Item(1).Picture
13 Case 2
14 obrFaza.Picture = frmFazyPolaWyboru.obrFaza.Item(2).Picture
15 Case 3
16 obrFaza.Picture = frmFazyPolaWyboru.obrFaza.Item(3).Picture
17 End Select
18 End Sub
19
20 Private Sub opcMały_Click()
21 'Zabraniamy rozciągania
22 obrFaza.Stretch = False
23 End Sub
24
25 Private Sub opcDuży_Click()
26 'Ustal rozmiary dużego obrazka
27 obrFaza.Width = 2340
28 obrFaza.Height = 2490
29 'Pozwól na zwiększenie wymiaru obrazka
30 obrFaza.Stretch = True
31 End Sub
32
33 Private Sub plcWróć_Click()
34 'Wróć do pierwszej formy
35 frmFazyPrzyciskiOpcji.Hide
36 frmWybierz.Show
37 End Sub
W powyższym kodzie wyboru opcji zademonstrowano (ze względów dydaktycznych) użycie techniki Case. Jako wartość domyślną wybieramy opcję Mały. Rozmiar Duży osiągamy określając rozmiary okna obiektu Image i pozwalając na rozciąganie obrazka.. Poniższe rysunki demonstrują otrzymany wynik.
(a) (b)
Rys. 3. Działanie opcji dodatkowych:
(a) wyświetlanie małego obrazka; (b) wyświetlanie dużego obrazka.
UKO Użytkowanie Komputerów, Lab 3
Visual Basic Lab 3.doc 5/6