Odczytywanie danych z pliku - Znajdowanie błędów
Co to takiego? | Przypisanie kodu programu do kontrolek | Wprowadzanie danych i wyprowadzanie wyników
Kontrolki
>Co to takiego?
Kontrolki, jak już wcześniej wspomiałem, to elementy interfejsu, które programista wykorzystuje w swoim programie. Są to obiekty, których zdarzenie trzeba zaprogramować. Rozmieszcza się je na formularzu. Służą one np. do wprowadzania danych (pole tekstowe, suwaki), oraz ich wyprowadzania (etykiety). Są one ważną częścią programu, gdyż dzięki nim możemy w łatwy sposób sterować pracą programu. Rozmieszczenie kontrolek na formularzu jest bardzo ważne, gdyż świadczy to o estetyce programu i łatwości jego obsługiwania.Oto opis podstawowych kontrolek w Visual Basic-u:
Kontrolka | Ikona | Opis |
---|---|---|
Pole obrazu (PictureBox) | Tworzy pole, w które można wstawić obraz | |
Etykieta (Label) | Tworzy etykietę | |
Pole tekstowe (TextBox) | Tworzy pole tekstu, którego zawartość może być zmieniana | |
Ramka (Frame) | Wydziela optycznie grupę przycisków oraz definiuje zbiory przycisków opcji | |
Przycisk polecenia (CommandButton) | Tworzy przycisk polecenia | |
Pole wyboru (CheckBox) | Tworzy pole wyboru razem z tytułem | |
Przycisk opcji (OptionButton) | Tworzy przycisk opcji razem z tytułem | |
Pole rozwijane (ComboBox) | Tworzy pole listy rozwijanej | |
Pole listy (LIstBox) | Tworzy pole listy | |
Pasek przewijania (HScrollBar) | Tworzy pasek przwijania (suwak) w poziomie | |
Pasek przwijania (VSrollBar) | Tworzy pasek przewijania (suwak) w pionie | |
Regulator czasowy (Timer) | Reguluje czas | |
Pole listy dysków (DriveListBox) | Tworzy pole listy rozwijanej z dyskami na komputerze | |
Pole listy folderów (DirListBox) | Tworzy pole listy z folderami aktualnej ścieżki | |
Pole listy plików (FileListBox) | Tworzy pole listy z plikami aktualnej ścieżki | |
Kształt (Shape) | Tworzy figurę geometryczną o dowolnym kształcie | |
Linia (Line) | Tworzy linię prostą | |
Obraz (Image) | Tworzy obraz grupy obiektów | |
Dane (Data) | Tworzy narzędzie wczytywania i wyświetlania danych | |
OLE (OLE) | Tworzy obszar wstawiania obiektu |
Zauważmy, że po uruchomieniu fomularza za pomocą opcji Start z menu Run (lub kliknięcie przycisku na psku narzędzi) pewne kontrolki potrafią same wykonać pewne zadania, bez żadnego dodatkowego oprogramowania. W polu tekstowym można wpisać i korygować dowolny tekst, który może być wykorzystany w programie. Paski przewijania pozimego i pionowego potrafią przesuwać się, a pola wyboru zaznaczają się niewykluczająco natomiast przyciski opcji można zaznaczyć tylko wykluczjąco (tzn. albo pierwszy albo drugi, a nie mogą być zaznaczone obydwa). Kontrolki napędów dyskowych oraz lista plików dają dostęp do zasobów systemu.
Oczywiście brak dodatkowego oprogramowania nie pozwala na powiązanie pomiędzy wybieranym napędem dyskowym a listą nazw plików wyświetlanych w kontrolce lista plików. Podobny problem dotyczy przycisków poleceń, których kliknięcie nie powoduje żadnych działań. Aby uzyskać oczekiwany od tych kontrolek efekt, trzeba napisać procedury związane ze zdarzeniem kliknięcia tych przycisków.
>Przypisanie kodu programu do kontrolek
Kontrolki umieszczane na formularzu pwonny odpowiednio reagować na zdarzenia wykonywane przez użytkownika, takie jak np. kliknięcie myszką. Aby tak się działo każde takie zdarzenie musi zostać oprogramowane. Niektóre zdarzenia są już standardowo oprogramowane w środowisku Visua Basic. Na przykład kliknięcie przycisku, który ma włąściwość przycisku Cancel spowodje wycofanie się z formularza, na którym przycisk ten został umieszczony. Programista może wszakże zmienić działanie takich predefiniowanych zachowań tworząc własne procedury obsługi zdarzeń.
Ćwiczenie 1Zdefiniujemy zachowanie się programu na skutek kliknięcia przez użytkownika przycisków OK oraz Anuluj na formularzu zbudowanym przez siebie.
- Otwórz nowy projekt.
- W oknie właściwości formularza zmień jego nazwę (Caption) z
Form1
naĆwiczenie 1
, zmień także nazwę (Name) zForm1
nafrm_cw1
.
- Na formularzu umieść dwa przyciski polecenia CommandButton (klikając kontrolkę na
pasku narzędzi a następnie przeciągając ją na formularzu), zmień nazwę (Name)
jednego z nich na
btn_ok
a drugiego nabtn_anuluj
, oraz napis na nich (Caption) naOK
iAnuluj
.
- Dwukrotnie kliknij przycisk OK podzczas projektowania formularza, co spowoduje
przejście do procedury obsługi tego zdarzenia czyli
btn_ok_Click
. - Wewnątrz tej procedury umieść wywołanie okna komunikatu MsgBox z komunikatem
Wcisnąłeś przycisk OK
. Procedura obsługi tego zdarzenia powinna wyglądać tak:
Private Sub btn_ok_Click()
MsgBox ("Wcisnąłeś przycisk OK")
End Sub
- Następnie po ponownym przejściu do pojektowanego formularza dwukrotnie kliknij przycisk
polecenia Anuluj, co spowoduje przejście do procedury
btn_anuluj_Click
. - Wewnątrz tej procedury umieść wywołanie procedury zakończenia pracy z formularzem,
tzn.
Unload Me
. Ostatecznie procedura ta powinna wyglądać tak:
Private Sub btn_anuluj_Click()
Unload Me
End Sub
- Zapisz projekt na dysku nadając mu nazwę, a następnie obejrzyj działanie tego
projektu uruchamiając go opcją Start z menu Run.
Aby obejrzeć gotowy projekt należy zainstalować program Spis ćwiczeń z podstrony Dodatki: Spis ćwiczeń.
Zauważmy, że tym razem kliknięcie przycisku OK powoduje wyświetlenie odpowiedniego komunikatu, natomiast kliknięcie przycisku Anuluj spowoduje zakończenie przcy programu, podobnie jak wybranie przycisku , Zamknij formularz.
>Wprowadzanie danych i wyprowadzanie wyników
Aby program mógł wykonywać pewne czynności w zależności od różnych dostarczanych mu danych oraz prezentować wykonane obliczenia potrzebne są proste marzędzia do wprowadzania i wyprowadzania liczb i tekstów. Najprostrzymi z nich jest imieszczenie pola tekstowego (TextBox) na formularzu w celu pobrania danych, oraz wydruk bezpośrednio na formularzu za pomocą instrukcji Print.
Innym sposobem jest wprowadzenie danych za pomocą specjalnego formularza (tzw. okna dialogowego) InputBox, natomiast wyprowadzenie wyników w formie komunikatu za pomocą osobnego, małego formularza (również okna dialogowego) Message Box (jakiego użyliśmy już w Ćwiczeniu 1).
Ćwiczenie 2
Podamy dwie dane: nazwisko oraz wiek, dwoma metodami, a następnie wyświetlimy zdanie w wieku
danej osoby bezpośrednio na formularzu oraz osobnym Message Box.
- Rozpocznij nowy projekt wybierając New Project z menu File.
- Nadaj mu nazwę (Name)
frm_cw2
i (Caption)Ćwiczenie 2
- Na formularzu umieść kontrolkę Pole tekstowe (podwójnie ją klikając na
pasku narzędzi), w oknie właściwości zmień jej nazwę (Name) na
txt_nazwisko
oraz usuń domyślną wartośćText1
z właściwości Text. - Nad tą kontrolką umieść kontrolkę etykiety (Label) z napisem (Caption)
Podaj nazwisko
. - Pod polem tekstowym umieść przycisk polecenia, zmień jego nazwę (Name)
btn_wiek, oraz napis na nim (Caption) na
Wiek
. - Następnie umieść trzy przyciski poleceń o nazwach btn_msg, btn_print
oraz btn_anuluj i napisach na nich
Wyświetl komunikat
,Print
orazAnuluj
. - Podwójnie klikając kontrolkę Pole tekstowe przejdź do tworzenia procedury
txt_nazwisko_Change()
w oknie kodu. - Pobierz tekst wpisany do tej kontrolki poprzez odczytanie właściwości Text
obiektu
txt_nazwisko
i podstaw go pod zmienną Nazwisko.
Przykładowy formularz:
Aby formularz spełnił swoje zadanie należy oprogramować odpowiednie zdarzenia.
Procedura ta powinna wyglądać następująco:
Private Sub txt_nazwisko_Change()
Nazwisko = txt_nazwisko.Text
End Sub
- Następnie kliknij dwukrotnie przycisk polecenia Wiek, żeby przejść do edycji
procedury obsługującej zdarzenie kliknięcia przycisku czyli
btn_wiek_Click()
. - Dane o wieku wprowadź na pomocą formularza InputBox wprowadzjąc wywołanie
formularza InputBox z komunikatem
Podaj Wiek
.
Procedura ta powinna wyglądać następująco:
Private Sub btn_wiek_Click()
Wiek = InputBox("Podaj wiek")
End Sub
- W dalszej kolejności zaprogramuj zachowanie się programu w przypadku kliknięcia przycisków Wyświetl komunikat, Print oraz Anuluj. Naciśnięcie pierwszego przycisku powinno spowodować wyświtlenie na pomocą formularza MasgBox komunikatu o wyprowadzonych danych.
Procedura ta wygląda tak:
Private Sub btn_msg_Click()
MsgBox Nazwisko & " ma " & Wiek & " lat."
End Sub
-
Natomiast wybranie drugiego przycisku powinno spowodować napisanie tego komunikatu
bezpośrednio na formularzu. Procedura obsługi tego zdarzenia ma postać:
Private Sub btn_print_Click()
Print Nazwisko & " ma " & Wiek & " lat."
End Sub
- I ostatecznie przycisk Anuluj kończy działanie programu. W procedurze obsługującej kliknięcie tego przycisku umieść wywołanie funkcji powodującej usunięcie formularza z pamięci komputera i zakończenie działania programu, czyli:
Private Sub btn_anuluj_Click()
Unload Me
End Sub
- Należy zwrócić uwagę, że do przechowywania wprowadzonych danych użyliśmy dwóch zmiennych Nazwisko i Wiek. Aby zmienne te mogły być widoczne przez wszystkie procedury, trzeba je zadeklarować w początkowej części kodu (więcej na temat zmiennych, ich typów oraz i deklarowania w następnym dziale). Umieść zatem na początku programu przed tekstem pierwszej procedury następującą deklarzację:
Dim Wiek, Nazwisko As String
Ostatecznie okno kodu powinno zawierać następujący tekst (kolejność występowania procedur nie jest istotna):
Dim Wiek, Nazwisko As String
Private Sub btn_anuluj_Click()
Unload Me
End Sub
Private Sub btn_msg_Click()
MsgBox Nazwisko & " ma " & Wiek & " lat."
End Sub
Private Sub btn_print_Click()
Print Nazwisko & " ma " & Wiek & " lat."
End Sub
Private Sub btn_wiek_Click()
Wiek = InputBox("Podaj wiek")
End Sub
Private Sub txt_nazwisko_Change()
Nazwisko = txt_nazwisko.Text
End Sub
- Spróbuj uruchomić zaprojektowany formularz i program za pomocą opcji Start z menu Run i zaobserwuj działanie formularzy InputBox oraz MsgBox, a także wykonanie polecenia Print.
Wprowadzanie danych za pomocą formularza InputBox
Wyprowadzanie komunikatów i wyników za pomocą formularza MsgBox
Drukowanie komunikatów bezpośrednio na formularzu za pomocą instrukcji Print
W ten sposób utworzyliśmy pierwszy, w pełni funkcjonalny program wyczytujący dane i wypisujący wynik. Zapiszmy projekt na dysku i zajmijmy się poznaniem elementów języka Visual Basic, które umożliwią tworzenie bardziej złożonych aplikacji.