Akademia Techniczno-Rolnicza w Bydgoszczy
Wydział Mechaniczny
Katedra Sterowania i Konstrukcji
Systemy mikrokomputerowe
WSTĘP DO PROGRAMOWANIA
W JĘZYKU VISUAL BASIC
Instrukcja nr 7
Opis działania programu Lista
Program Lista pokazuje wykorzystanie obiektu typu lista do zbudowania aplikacji pozwalającej na zachowanie listy klientów.
Implementacja wizualna programu Lista.
Otwórz nowy projekt, zachowaj jego formę w pliku Lista.frm, a projekt pod nazwą Systemy.mak.
Na podstawie tabeli zbuduj formę tak jak na rysunku 1.
Obiekt |
Własność |
Ustawienie |
Form |
Name Caption Height Left Top Width |
frmLista Lista Klientów 5715 1170 1350 5775 |
Label |
Name Caption Height Left Top Width |
lblNazwisko Nazwisko do dodania: 255 600 360 2655 |
Label |
Name Caption Height Left Top Width |
lblKlient Klientów: 255 600 4440 855 |
Label |
Name Caption Height Left Top Width |
lblSuma (skasować zawartość) 375 2415 4440 855 |
Text Box |
Name Height Left Top Width Text |
txtNazwisko 375 600 720 2655 (skasować zawartość) |
Command Button |
Name Caption Enabled Height Left Top Width |
cmdDodaj &Dodaj False 495 3840 840 1215 |
Command Button |
Name Caption Enabled Height Left Top Width |
cmdUsun &Usuń False 495 3840 1680 1215 |
Command Button |
Name Caption Height Left Top Width |
cmdCzysc &Czyść 495 3840 2520 1215 |
Command Button |
Name Caption Height Left Top Width |
cmdKoniec &Koniec 495 3840 3840 1215 |
ListBox |
Name Height Left Sorted Top Width |
lstKlient 2595 600 True 1440 2655 |
Rys.1 Program Lista
Instrukcja |
Lista wyświetla listę wchodzących w jej skład elementów (informacji w postaci tekstowej), które użytkownik może wybrać przez wskazanie myszką. Wybór może dotyczyć pojedynczego elementu lub większej ich liczby. Kiedy wszystkie elementy listy nie mieszczą się na ekranie automatycznie dodawany jest pionowy pasek przewijania. Z każdym elementem listy związana jest wartość numeryczna nazywana indeksem (Index). Z pierwszym elementem listy związana jest wartość indeksu równa 0. Cecha ListIndex zawiera indeks aktualnie wybranego elementu listy lub wartość -1 jeżeli żaden element nie jest wybrany. Cecha ListCount określa całkowitą liczbę elementów wchodzących w skład listy. Aby dodać lub odjąć element listy należy użyć metod AddItem lub RemoveItem. Metody są to procedury zdefiniowane wewnątrz obiektów języka Visual Basic służące do ich obsługi. |
Wprowadzanie kodu programu Lista
Do procedury txtNazwisko_Change() formy frmLista wpisz następujący kod:
Sub txtNazwisko_Change()
If Len(txtNazwisko.Text) > 0 Then
cmdDodaj.Enabled = True
End If
End Sub
Instrukcja |
Kod zawarty w procedurze txtNazwisko_Change() wykonywany jest gdy użytkownik wprowadzi jakiekolwiek dane do okienka tekstowego i naciśnie klawisz Enter. Warunek zawarty w procedurze sprawdza, czy długość ciągu znaków w okienku tekstowym nie jest zerowa (użytkownik wprowadził jakikolwiek tekst). Jeżeli warunek jest spełniony to uaktywniany jest przycisk Dodaj. Funkcja Len zwraca długość łańcucha znaków będącego jej argumentem. |
Do procedury lstKlient_Click() formy frmLista wpisz następujący kod:
Private Sub lstKlient_Click()
If lstKlient.ListIndex <> -1 Then
cmdUsun.Enabled = True
End If
End Sub
Instrukcja |
Procedura uaktywnia klawisz usuwający elementy z listy. Uruchomienie procedury następuje po kliknięciu lewym klawiszem myszki na obszarze zajmowanym przez listę (zdarzenie nie musi być związane z kliknięciem na jakikolwiek element listy). Uaktywnienie przycisku Usuń następuje po sprawdzeniu, czy użytkownik wskazał jakikolwiek obiekt na liście. Cecha ListIndex zawiera indeks wybranego elementu listy lub wartość -1 jeżeli żaden element nie został wybrany. |
Do procedury cmdDodaj_Click() formy frmLista wpisz następujący kod:
Private Sub cmdDodaj_Click()
lstKlient.AddItem txtNazwisko.Text
txtNazwisko.Text = ""
txtNazwisko.SetFocus
lblSuma.Caption = lstKlient.ListCount
If Len(txtNazwisko.Text) > 0 Then
cmdDodaj.Enabled = True
Else
cmdDodaj.Enabled = False
End If
End Sub
Instrukcja |
Procedura cmdDodaj_Click() wykonywana jest po kliknięciu na przycisk Dodaj. Powoduje ona dodanie elementu do listy. Wykonywane jest to poprzez wywołanie metody AddItem obiektu lstKlient z argumentem, który zawiera tekst mający stać się kolejnym elementem listy. W opisywanym programie jest to cecha Text okienka tekstowego txtNazwisko. Kod odpowiedzialny za tą operacje ma postać: lstKlient.AddItem txtNazwisko.Text Następnie kasowana jest zawartość okna tekstowego (cecha Text) txtNazwisko oraz wykonywana jest metoda SetFocus ustawiająca na powrót kursor w okienku tekstowym (czyniąca obiekt txtNazwisko aktywnym): txtNazwisko.Text = "" txtNazwisko.SetFocus W etykiecie lblSuma pojawia się całkowita liczba elementów listy, uzyskana z cechy ListCount obiektu lstKlient. lblSuma.Caption = lstKlient.ListCount W ostatnim kroku sprawdzany jest warunek, czy w polu tekstowym pojawił się nowy wpis (tekst), który może stać się następnym elementem listy. W tym celu sprawdzana jest ilość znaków (funkcja Len) tekstu aktualnej wartości cechy Text obiektu txtNazwisko. Jeżeli jest ona większa od zera przycisk Dodaj pozostaje włączony (umożliwia wprowadzenie nowego elementu listy). W przeciwnym wypadku zostaje on wyłączony, aż do pojawienia się jakiegokolwiek nowego wpisu w okienku tekstowym. If Len(txtNazwisko.Text) > 0 Then cmdDodaj.Enabled = True Else cmdDodaj.Enabled = False End If |
Do procedury cmdUsun_Click() formy frmLista wpisz następujący kod:
Private Sub cmdUsun_Click()
Dim Ind As Integer
Ind = lstKlient.ListIndex
If Ind >= 0 Then
lstKlient.RemoveItem Ind
lblSuma.Caption = lstKlient.ListCount
Else
Beep
End If
If lstKlient.ListIndex <> -1 Then
cmdUsun.Enabled = True
Else
cmdUsun.Enabled = False
End If
End Sub
Instrukcja |
Procedura cmdUsun_Click() wykonywana jest po kliknięciu na przycisk Usuń. Powoduje ona usunięcie wskazanego elementu listy. Jest to wykonywane poprzez wywołanie metody RemoveItem obiektu lstKlient z argumentem zawierającym indeks usuwanego elementu listy. W opisywanym programie jest to zmienna Ind. Wartość Ind pobierana jest z cechy ListIndex obiektu lstKlient: Dim Ind As Integer Ind = lstKlient.ListIndex Następnie sprawdzany jest warunek, czy wartość zmiennej Ind jest różna od -1, czyli czy użytkownik wskazał jakikolwiek element listy. Jeśli warunek ten jest spełniony, następuje usunięcie elementu, w przeciwnym wypadku generowany jest sygnał dźwiękowy informujący o błędzie: If Ind >= 0 Then lstKlient.RemoveItem Ind lblSuma.Caption = lstKlient.ListCount Else Beep End If W ostatnim kroku sprawdzany jest warunek, czy w użytkownik lub inna procedura nie wskazała następnego elementu listy. W tym celu sprawdzana jest cecha ListIndex obiektu lstKlient. Jeżeli jej wartość jest różna od -1 oznacza to, że wybrany jest element listy co powoduje pozostawienie włączonym przycisku Usuń (umożliwia usunięcie kolejnego zaznaczonego elementu listy. W przeciwnym wypadku zostaje on wyłączony, aż do zaznaczenia kolejnego elementu listy. If lstKlient.ListIndex <> -1 Then cmdUsun.Enabled = True Else cmdUsun.Enabled = False End If |
Do procedury cmdCzysc_Click() formy frmLista wpisz następujący kod:
Private Sub cmdCzysc_Click()
lstKlient.Clear
lblSuma.Caption = lstKlient.ListCount
cmdUsun.Enabled = False
End Sub
Instrukcja |
Procedura cmdCzysc_Click() wykonywana jest po kliknięciu na przycisk Czyść. Powoduje ona usunięcie wszystkich elementów listy. Wykonywane jest to poprzez wywołanie metody Clear obiektu lstKlient. Kod odpowiedzialny za tą operacje ma postać: lstKlient.Clear Następnie w etykiecie lblSuma pojawia się całkowita liczba elementów listy, uzyskana z cechy ListCount obiektu lstKlient (równa 0). lblSuma.Caption = lstKlient.ListCount W ostatnim kroku wyłączany jest przycisk Usuń, lista jest pusta, a więc nie można już z niej niczego usunąć. cmdUsun.Enabled = False |
Do procedury cmdKoniec_Click() formy frmLista wpisz następujący kod:
Sub cmdKoniec_Click()
End
End Sub
Uruchomienie programu Lista
Uruchom program Lista.
Kliknij na pole tekstowe, wprowadź dowolny tekst.
Klikając na przycisk Dodaj wprowadź tekst do listy, powtórz operacje kilkukrotnie, tak aby umieścić na liście większą liczbę wpisów.
Zaznacz jeden z wprowadzonych wpisów, kliknij Usuń aby go usunąć.
Usuń wszystkie wpisy klikając Czyść.
Kliknij Koniec, aby zakończyć działanie programu.
Tworzenie pliku wykonywalnego (Lista.exe)
Wybierz z menu File opcję Make EXE File.
Zapamiętaj plik pod nazwą Lista.exe .
Zakończ działanie Visual Basic wybierając z menu File opcję Exit.
Ćwiczenie końcowe
Zmień program Lista, tak aby umożliwiał modyfikacje zapisanego w liście elementu po jego wskazaniu.
Informacja |
Modyfikacja powinna odbywać się poprzez wskazanie elementu, po czym powinno nastąpić przepisanie danych do okienka tekstowego. Po dokonaniu zmian przez użytkownika powinno nastąpić skasowanie starego zapisu i dodanie nowego - poprawionego.
Aby wyświetlić wskazany element należy skorzystać z następującego kodu: txtNazwisko.Text = lstKlient.List(lstKlient.ListIndex) cecha List zawiera tekst wszystkich elementów listy zgrupowane w ponumerowanej tablicy, aby uzyskać tekst wskazanego elementu z listy należy podać jego indeks argument lstKlient.ListIndex. |
5
7