Visual Basic (8)

Lekcja 18

Hi ! Dzisiaj znów dość trudna lekcja przed Wami. Powiemy trochę o liście wyboru i listach Combo.
Najpierw zajmiemy się listami wyboru. Co to jest lista wyboru - nasuwa się pytanie. Jest to takie "okienko" do którego możemy dodawać różne słowa i je np. posortować.Zresztą cóż ja będę tu dużo mówił. Zobaczmy listę wyboru na praktycznym przykładzie. Uruchamiamy VB i na formie układamy element nazwany ListBox (kolumna 2 rząd 5 - taka ikonka z prawym paskiem przewijania i białym polem) Uwaga nie pomyl z ComboBox-em - o tym dopiero za chwilę. Pewnie pytasz jak rozpoznać który jest który. Najedź na ikonkę która według ciebie jest tą właściwą. Nic nie naciskaj, i nie ruszaj myszą - za chwilę się pojawi etykietka z nazwą elementu. Dobra - znalazłeś ? Teraz to ułóż na formie. Chmm... wygląda jak TextBox. No dobra, ale jak tym się posługiwać ? Pokażę to na malutkim przykładzie. ListBox nazwij lstLista teraz dodaj przycisk na formie i nazwij go cmdDodaj. Jako właściwość Caption nadaj mu Dodaj. Teraz na formie ułóżmy jeszcze TextBox-a - nazwij go txtWprowadz. No teraz wyjaśnię jak ma działać program. Gdy wpiszemy coś w pole tekstowe i klikniemy Dodaj, to zawartość tego pola tekstowego ma zostać przeniesiona do Listy. Teraz weźmy się za kod. Do przycisku dopisz:

lstLista.AddItem txtWprowadz
txtWprowadz = ""

Uruchom program - wpisz coś w pole tekstowe i kliknij Dodaj. Fajnie tekst przeniósł się do listy! Wpisz coś drugi raz i kliknij Dodaj. Wow, mamy już dwie pozycje. Teraz przetłumaczymy powyższy kod:

Lista.Dodaj to co w txtWprowadz (czyli w naszym polu tekstowym)
wyczyść pole tekstowe - po co? Po co za każdym razem kasować słowo dodane do listy - lepiej żeby za nas to zrobił komputer :)

Dobra, myślę, że nie miałeś z tym problemu - teraz funkcja usuń. Dodajmy do naszego projektu jeszcze jeden przycisk - nazwij go cmdUsun i jako etykietę nadaj mu Usuń. Teraz jeszcze jeden textBox - nazwij go txtUsun. Teraz nasz program będzie jeszcze potrafił usunąć podaną pozycję listy. Tak więc do przycisku Usuń dodaj następujący kod:

Dim x
x = Val(Text1) - 1
lstLista.RemoveItem (x)

Ho, ho, ho !!! Co to znowu jest za kod. O tym za chwilę. Na razie uruchom program. Dopisz kilka elementów do listy. Teraz w nowe pole tekstowe wpisz liczbę, która będzie pozycją pewnej danej którą chcesz usunąć z listy. Wpisz np. 2 lub 3 (Tyle minimalnie musi być pozycji na liście !!!). Teraz Usuń. Działa. No dobra - ale jak ?

Tłumaczenie: Ostatnia linijka usuwa element x listy. Ale dlaczego wcześniej jest x = to co w polu tekstowym - 1 ? Dla Visual Basica pierwsza pozycja na liście ma wartość 0, druga 1 itd. Aby to unormować odejmujemy jeden. No i jak to działa ? Jeśli w okienko tekstowe wpiszesz 1 program odejmie od tego 1 i wyjdzie mu zero - więc usunie pierwszą pozycję listy. Chyba kapujesz nie ? Myślę także, że pamiętasz do czego służyła funkcja VAL ( ) - tak ona zamieniała stringi (dane tekstowe) na liczby.

Może powiecie, że ten program jest bez sensu - przecież lepiej jest zaznaczyć ręcznie pozycję którą chcemy usnąć i kliknąć Usuń, zamiast ręcznie liczyć pozycje listy, wpisywać je do TextBox-a i dopiero Usuń. Tego też się nauczycie - ale później. Na razie chcę zobrazować działanie funkcji ListBox po to tylko, aby wyświetlała różne dane, a nie abyśmy nimi swobodnie operowali. No dobra, ale dlaczego nie teraz ? Kod jest pogmatwany i bardzo trudny. Dla zniechęcenia podaję kawałek kodu ;)

Etykieta = costam(LstLista.ItemData(LstLista.ListIndex))

