|
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
|