Akademia Techniczno-Rolnicza w Bydgoszczy
Wydział Mechaniczny
Katedra Sterowania i Konstrukcji
Systemy mikrokomputerowe
WSTĘP DO PROGRAMOWANIA
W JĘZYKU VISUAL BASIC
Instrukcja nr 3
Opis działania programu Opcje
Program Opcje pokazuje, jak może wyglądać program dający użytkownikowi możliwość wyboru.
Wizualna implementacja programu Opcje
Otwórz nowy projekt (z menu File wybierz New Project).
Zachowaj formę projektu pod nazwą Opcje.frm. Zachowaj plik projektu pod nazwą Opcje.mak.
Na podstawie tabeli zbuduj formę frmOpcje.
Obiekt |
Cechy |
Ustawienie |
Form |
Name BackColor Caption Height Left Top Width |
frmOpcje &H0000FF00& Opcje 4425 1035 1140 7485 |
Option Button |
Name BackColor Caption Height Left Top Width |
optPoziom1 &H0000FFFF& Poziom &1 495 4080 360 1215 |
Option Button |
Name BackColor Caption Height Left Top Width |
optPoziom2 &H00FF00FF& Poziom &2 495 4080 840 1215 |
Option Button |
Name BackColor Caption Height Left Top Width |
optPoziom3 &H00C0C0C0& Poziom &3 495 4080 1320 1215 |
Check Box |
Name BackColor Caption Height Left Top Width |
chkKolor &H000000FF& &Kolory 495 360 1320 1215 |
Obiekt |
Cechy |
Ustawienie |
Check Box |
Name BackColor Caption Height Left Top Width |
chkMysz &H000000FF& &Mysz 495 360 840 1215 |
Check Box |
Name BackColor Caption Height Left Top Width |
chkDzwiek &H000000FF& &Dźwięk 495 360 360 1215 |
Command Button |
Name Caption Height Left Top Width |
cmdKoniec Ko&niec 495 5880 3360 1215 |
|
Name Alignment Height Left Top Width |
lblWybor 2-Center 1095 600 2400 3495 |
Rys.1 Program Opcje
Wprowadzanie kodu programu Opcje
Wewnątrz obszaru deklaracji formy frmOpcje wpisz następujący kod:
`Wszystkie zmienne muszą być zadeklarowane.
Option Explicit
Do procedury cmdKoniec_Click() formy frmOpcje wpisz kod:
Sub cmdKoniec_Click()
End
End Sub
Uruchomienie programu Opcje
Uruchom program Opcje.
Kliknij przycisk opcji Poziom 1 (wewnątrz przycisku pojawi się kropka).
Kliknij przycisk opcji Poziom 2 (program anuluje wybór przycisku Poziom 1 i wybierze przycisk Poziom 2).
Kliknij przycisk opcji Poziom 3. W odpowiedzi program anuluje wybór opcji Poziom 1 i wybierze opcję Poziom 3.
Kliknij kratkę Dźwięk. W odpowiedzi program umieści wewnątrz kratki znak x.
Kliknij na inne kratki.
Zakończ działanie programu, klikając przycisk Koniec.
Do procedury chkKolor_Click() formy frmOpcje wprowadź następujący kod:
Sub chkKolor_Click()
UpdateLabel
End Sub
Do procedury chkMysz_Click() formy frmOpcje wprowadź następujący kod:
Sub chkMysz_Click()
UpdateLabel
End Sub
Do procedury chkDzwiek_Click() formy frmOpcje wprowadź następujący kod:
Sub chkDzwiek_Click()
UpdateLabel
End Sub
Do procedury optPoziom1_Click() formy frmOpcje wprowadź następujący kod:
Sub optPoziom1_Click()
UpdateLabel
End Sub
Do procedury optPoziom2_Click() formy frmOpcje wprowadź następujący kod:
Sub optPoziom2_Click()
UdateLabel
End Sub
Do procedury optPoziom3_Click() formy frmOpcje wprowadź następujący kod:
Sub optPoziom3_Click()
UpdateLabel
End Sub
Informacje |
Procedura chkKolor_Click() jest wywoływana zawsze, gdy kliknie się na kratkę chkKolor: Sub chkKolor_Click() UpdateLabel End Sub
Kod wewnątrz procedury chkKolor_Click()wywołuje procedurę UpdateLabel().
Procedura chkDzwiek_Click() jest wywoływana zawsze, gdy kliknie się na kratkę chkDzwiek: Sub chkDzwiek_Click() UpdateLabel End Sub
Kod wewnątrz procedury chkDzwiek_Click()wywołuje procedurę UpdateLabel(). Podobnie jak w obu poprzednich przypadkach procedura chkMysz wywołuje procedurę UpdateLabel.
Procedura optPoziom1_Click() jest wywoływana, gdy zostanie wybrany przycisk opcji optPoziom1: Sub optPoziom1_Click() UpdateLabel End Sub
Opcja ta również wywołuje procedurę UpdateLabel. Identyczne działanie ma kod umieszczony wewnątrz procedur optPoziom2_Click() i optPoziom3_Click(). |
Dodawanie nowej procedury
Z menu Window wybierz Project. W odpowiedzi Visual Basic wyświetli okno projektu.
Sprawdź, czy w oknie Project form frmOpcje jest podświetlona i kliknij przycisk View Code znajdujący się w górnej części okna projektu. W odpowiedzi Visual Basic wyświetli okno kodu.
Wybierz z menu View opcje New Procedure. W odpowiedzi Visual Basic wyświetli okno dialogowe New Procedure (rysunek 2).
Rys.2 Okno dialogowe New Procedure
Sprawdź, czy jest wybrany przycisk opcji Sub pola dialogu. Wpisz w polu Name nazwę UpdateLabel (rysunek 2).
Kliknij przycisk OK pola dialogu New Procedure. W odpowiedzi Visual Basic utworzy nową procedurę o nazwie UpdateLabel i wyświetli kod procedury w oknie Code (rysunek 4).
Rys.4 Dodawanie nowej procedury
Wprowadź do nowej procedury następujący kod:
Sub UpdateLabel()
Dim Info
`Dźwięk
If chkDzwiek.Value = 1 Then
Info = „Dźwięk: Włączony”
Else
Info = „Dźwięk: Wyłączony”
End If
`Mysz
If chkMysz.Value = 1 Then
Info = Info + Chr(13) + „Mysz: Włączona”
Else
Info = Info + Chr(13) + „Mysz: Wyłączona”
End If
`Kolor
If chkKolor.Value = 1 Then
Info = Info + Chr(13) + „Kolor: Włączony”
Else
Info = Info + Chr(13) + „Kolor: Wyłączony”
End If
`Poziomy
If optPoziom1.Value = True Then
Info = Info + Chr(13) + „Poziom: 1”
End If
If optPoziom2.Value = True Then
Info = Info + Chr(13) + „Poziom: 2”
End If
If optPoziom3.Value = True Then
Info = Info + Chr(13) + „Poziom: 3”
End If
lblWybor.Caption = Info
End Sub
Zachowaj projekt (z menu File wybierz Save Project). Kliknięcie kratki lub przycisku opcji wywołuje i wykonuje procedurę UpdateLabel(). Procedura ta nie jest związana z konkretnym zdarzeniem (jest wywoływana przez wiele różnych zdarzeń). Procedury tego typu tworzone są przy pomocy opcji New Procedure z menu View.
Pierwszą instrukcją procedury jest deklaracja zmiennej Info:
Dim Info
Słowo Dim oznacza dla Visual Basica, że następne słowo Info jest nazwą zmiennej. W przypadku procedury UpdateLabel jest to zmienna tekstowa, czyli jej pełna deklaracja powinna wyglądać następująco:
Dim Info As String
Visual Basic nie wymusza jednak definiowania typu zmiennej podczas deklaracji. W przypadku naszego programu ma to jednak niewielkie znaczenie.
O ile to możliwe należy korzystać z deklaracji zmienne, sens tego działania ilustruje poniższy przykład:
Czas = 10
Prędkość = 50
Odległość = Czas * Prędkość
lblOdleglosc.Caption = „Odległość = ” + Odległość
Powyższe cztery instrukcje przypisują zmiennej Czas wartość 10, zmiennej Prędkość wartość 50, obliczają Odległość mnożąc Czas razy Prędkość oraz wyświetlają Odległość przypisując jej wartość do cech Caption etykiety lblOdleglosc. Jeżeli przez pomyłkę zapisałeś Odległość pomijając literę e tj.:
lblOdleglosc.Caption = Odlgłość
Visual Basic potraktuje Odlgłość jako nową zmienną i automatycznie przypisze jej wartość 0. Wyświetlana etykieta będzie miała następującą postać:
Odległość = 0
co jest błędem.
Można uniknąć takich pomyłek wymuszając na Visual Basicu sygnalizowanie nie zadeklarowanych zmiennych. W powyższym przykładzie, należy więc zmienić kod do następującej postaci:
Dim Czas
Dim Odległość
Dim Prędkość
Czas = 10
Prędkość = 50
Odległość = Czas * Prędkość
lblOdleglosc.Caption = „Odległość = ” + Odległość
Program po napotkaniu źle zapisanej zmiennej: Odlgłość wyda sygnał dźwiękowy i wyświetli odpowiednią informację. Podświetli też zmienną Odlgłość wskazując, że jest ona błędnie zapisana.
Aby wymusić deklarowanie zmiennych w języku Visual Basic należy w części ogólnych deklaracji umieścić instrukcję:
Option Explicit
Instrukcje występujące w procedurze UpdateLabel() po deklaracji Dim są otoczone instrukcjami If...Else...End If:
`Dźwięk
If chkDzwiek.Value = 1 Then
Info = ”Dźwięk: Włączony”
Else
Info = ”Dźwięk: Wyłączony”
End If
Do kodu w Visual Basicu można wprowadzać komentarze, korzystając ze znaku apostrofu (`) lub słowa Rem. Następująca linia:
`Dźwięk
jest więc równoważna linii:
Rem Dźwięk
Komentarze można również wstawiać do linii zawierającej instrukcje:
A = 1 `Inicjalizacja zmiennej
Procedura UpdateLabel() sprawdza, czy cecha Value kratki chkDzwiek ma wartość 1. Jeżeli cecha Value jest równa 1, to wykonywana jest instrukcja znajdująca się pomiędzy If oraz Else:
Info = ”Dźwięk: Włączony”
Przypisuje ona zmiennej Info tekst ”Dźwięk: Włączony”.
Cecha Value kratki jest równa 1, jeżeli wewnątrz niej znajduje się znak x. Zawsze gdy w kratce jest znak x, zmienna Info przyjmuje wartość ”Dźwięk włączony”. Instrukcje znajdujące się pomiędzy Else oraz End If są wykonywane, gdy cecha Value nie jest równy 1. Cecha Value kratki może mieć wartość 1 lub 0. Zawsze, gdy wewnątrz kratki nie ma znaku x, cecha Value ma wartość 0. W takim przypadku wykonywana jest instrukcja znajdująca się pomiędzy Else i End If, która ustawia wartość zmiennej Info na tekst ”Dźwięk: Wyłączony”.
Kolejny blok If...Else...End If sprawdza cechę Value kratki chkMysz.
`Mysz
If chkMysz.Value = 1 Then
Info = Info + Chr(13) + „Mysz: Włączona”
Else
Info = Info + Chr(13) + „Mysz: Wyłączona”
End If
Chr(13) oznacza znak końca linii (Enter). Na przykład jeśli kratka chkDzwiek zawiera znak x, a kratka chkMysz nie, to dwa pierwsze bloki If...Else...End If procedury UpdateLabel przypisują zmiennej Info następujący tekst:
Dźwięk: Włączony Chr(13) Mysz: Wyłączona
Zostanie wtedy wyświetlona informacja
Dźwięk: Włączony
Mysz: Wyłączona
Następny blok If...Else...End If procedury sprawdza cechę Value kratki chkKolor i odpowiednio uaktualnia zmienną Info.
`Kolor
If chkKolor.Value = 1 Then
Info = Info + Chr(13) + „Kolor: Włączony”
Else
Info = Info + Chr(13) + „Kolor: Wyłączony”
End If
Kolejny blok If...End If procedury sprawdza cechę Value przycisku opcji optPoziom1:
`Poziomy
If optPoziom1.Value = True Then
Info = Info + Chr(13) + „Poziom: 1”
End If
Cecha Value określa stan elementu kontroli. W przypadku przycisku opcji wartość True cechy Value oznacza, że przycisk jest wybrany, co powoduje uaktualnienie zmiennej Info.
Kolejne dwa bloki If...End If uaktualniają zmienną Info w zależności od cechy Value przycisków opcji optPoziom2 i optPoziom3.
If optPoziom2.Value = True Then
Info = Info + Chr(13) + „Poziom: 2”
End If
If optPoziom3.Value = True Then
Info = Info + Chr(13) + „Poziom: 3”
End If
Ostatnia instrukcja procedury UpdateLabel() uaktualnia parametr Caption etykiety lblWybor zawartością zmiennej Info:
lblWybor.Caption = Info
Zawartość zmiennej Info jest wyświetlana w etykiecie lblWybor tak jak przedstawia to rysunek 1.
Uwaga: Cecha Value kratki może mieć wartość 0, 1 lub 2.
Cecha Value kratki wybranej jest równa 1
Cecha Value kratki nie wybranej jest równa 0
Cecha Value kratki ma wartość 2, gdy jest ona niedostępna (szara). Aby kratka była niedostępna, należy ustawić jej cechę Enabled na False.
Uwaga: Cecha Value przycisku opcji może być równy True lub False
Cecha Value wybranego przycisku opcji ma wartość True.
Cecha Value nie wybranego przycisku opcji ma wartość False.
W Visual Basicu True jest zdefiniowane jako -1, False jest zdefiniowane jako 0.
Uwaga: Sposób działania bloku If...Else...End If.
W poniższym bloku If...End If instrukcje pomiędzy słowami If...End If wykonywane są tylko wtedy, gdy A równa się 1:
If A = 1 Then
..................................
... Kod wykonywany tylko wtedy ...
... gdy A równa się 1 ............
..................................
End If
Następująca konstrukcja prezentuje blok If...Else...End If:
If A = 1 Then
..................................
... Kod wykonywany tylko wtedy ...
... gdy A równa się 1 ............
..................................
Else
..................................
... Kod wykonywany tylko wtedy ...
... gdy A nie równa się 1 ........
..................................
End If
Uruchomienie programu Opcje
Uruchom program Opcje.
Klikaj różne kratki i przyciski opcji. W odpowiedzi program wyświetla informacje o kratkach i przyciskach w etykiecie lblWybor
Zakończ działanie programu klikając przycisk Koniec.
Tworzenie pliku wykonywalnego (Opcje.exe)
Wybierz z menu File opcję Make EXE File.
Zapamiętaj plik pod nazwą Opcje.exe.
Zakończ działanie Visual Basic wybierając z menu File opcję Exit
Uruchom stworzony program .
Ćwiczenie końcowe
Popraw program Opcje tak, aby wykonywał następujące operacje:
Zawsze gdy zaznaczysz kratkę chkDzwiek, komputer wydaje dźwięk.
Zawsze gdy usuniesz zaznaczenie kratki chkKolor, tło formy zmieni się na purpurowe, a gdy zaznaczysz kratkę chkKolor, tło zmieni się na żółte.
Informacje |
Aby komputer wydał dźwięk użyj instrukcji Beep
Aby zmienić tło formy na purpurowe, wykonaj instrukcje: frmOpcje.BackColor=QBColor(13)
Aby zmienić tło formy na żółte, wykonaj instrukcje: frmOpcje.BackColor=QBColor(14) |
11
11
updatelabel