To może nie wygląda tak źle - ale musimy to jeszcze połączyć z tablicami danych o których w następnej lekcji.

Dobra do rzeczy - teraz następna właściwość ListBox-a. Czyszczenie listy - jeśli chcesz usunąć wszystkie elementy list do jakiegoś nowego przycisku dodaj kod:

LstLista.Clear

No dobra - a jak policzyć wszystkie elementy na liście ? Bardzo prosto - wystarczy posłużyć się kodem:

Dim x
x = lstLista.ListCount

Ok - załatwiliśmy prawie wszystko. Zostało nam jeszcze podstawianie pod zmienne. Jeśli chcesz podstawić pod zmienną x np. 4 element listy posłuż się kodem

Dim x
x = lstLista.List(3)

Chyba zrobiłem pomyłkę - my chcemy podstawić 4 element listy, a ja w kodzie napisałem 3. Nie zapomnij, że VB zaczyna liczyć od 0. Dla nas 4 element listy to dla niego trzeci !!!

Teraz jeszcze pewne właściwości listy.

Columns Ta właściwość określa ilość kolumn. Jeśli jej wartość jest ustawiona na 0 to mamy zwykłą listę z pionowym paskiem przewijania. Jeśli damy 1 to elementy na liście będą wyświetlone w poziomie. Jeśli damy więcej to elementy będą się układać poziomo, na ekranie będzie widać n kolumn (n to liczba > 1 ). Uff...
MultiSelect 0 - None - oznacza, że możemy wybrać tylko jeden element listy (podobnie jak było z OptionsButton), jeśli 1- Simple, użytkownik może wybrać kilka elementów klikając na nich. 2 - Extended - użytkownik może wybrać kilka elementów listy pod warunkiem, że przytrzyma klawisz Shift
Sorted Określa czy lista ma być posortowana alfabetycznie, czy też nie
Style Określa, czy lista ma wyglądać "normalnie" czy bardziej jak zbiór CheckBox-ów ;)

No to by było tyle o liście wyboru - został nam jeszcze ComboBox - ale nie bójcie się. Posługiwać się nim będziemy identycznie jak ListBox-em. Są tylko dwie różnice. W ListBox-ie mogliśmy ustawić czy będzie możliwość wybrania jednej czy wielu pozycji. W Combolu możliwe jest tylko wybranie jednej .
Druga - chyba najważniejsza - zamiast stosować ListBox-a + TextBoxa możemy zastosować sam ComboBox. Jak - musimy posłużyć się funkcją rozpoznającą wciśnięty klawisz (o tym będziemy uczyć się w przyszłości). Ułóż na formie ComboBox-a (to ten obok List Box-a, tylko trochę większy). Kliknij na niego dwukrotnie. Zobacz na górę okna - pisze coś takiego :
Private Sub Combo1_Click()

My zamiast click będziemy musieli posłużyć się KeyDown. No ale jak ? Popatrz jeszcze wyżej. Widać dwa ComboBox-y. W jednym jest wpisane Combo1 a w drugim Click. Zmień to Click na KeyDown i dopisz następujący kod:

If KeyCode = vbKeyReturn Then
Combo1.AddItem Combo1.Text
Combo1.Text = ""
End If

Tłumaczę:

Jeśli nacisnąłeś Enter to
Dodaj do list Combo to co wpisaliśmy
Wyczyść to co wpisaliśmy
Koniec Jeśli

Sam wypróbuj jak to działa - na dziś to by było tyle...

Lekcja 19

Jak napisałem w poprzednim kursie zajmiemy się dzisiaj tablicami danych. Ochooo. Brzmi to jakoś tak skomplikowanie i matematycznie. Nie bój się. Tym razem przed nami bardzo prosta lekcja ! Jeśli wiesz do czego służy funkcja DIM i FOR (Właściwie skoro nie wiesz to po co czytasz? ;) ) to bez problemów zrozumiesz tablicę danych. Najczęściej używa się jej w parze z funkcją FOR. Tablica danych to nic innego jak lista zmiennych tego samego typu. Np. nie możemy pomieszać w tablicy stringów i liczb. Podaję praktyczne zastosowanie tablicy danych

Przypuśćmy, że musimy napisać program sumujący 20 zmiennych. Wykorzystując już zdobytą wiedzę napisalibyśmy tak:

Dim Liczba1, Liczba2, Liczba3, Liczba4, Liczba5, Liczba6, Liczba7, Liczba8  (itd...)as Single
wynik = Liczba1 + Liczba2 + Liczba3 + Liczba4 + Liczba5 + Liczba6 + Liczba7 + itd...

Sporo pisania. Gdybyśmy jednak zastosowali tablicę danych wyglądało by to tak:

