art11









@t - magazyn w pełni skomputeryzowany




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

Tekst ten pochodzi z zinu @t






Wyszukiwarka

Podobne podstrony:
ART11 (4)
art11 budowa domu na skarpie
art11
ART11 (3)
art11
art11
art11
ART11
ART11 (7)

więcej podobnych podstron