Dim tablicaliczb(20)
Dim x as byte
For x = 1 to 20
wynik = wynik + tablicaLiczb(x)
Next x

Prawda, że krócej. Tak samo trwa zapisywanie do zmiennych. Gdybyśmy np. chcieli odczytać dane z pliku to musielibyśmy to robić tak:

Dim Liczba1, Liczba2, Liczba3, Liczba4, Liczba5, Liczba6, Liczba7, Liczba8  (itd...) as Single
--- odczyt z pliku - zapisz do zmiennej Liczba1 ---
--- odczyt z pliku - zapisz do zmiennej Liczba2 ---
--- odczyt z pliku - zapisz do zmiennej Liczba3 ---
--- odczyt z pliku - zapisz do zmiennej Liczba4 ---
--- odczyt z pliku - zapisz do zmiennej Liczba5 ---
itd...

Pomyśl sobie, jak byśmy musieli odczytać 300 danych z pliku... Lepiej nie myśleć. Za pomocą tablic danych nawet 1000000 jest dla nas błahostką :)  Oto sposób:

Dim tablicadanych(100)
Dim x as Single
For x=1 to 100
--- odczyt z pliku - zapis do zmiennej tablicadanych(x)
Next x

Prawda, że proste. Jeśli nawet jeszcze tego nie rozumiesz to nie przejmuj się zbytnio - okazję do poćwiczenia tego będziemy mieć za kilka lekcji, kiedy będziemy uczyć się dostępu do plików. Czyli jak odczytać dane, zapisać itp.

No, teraz zajmiemy się ScroolBar-em. Co prawda jeszcze go nigdy nie użyłem - nawet nie widziałem jego praktycznego zastosowania, ale może się Tobie przydać. Jak go umieścić na formie. Bardzo łatwo. Znajduje się on (one - bo są dwa - poziomy i pionowy) zaraz pod ComboBox-em i ListBoxem. Tak to te 2 paski pionowy i poziomy z strzałeczkami na końcach. Umieść np. pionowy na formie. Rozciągnij go aby był jak najwyższy. Teraz uruchom program. Hmmm... Wygląda jak zwykły pasek do przewijania tekstu. Faktycznie, tak samo wygląda, ale służy do czego innego. Zwraca on wartość która może posłużyć np. do manipulacji wielkości czcionki w jakiejś etykiecie. Zanim napiszemy programik musisz poznać 4 właściwości ScrollBar-a.
SmallChange Tłumacząc - Mała zmiana. Oznacza wartość o którą zmieni się ScrollBar po naciśnięciu jednej ze strzałek
LargeChange Tłumacząc - Duża zmiana. Oznacza wartość o którą zmieni się ScrollBar po kliknięciu gdziekolwiek na pasku
Min Wartość minimalna paska
Max Wartość maksymalna paska

No to bierzemy się za pisanie programu:

Na formie mamy już ułożony scrollbar, teraz jeszcze ułóżmy dość dużą etykietę. Nazwijmy ją lblCzcionka jako wartość Caption nadaj jej TEST. OK. Teraz musimy spowodować, aby regulując ScrollBar-em regulować wielkość Czcionki. Musimy zmienić właściwości Min i Max. Dlaczego? Zaznacz ScrollBar i w okienku Properties odnajdź właściwość Min. Domyślnie jest 0. Wielkość czcionki 0? To chyba jest niemożliwe !!! Najmniejsza to 1. Zmieńmy więc Min z 0 na 1. Teraz powyżej mamy właściwość Max. 32767 - takiej wielkości czcionka ?! W życiu nie zmieściłaby się na monitorze. Zmieńmy na 50. Dobra - ustalmy jeszcze SmallChange. Jest 1 no i chyba tak zostanie. Po kliknięciu na strzałce wielkość czcionki zmieni się o jeden - mniej nie ma sensu a więcej też się nie opłaci, bo nie będziemy mogli dokładnie ustawić wielkości czcionki. W większości przypadków SmallChange zostaje 1. Teraz bierzmy się za LargeChange. Co też 1 ? Nie zmieńmy to na 5. OK. Właściwości paska ustawione. Teraz dopiszemy do niego kod. Kliknij więc na nim dwukrotnie i dopisz:

lblCzcionka.FontSize = VScroll1

Uruchom teraz program - musisz kliknąć aż 7 razy na strzałce w dół aby zobaczyć efekt.

To by było na tyle jeśli chodzi o ScrollBar. Do następnego spotkania...

Slash
slash@at.bjn.pl

 

  Copyright 2001 at-online. Wszelkie prawa zastrzeżone.