background image

KURS  VISUAL  BASICA 

  
 
Wstęp  Co powinieneś wiedzieć aby dobrze wystartować  
  
Lekcja 1  

 Funkcja wyświetlania komunikatów (MsgBox)  

  
Lekcja 2  

 CD. MsgBox, wprowadzenie do instrukcji IF i DIM  

  
Lekcja 3  

 Wszystko o DIM - i trochę o MsgBox-ie  

  
Lekcja 4  

 TextBox, Label i troszeczkę o konwersji danych  

  
Lekcja 5  

 Funkcja konwertująca stringi na liczby  

  
Lekcja 6  

 InputBox  

  
Lekcja 7  

 Instrukcja IF  

  
Lekcja 8  

 Operatory logiczne  

  
Lekcja 9  

 Funkcja Case  

  
Lekcja 10  

 Komentarze i pętla Do While  

  
Lekcja 11  

 Pętla Do Until, pętle odwrócone  

  
Lekcja 12  

 Pętla For  

  
Lekcja 13         Zmiana właściwości komponentów  
  
Lekcja 14  

 Opcje wyboru  

  
Lekcja 15  

 Opcje wyboru cd, Funkcja Global  

  
Lekcja 16  

 Dwie formy  

  
Lekcja 17  

 Okna dialogowe i kompilacja  

  
Lekcja 18  

 Wstęp do list wyboru i Combo Box-ów  

  
Lekcja 19  

 Tablice danych i ScrollBar-y  

  
Lekcja 20  

 Funkcje czasowe  

  
Lekcja 21  

 Funkcje matematyczne  

  
Lekcja 22  

 Funkcje łańcuchowe  

  
Lekcja 23  

 Funkcje testujące dane i Funkcje konwersji danych  

  
Lekcja 24 

 Uruchamianie innych programów, starowanie listami napędów, katalogów i plików 

background image

  
Lekcja 25 

 Funkcja Open, Close, Write 

  
Lekcja 26 

 Funkcja Input i EOF 

  
Lekcja 27 

 Funkcje Kill, RmDir, MkDir, File 

  
Lekcja 28 

 Pole Obrazu 

  
Lekcja 29 

 Menu 

  
Lekcja 30 

 Pasek narzędzi 

  
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 

background image

LEKCJA 1 
  
 
No więc w tej lekcji napiszemy pierwszy program. Do dzieła: 
 
Otwieramy Visual Basic, tworzymy nową aplikację. Chmmm. Co by tu zrobić. No może na 
formularz naniesiemy jakiś przycisk. No dobra. Z paska narzędzi (tego po lewej) wybieramy 
„CommandButton” – Szary prostokąt (3 rząd, 2 kolumna). No dobra przycisk się wcisnął i co teraz. 
Teraz wystarczy przytrzymać lewy przycisk myszy na formularzu i przeciągnąć w którąś ze stron. 
Czy widzisz te przerywane linie. To właśnie tu po puszczeniu przycisku myszy ukaże się pierwszy 
element naszej aplikacji – Command Button. No fajnie. Stworzyliśmy przycisk o nazwie 
Command1. Możesz go teraz przesunąć w dowolne miejsce na formularzu lub go powiększyć. Po 
prostu chwyć go i upuść tam gdzie zechcesz. Jeśli chcesz go powiększyć lub pomniejszyć zaznacz 
go, pojawią się teraz obok przycisku kwadraciki za które możemy chwycić i dowolnie zmieniać 
rozmiar przycisku. Ufffff... Myślę, że skapowałeś o co chodzi. Dobra – ale ten napis jakoś brzydko 
wygląda. Zmieńmy go np. na „Witaj”. Ale jak to zrobić. Pewnie myślisz,  że teraz zaczniemy 
posługiwać się kodem. Nic z tego. Wykorzystamy do tego okienko „Properties”. To po prawej w 
środku. Wygląda jak jakaś tabelka. To właśnie tu ustalamy właściwości przycisku. Zabieramy się 
do roboty. Zaznacz przycisk na formie. Teraz w okienku „Properties” widzisz pogrubiony napis 
Command1 – command button. Oznacza to, że wszystkie poniżej wypisane opcje odnoszą się do 
naszego przycisku. Oto krótki opis najważniejszych funkcji : 
 
  
(name) 
 W tym polu wpisujemy nazwę identyfikującą nasz przycisk – najlepiej używać skrótu cmd – tak 
wię zmieniamy nazwę naszego przycisku na cmdwitaj 
  
caption 
 Chyba  najważniejsza – Tu ustalamy wyrazy które mają znaleźć się na naszym przycisku – 
wpisujemy Witaj ! 
  
Enabled 
 Tu ustalamy czy przycisk będzie się dało wcisnąć czy też nie – my oczywiście zostawiamy True 
(Prawda) 
  
Font 
 W tym oknie możemy ustalić czcionkę, wielkość i efekty dla napisu 
  
Height 
 Wysokość przycisku. Raczej wygodniejsze jest rozciąganie przycisku bezpośrednio na formularzu 
  
Index 
 Ustala  kolejność przeskakiwania focusa. Chodzi o to gdy np. na formularzu ustawimy trzy 
przyciski o nazwie cmdJeden, cmdDwa, cmdTrzy i kolejno ustawimy na nie index 1,3,2 to 
przeskakując „Tab-em” kolejno podświetlą się przycisk cmdJeden (1), cmdTrzy (2), cmdDwa (3). 
Na razie zostawiamy puste. 
  
Left 
 Określa odległość przycisku od lewej krawędzi ekranu. Wygodniej jest przemieszczać przycisk 
bezpośrednio na formie. 
 
  

background image

Style 
 Oznacza czy w przycisku będziemy dokonywać przeróbek kosmetycznych – dla eksperymenu 
zaznaczmy True 
  
BackColor 
 Teraz wracamy się prawie do samego początku. Możemy tu zmienić kolor przycisku. Zmieńmy go 
np. na kolor czerwony (znajduje się w zakładce pallete) 
  
Top 
 Określa położenie przycisku od górnej krawędzi ekranu 
  
Width 
 Określa szerokość przycisku 
  
Visible 
 Określa czy przycisk ma być widoczny na formularzu. Jeśli zaznaczymy false, to po uruchomieniu 
programu zobaczymy pusty formularz. Zostaw więc true 
  
 
Większość wyżej wymienionych opcji działa także na formularzu. No to spróbujmy. Zaznacz 
formularz (To na czym ułożyłeś przycisk). Teraz w oknie „Properties” zobaczyś pogrubiony napis 
„Form1 Form”. Oczywiście jeżeli formularz wydaje ci się za mały to go sobie powiększ. 
Identycznie jak przycisk. Po prostu chwyć za kwadracik i ciągnij. Chmmm. Jak na razie program 
nie wygląda zbyt ciekawie. Na pasku u samej góry formularza widnieje napis „Form1”. Chyba czas 
aby to zmienić... Masz już zaznaczoną formę ? No to teraz w oknie Properties znajdź „Caption” – o 
jest tu nasze Form1. Zmień to na np. „Mój pierwszy program”. Efekt widać od razu ! Może 
zmienimy teraz kolor naszego formularza, co? No dobra – odnajdź funkcję „BackColor”. Teraz 
rozwiń zawartość – wybierz zakładkę „Palette” i wybierz dowolny kolor. Dla przykładu jaskrawy 
zielony. Ha ! Program zaczyna fajnie wyglądać. Niestety to co pokazałem do tej pory to tylko 
umieszczanie składników na formie i upiększanie wyglądu. Ale my chcemy aby ten program coś 
robił. Np. wyświetlił komunikat „Witam cię bardzo serdecznie”. Niestety, aby to wykonać musimy 
posłużyć się kodem. Tak, koniec zabawy w „składanie” sobie programu. Teraz musimy się nauczyć 
podstawowych funkcji. Radzę abyś zapisywał sobie składnie poznanych funkcji gdzieś na kartce. 
Chyba,  że dobrze znasz angielski... Później pisząc program możesz akurat zapomnieć sobie jak 
używało się danej funkcji 
 
  
No dobra dość tego pieprzenia. Robota czeka. 
 
Chmmm. Kod, kodem – ale gdzie go wpisać. Musimy zastanowić się kiedy ma wyskoczyć 
komunikat. Oczywiście po kliknięciu na nasz przycisk. No to kliknijmy na przycisk. I co? 
Zaznaczył się tylko. Chmmm. A może dwukrotnie? Jest! Wyskoczyło coś w formie notatnika z: 
  
 
Private Sub cmdwitaj_Click() 
 
End Sub 
 
Co to do cholery jest!? Tu właśnie będziemy pisać kod. Przeanalizujmy go: 
 
Private Sub oznacza początek wykonywania się kodu – logicznie myśląc End Sub kończy. Ale do 
czego jest cmdwitaj1_Click. Chmmm. Cmdwitaj to przecież nazwa naszego przycisku – to właśnie 

background image

tu program rozróżni czy posłużyliśmy się naszym przyciskiem czy czymś innym. Jak pewnie wiesz 
Click oznacza kliknięcia – a więc kliknięcie na przycisku. Tak, tak – kod wykona się dopiero 
wtedy, gdy klikniesz na naszym przycisku. Zaraz, zaraz ale jaki kod? Teraz napiszmy jakiś prosty 
kod wyświetlający okienko z napisem „Witam cię bardzo serdecznie”. Napisz coś takiego 
(oczywiście między Private Sub cmdwitaj_Click() a End Sub: 
 
x = MsgBox("Witam cię bardzo serdecznie") 
 
  
Teraz wystartujmy jakoś program. Możemy to zrobić na trzy sposoby. Najprostszy to przycisk play 
na pasku narzędzi (tym u góry) Jest to ikonka bodajże 12 z brzegu. Możemy też użyć klawisza F5, 
albo z menu wybrać Run-Start. No to do dzieła. Uruchamiamy... 
 
  
Wow ! Działa, działa, działa !!! Wystartował nasz program. Teraz kliknij na przycisku. I co pojawił 
się komunikat? Jest !!! Ale co się rzuca w oko. Na pasku stanu widzimy „Project1”. Trzeba to 
zmienić... 
 
Klikamy na ok. i zamykamy uruchomiony program. No... wróciliśmy do kodu. Teraz zamiast x = 
MsgBox("Witam cię bardzo serdecznie") wpisz: 
 
  
x = MsgBox("Witam cię bardzo serdecznie",vbInformation+vbAbortRetryIgnore,"Witaj !") 
 
  
I co to zmieniło? Sam zobacz. Wystartuj program jeszcze raz. Tak zmieniliśmy tytuł, ale także 
dodaliśmy ikonkę obok komunikatu oraz mamy trzy przyciski. Jak ja to zrobiłem – się dziwisz. Oto 
przepis: 
 
  
X = MsgBox(„Jakiś tam tekst”,ikonka + przyciski, „Tytuł”) 
 
  
Tak wygląda składnia funkcji odpowiedzialnej za wyświetlenie okienka dialogowego. 
 
Oto poszczególne składniki: 
 
X – nazwa zmiennej (O tym w następnej lekcji). Na dziś musisz wiedzieć, w jednej procedurze (w 
naszym przypadku na kliknięciu na przycisk) może wystąpić tylko jedna zmienna o nazwie x 
 
  
Ikonki 
 
vbCritical 
 Ikonka krytyczna (przekreślone czerwone kółeczko z charakterystycznym dźwiękiem) 
  
vbQuestion 
 Ikonka pytania (Dymek, a w nim pytajnik) 
  
vbExclamation 
 Ikonka ostrzegawcza (Żółty trójkąt z wykrzyknikiem) 
  

background image

vbInformation 
 Ikonka informacji (Dymek a w nim literka „i”) 
  
vbSystemModal 
 Brak ikonki. Za to na pasku tytułowym pojawia się ikonka windows 
  
 
Przyciski 
 
vbOKonly 
 Tylko OK. – nie trzeba tego pisać. On i tak jest używany domyślnie 
  
vbOKCancel 
 Przycisk OK. i Anuluj 
  
 
vbAbortRetryIgnore 
 Przyciski Przerwij, Ponów próbę i Zignoruj 
  
vbYesNoCancel 
 Przyciski Tak, Nie, Anuluj 
  
vbYesNo 
 Tylko przyciski Tak i Nie 
  
vbRetryCancel 
 Tylko przyciski Ponów i Anuluj 
  
 
MsgBox zwraca: 
 
1 vbOK 
  
2 vbCancel 
  
3 vbAbort 
  
4 vbRetry 
  
5 vbIgnore 
  
6 vbYes 
  
7 vbNo 
   
 
To będzie Ci potrzebne (chodzi mi o to co zwraca MsgBox) w następnej lekcji gdy poznasz funkcję 
warunkową If. 
 
 
 
 

background image

ZADANIE DOMOWE: 
 
Napisz program z dwoma przyciskami Jeden o nazwie „Witaj” i kolorze czerwonym, a drugi 
„Pytanko” i kolorze jasno niebieskim. Klikając na pierwszym powinien wyświetlić się komunikat 
„Jestem spoko” z ikonką informacyjną i przyciskiem OK. Zmień tytuł na „Przywitanie”. A drugi z 
tekstem „Czy mnie lubisz” z ikonką pytania i przyciskami Tak – Nie, oraz o tytule „Małe pytanko”. 
 
  
W następnej lekcji nauczymy rozpoznawać program co wybrałeś. Tak np. Gdy na pytanie czy mnie 
lubisz odpowiesz „tak” program ci podziękuje. Jeśli nie to wyrazi swój żal. 
 
  
Powodzenia 
 
  
LEKCJA 2 
  
 
Witajcie! Oto druga lekcja programowania w Visual Basicu. Mam nadzieję,  że uporaliście się z 
zadaniem domowym. Teraz obiecane dokończenie programu...  
 
Napisaliśmy program w którym po naciśnięciu przycisku "Pytanko" program wyświetla komunikat 
"Czy mnie lubisz ?" z ikonką pytania i przyciskami Tak – Nie, oraz o tytule „Małe pytanko”. Tak 
więc kod wygląda tak: 
 
Private Sub cmdPytanko_Click 
x = msgbox("Czy mnie lubisz ?",vbQuestion+vbYesNo,"Małe Pytanko") 
End Sub  
 
No to odpalamy nasz program i co? Naciskamy przycisk - dostajemy pytanie, dajemy odpowiedź 
ale nic się nie dzieje... Chmmm. Co by tu zrobić. Może spróbujmy dopisać drugiego message Boxa 
z odpowiedzią .  
 
Private Sub cmdPytanko_Click 
x = msgbox("Czy mnie lubisz ?",vbQuestion+vbYesNo,"Małe Pytanko") 
y = msgbox("Fajnie, że mnie lubisz ! ",vbExclamation,"Małe pytanko") 
End Sub  
 
Odpalamy nasz program. Odpowiadamy na pytanie komputera "Tak". I udało się ! Hurra ! Niestety. 
Nasz program jest zły. Dlaczego? Spróbuj odpowiedzieć komputerowi "Nie". I co? Ale dlaczego? 
Prześledźmy kod programu: 
pierwsza linijka- wiadome deklaracja zdarzenia 
druga linijka - program ma wyświetlić komunikat z pytaniem po odpowiedzi: 
trzecia linijka - program ma wyświetlić podziękowanie. 
czwarta linijka - koniec  
 
Faktycznie bez sensu - a może by dopisać czwartą linijkę z odpowiedzią "Strasznie mi przykro".   E 
tam to by było jeszcze głupsze. Po daniu odpowiedzi najpierw zobaczylibyśmy komunikat 
"Fajnie...", a za chwilę "Przykro mi".  
 

background image

Musimy zastosować funkcję warunkową IF. O niej będzie więcej w następnych lekcjach. Na razie 
musisz wiedzieć, że IF znaczy (Jeśli). Chyba już przeczówacz do czego będzie służyć. Tak, to ona 
zdecyduje o tym co ma zostać wyświetlone. Ale jak?  
 
Musisz teraz wrócić do poprzedniej lekcji i zobaczyć co zwraca funkcja MsgBox. Jak to co zwraca? 
Ach. Nie wytłumaczyłem jeszcze tego. Przed każdym msgBox stoi pewna zmienna (np. 
x=msgbox(...)). Zwraca tzn. zapisuje do x. Jeśli Ty naciśniesz przycisk Tak wtedy x=6 a jeśli Nie 
wtedy x=7 (dlaczego - zobacz co zwraca MsgBox !). Tak nasz vbYes (= 6) to Tak a vbNo (= 7) to 
Nie. Czy wszystko się zgadza? Myślę, że tak ! No i teraz funkcja IF ma rozstrzygnąć co się stanie 
gdy x=6 i gdy x=7.  
 
UWAGA !!! Potrzebna nam tu będzie jeszcze jedna funkcje (BARDZO WAŻNA). W kolejnych 
lekcjach dowiesz się więcej o tej funkcji.    Praktycznie każdy program musi ją zawierać. Jest to 
funkcja DIM. funkcja jest odpowiedzialna za pamiętanie. O co chodzi. Zmienna x może mieć 
wartości 6 lub 7. I tu właśnie ma ona zapamiętać co wybrałeś - czy 6 czy 7. Podam to na 
przykładzie:  
 
Private Sub cmdPytanko_Click 
x = msgbox("Czy mnie lubisz ?",vbQuestion+vbYesNo,"Małe Pytanko") 
'w linijce powyżej rozstrzyga się sprawa o x. Jeśli na pytanie odpowiesz tak x=6, a jeśli Nie to x=7. 
Niestety, gdy dotrze do tej linijki x=0 gdyż program nie ma obowiązku zapamiętania x 
End Sub  
 
A więc jak to zrobić aby było dobrze? Po prostu dopisujemy DIM x - (Pamiętaj x)  
 
Private Sub cmdPytanko_Click 
Dim x 
x = msgbox("Czy mnie lubisz ?",vbQuestion+vbYesNo,"Małe Pytanko") 
'teraz x=7 aż do zakończenia tej procedury (czyli do End Sub) 
End Sub  
 
Czyli nasz program wygląda tak:  
 
Private Sub cmdPytanko_Click 
Dim x 
x = msgbox("Czy mnie lubisz ?",vbQuestion+vbYesNo,"Małe Pytanko") 
End Sub  
 
Teraz dodamy instrukcję IF. Ale przed tym musimy poznać jej składnię:  
 
If x=6 then 
y = msgbox("Fajnie, że mnie lubisz ! ",vbExclamation,"Małe pytanko") 
End If 
If x=7 then 
z = msgbox("Strasznie mi przykro...",vbExclamation,"Małe pytanko") 
End IF  
 
Przetłumaczmy to na polski:  
 
Jeśli x będzie równy 6 to 
Komunikat z tekstem "Fajnie...", ikonką wiadomości i tytule "Małe pytanko" 
Zakończenie instrukcji po jeśli = 6 

background image

Jeśli x będzie równy 7 to 
Komunikat z tekstem "Przykro mi...", ikonką wiadomości i tytule "Małe pytanko" 
Zakończenie instrukcji jeśli = 7  
 
W takim razie nasz program będzie wyglądał tak :  
 
Private Sub cmdPytanko_Click 
Dim x 
x = msgbox("Czy mnie lubisz ?",vbQuestion+vbYesNo,"Małe Pytanko") 
If x=6 then 
y = msgbox("Fajnie, że mnie lubisz ! ",vbExclamation,"Małe pytanko") 
End If 
If x=7 then 
z = msgbox("Strasznie mi przykro...",vbExclamation,"Małe pytanko") 
End IF 
End Sub  
 
Teraz cały program tłumaczę jeszcze raz:  
 
Wyświetl komunikat z pytaniem (Tak=6, Nie=7) 
Jeśli x będzie równy 6 to 
Komunikat z tekstem "Fajnie...", ikonką wiadomości i tytule "Małe pytanko" 
Zakończenie instrukcji jesli = 6 
Jeśli x będzie równy 7 to 
Komunikat z tekstem "Przykro mi...", ikonką wiadomości i tytule "Małe pytanko" 
Zakończenie instrukcji jeśli. 
Koniec procedury  
 
Prawda, że logiczne?  
 
W tej lekcji poznałeś dwie nowe funkcje - DIM oraz IF. O DIM-ie dowiesz się wszystko w 
następnej lekcji. O IF-ie troszeczkę później.  
 
W tej lekcji nie zadaję zadania, gdyż nie omówiłem tutaj szczegółowo żadnej z funkcji. Poćwicz 
sobie jedynie to co poznałeś.  
 
Tak więc do następnego spotkania w lekcji 3  
 
 
LEKCJA 3 
  
 
Właśnie dotarłeś do lekcji 3 mojego kursu. Jak obiecałem na tej lekcji poznasz szczegółowe 
zastosowanie funkcji DIM. No więc zaczynamy  
 
Jak pamiętasz funkcja DIM ma zapamiętywać co w danej chwili znajduje się w zmiennej. Teraz 
pytanie. Czy do poniższego kodu muszę dodać instrukcję DIM? 
 
x=7 
if x=6 then msgbox("Witaj") 
 

background image

Odpowiedź brzmi NIE ! Dlaczego - przecież program musi wiedzieć, że x=7. PAMIĘTAJ - DIM 
służy do pamiętania zmiennych a nie stałych. Przecież x zawsze będzie równy 7 ! To jest 
zadeklarowane w pierwszej linijce. Program dochodząc do linijki 2 napotyka instrukcję IF - czyli 
jeśli x=6 ... Program więc cofnie się, aby sprawdzić ile to jest x. Linijka wyżej - oświadczenie, że 
x=7. A poniżej trzeba zastosować instrukcję DIM ? 
 
x = msgbox("Czy mnie lubisz ?",vbQuestion+vbYesNo,"Małe Pytanko") 
If x=6 then 
y = msgbox("Fajnie, że mnie lubisz ! ",vbExclamation,"Małe pytanko") 
End IF 
 
TAK! To jest nawet przykład z ostatniej lekcji. Ale myślę,  że teraz kapniesz o co chodzi. 
Dochodzimy do linijki 2 i mamy instrukcję IF. Teraz program musi sprawdzić ile to jest x. Wraca 
się więc linijkę wyżej i widzi x=msgbox(...). Niestety - program w tym momencie nie pamięta czy 
wybrałeś Tak czy też Nie. Przecież od tego zależy wartość x. Tak więc program nie wiedząc co jest 
w x - przyporządkowuje mu wartość 0 i program jest do bani. Tak więc MUSISZ dodać na 
początku programu instrukcję DIM x. 
 
Wiem ze swojego doświadczenia,  że  łatwo zapomnieć o dopisaniu tej funkcji. Później musiałem 
dochodzić gdzie tkwi błąd w moim programie. Jednak Visual Basic 6 (i chyba 5 też) oferuje funkcję 
przypominania. Tzn. jeśli nie dodamy instrukcji DIM która będzie potrzebna VB zasygnalizuje 
błąd. Warto ją  włączyć. Wystarczy z menu wybrać Tools - Options. I teraz zaznaczmy funkcję 
"Require Variable Declaration". Od tej pory VB zawsze nam przypomni o zapomnianym DIM-ie. 
 
No! Pierwsze zastosowanie DIM-a z głowy. Musisz jednak wiedzieć, że DIM może przechowywać 
inne dane. Do tej pory wiesz, że ta instrukcja przechowuje dane liczbowe. Tak jak w powyższych 
przykładach miała zapamiętać czy x=6 czy 7. Ale trzeba wiedzieć,  że DIM może przechowywać 
dane innego typu. Oto one: 
   
 
Boolean 
 Przetrzymuje True lub False 
  
Byte 
 Liczby całkowite z zakresu od 0 do 255 
  
Currency 
 Liczby z zakresu -922337685477,5808 do + ( -||- ) 
  
Date 
 Data od 01.01.0100 - 31.12.9999 
  
Decimal 
 Liczba zapisana z dokładnością do 28 liczb po przecinku 
  
Double 
 Liczba z zakresu -1,79769313486232E+308 do + ( -||- ) 
  
Integer 
 Liczba z zakresu od -32768 do 32767 
  
 

background image

Single 
 Liczba z zakresu -3402823E+38 do + ( -||- ) 
  
String 
 Dane znakowe (alfanumeryczne) 
  
Variant 
 Dowolne - nie musimy tego pisać gdyż Variant jest domyślnie 
  
 
Funkcję DIM deklarujemy następująco:  
 
DIM x as typ 
 
Jak widziałeś wcześniej w zadaniu pisaliśmy samo DIM x. Jest to równoznaczne z zapisem: 
 
DIM x as Variant  -  gdyż variant jest domyślne. 
Od tej pory będziemy stosować następujący zapis: 
DIM x as Byte   - dlaczego? Pomyślmy... Jakie wartości może przyjąć x ? Tylko 6 i 7. A więc Byte 
jest najmniejszym zakresem spełniającym nasze kryteria. A dlaczego nie zostawić po prostu DIM x 
?  Instrukcja DIM x jest bardziej pamięciożerna przez co program będzie działał trochę wolniej. Na 
szybkich komputerach i małych programach nie odczujemy tego. Jeśli jednak przyjdzie nam 
napisać objętościowo duży program na wolny komputer, będzie on działał trochę wolniej niż z 
poprawnymi instrukcjami DIM.  Uffff... No myślę, że kapujecie o co chodzi. Tak więc pamiętajcie. 
Stosujcie najmniejszy zakres spełniający kryteria zmiennej !!!! 
 
A co się stanie gdy pomylimy sobie zakresy? Np gdy zmienna x będzie mogła mieć wartości 6 i 7 a 
zakresem będzie typ (Boolean - czyli Prawda lub Fałsz) ? Spróbujmy. 
 
Na formie stwórz przycisk. Kliknij na niego dwukrotnie i wpisz: 
 
Dim x As Boolean 
x = MsgBox("Co wybierasz ?", vbYesNo) 
c = MsgBox(x, vbCritical) 
 
Przeanalizujmy kod. Pierwsza linijka - deklarujemy zmienną dla wartości True lub False. 
Druga linijka - znany nam MessageBox z pytaniem. Pamiętaj,  że zależnie od naszego wyboru x 
powinien wynosić 6 lub 7 
Trzecia linijka. Co to błąd ? x nie jest wzięte w cudzysłów ?! Nie to nie błąd. Nie chcę aby powstał 
komunikat o treści "x" ale żeby komunikat podał nam co jest w x. Innymi słowy mówiąc powinien 
pojawić się komunikat z treścią: "6" lub "7". No to uruchamiamy nasz program i co? Program 
zamiast 6 lub 7 pokazał jakieś True! Właśnie oznacza to że mamy źle zadeklarowaną zmienną x. 
Zmieńmy więc instrukcję DIM x as boolean na DIM x as byte. I co teraz? Uruchom program, 
odpowiedz na pytanie twierdząco. I co jest 6 ? A przecząco - jest 7! Tak wszystko działa jak trzeba. 
Myślę,  że wiesz już coś o deklarowaniu zmiennych. Okazję do poćwiczenia będziemy mieć w 
następnej lekcji. 
 
Ale przed zakończeniem obecnej lekcji muszę Wam jaśniej wytłumaczyć o co chodziło z tym 
MsgBox-em wyświetlającym zmienną. 
 
 
 

background image

Napiszmy mały program: Jak zwykle na formie przycisk. 2x na niego i piszemy: 
 
to_co_w_msgBox = "Co jest?" 
c = MsgBox(to_co_w_msgBox)  
 
Uruchamiamy - i dostajemy komunikat "Co jest? ". A teraz w message boxie dodajmy cudzysłowy: 
c=MsgBox("to_co_w_msgBox"). I co teraz? Dostajemy komunikat "to_co_w_msgBox" - no myślę, 
że zrozumiałeś o co chodzi ! 
 
 
LEKCJA 4 
  
 
Witajcie po raz kolejny. W dzisiejszej części kursu nauczycie się posługiwać TextBox-em oraz 
Label-em (Etykietą). Napiszemy prosty program, w którym będziemy mieć TextBox-a w którego 
trzeba będzie wpisać liczbę. Po naciśnięciu przycisku, liczba zostanie podniesiona do kwadratu, a 
wynik zobaczymy w polu Label.  
 
Co to jest Label? Właśnie - label znaczy etykieta. Jest to pewne pole tekstowe, w którym widnieje 
jakiś tekst. Tym różni się od pola tekstowego, że nie możemy edytować jego zawartości. Tak więc 
TextBox będzie służył do wpisywania tekstu przez nas, a w label komputer zwracał nam będzie 
odpowiedź (Której oczywiście nie będzie się dało edytować). Tak więc zaczynamy: 
 
Odpalamy VB. Na formie układamy (gdzieś na dole) przycisk - nadajemy mu nazwę cmdLicz, a w 
Caption wpisz Licz. No mamy przycisk. Tylko gdzie będziemy teraz wpisywać liczbę ? Oczywiście 
w pole tekstowe. Ale jak? Musimy go odnaleźć na pasku narzędzi (pamiętaj - wszystko co 
układamy na formie jest po lewej stronie). Jest to biały prostokąt z wpisanymi literkami "ab". 
Widzisz? Nie? Drugi od góry, druga kolumna. No! Teraz ustawmy go gdzieś na formie. Najlepiej u 
góry. Ustawia się go tak samo jak przycisk (CommandButton). O jest TextBox. Domyślnie wpisane 
jest tam Text1. No to musimy to zmienić. Nie szukaj Caption ! Odpowiednikiem tego jest tutaj 
Text. Odnajdź go w oknie properties. Teraz wyczyść pole. No mamy czyściutkiego texbox-a. Teraz 
zmieńmy jego nazwę np. na txtLiczba. OK. Pomyślmy teraz przez chwilę. W pole tekstowe wpiszę 
np. 7, przycisnę przycisk licz i co? No właśnie - i co? Możemy zastosować funkcję MsgBox, aby 
wyświetlała odpowiedź. E tam. Spróbujcie sami. Ja na tej lekcji od razu chcę Was nauczyć coś o 
funkcji Label. Tak więc na formie układamy Label. Jest on widoczny na pasku narzędzi jako duża 
litera "A", tak, to ta obok TextBox-a. I co - to tylko jakieś szare pole bez kropek. Widzimy w nim 
napis Label1 - zmieńmy to na "Twój wynik to:" oczywiście w opcji Caption. Nadajemy mu nazwę 
lblStalyTekst i zmniejszamy pole tak aby obejmowało jedynie tekst. Obok niego postawmy drugie 
pole Label, nadajmy mu nazwe lblWynik i wyczyśćmy zawartość (Caption). Aby wszystko 
elegancko wyglądało zmień etykietę Formy na "Do kwadratu".  
 
Teraz zajmiemy się kodem. Program zacznie liczyć po naciśnięciu przycisku licz. Tak więc kod 
umieścimy wewnątrz niego. Klikamy więc dwukrotnie na przycisku i pomyślmy. Co nasz program 
ma robić? Ma podnieść liczbę wpisaną do pola tekstowego do kwadratu i wynik wyświetlić w polu 
label. Wyglądać to będzie tak: 
 
lblWynik.Caption = txtLiczba ^ 2 
 
Co to znaczy? Otóż przed przeliczeniem w lblwynik.Caption nie ma nic. Chyba wiesz co to jest 
lblWynik? Nie. To jest nasze pole Label w którym nie ma nic wpisanego. Dobra - ale co to jest w 
takim razie to Caption ? A pamiętasz jak kasowałeś zawartość pola Label? Właśnie w caption. Jeśli 
byś w caption wpisał np ble,ble,ble to na twojej  etykiecie pojawiłby się takiż tekst. My teraz 

background image

chcemy aby w naszej etykiecie pojawił się wynik. I właśnie do tego go teraz zmuszamy. Po prawej 
stronie zwykłe równanie czyli nasza liczba do kwadratu. Uruchom program - i co działa? 
 
Pamiętaj,  że w okienko textowe musisz wpisać jakąś liczbę inaczej wyjdzie błąd. Kiedyś nauczę 
Was jak zapobiegać takim przypadkom, na razie jednak musisz poznać podstawy. 
 
ZADANIE DOMOWE 
 
Napisz program z dwoma polami tekstowymi, czterema przyciskami i jednym polem label. Program 
ma wykonywać pewne działania matematyczne. Przyciski kolejno powinny wykonywać funkcje: 
dodawanie, odejmowanie, mnożenie i dzielenie liczb podanych w textbox-ach. Wynik oczywiście 
powinniśmy dostać w polu Label. 
 
UWAGA !!! Przy dodawaniu będą pewne problemy. (UWAGA !!! Posiadacze wersji VB 5 muszą 
to zastosować do wszelkich operacji arytmetycznych – czyli także mnożenie, dzielenie, 
odejmowanie itp...) Mianowicie jeśli w pierwsze pole textowe wpiszesz 4 a w drugie 6, to po 
zsumowaniu nie ujrzysz liczby 10, a 46. Dlaczego? Visual Basic myśli, że operujesz na literach i 
dodajesz je. Musisz programowi powiedzieć, że to co wpiszesz w pole tekstowe jest liczbą. Służy 
do tego funkcja CSng. Jak ją użyć: 
 
Private Sub cmddodaj_Click() 
Dim a, b As Single 
a = CSng(txta) 
b = CSng(txtb) 
lblwynik = a + b 
End Sub 
 
Przyjąłem, że pierwszy textbox nazywa sie txta a drugi txtb. 
W tym momencie przyporządkowujesz zmiennej "a" to co jest w textbox-ie1 jako liczbę. Pamiętaj, 
że w Textbox-ie jest zawsze tekst (liczba w końcu to też tekst) . Musisz ten tekst dopiero przerobić 
na liczbę, a dopiero potem wykonywać działania arytmetyczne. 
 
Aha, zapomniałem napisać, jak uruchomić zapisany projekt. Po rozpakowaniu programu, 
uruchamiamy plik z rozszerzeniem VBP (nie frm !). 
 
Miłej pracy i do następnego kursu !  
 
 
LEKCJA 5 
 
Ach.. Jak ten czas leci. To już lekcja piąta kursu VB dla początkujących. Jestem tylko ciekawy czy 
zrozumiałeś ostatnio funkcje CSng. Tłumaczę wszystko jeszcze raz.  
 
Najprościej będzie to zrobić na pewnym przykładzie. Zróbmy program z dwoma polami textowymi 
(textBoxem), etykietą (Label) i przyciskiem. Nazywamy je kolejno txtliczba1, txtliczba2, lblwynik i 
cmdlicz. Program będzie musiał dodać do siebie liczby wpisane w textboxy, a rezultat wyświetlić w 
etykiecie. Tak więc w przycisku umieszczamy kod: 
 
lblwynik = txtliczba1 + txtliczba2 
 
Niby wszystko w porządku. Uruchamiamy program. I jak w zdaniu otrzymujemy fałszywy wynik. 
Pomyślmy. Co by się stało gdyby zamiast liczb do textbox-ów wpisalibyśmy jakieś litery ? 

background image

Spróbujmy. W pierwszy np. wpisz "Al" a w drugi "ina" i zsumuj - co wyszło? Alina?  Właśnie, dla 
VB znak "+" ma dwojakie znaczenie. W przypadku zwykłych znaków jest to konkatencja, czyli 
połączenie dwóch łańcuchów. Wszelkie łańcuchy znaków Visual Basic interpretuje w 
cudzysłowach (""), daty w ##, a liczby zostawia same. W tym przykładzie dajesz programowi 
instrukcje: 
 
lblwynik = "To co wpisane w textbox1" + "To co wpisane w textbox2"  
 
Dla przykładu jeśli w textboxie1 masz wpisaną liczbę 3 a w textboxie2 liczbę 7 to VB rozumuje: 
 
lblwynik = "3" + "7" - a to daje 37 
 
No więc jak zrobić aby 3+7=10 ? Właśnie tak jak tu jest zapisane - program musi rozumieć: 
 
lblwynik = 3 + 7 - a to da w wyniku 10 
 
No dobra, ale jak to zrobić ? Musimy wiedzieć, że istnieje coś takiego jak konwersja danych. Na 
początku mamy daną typu String czyli "3", a po konwersji daną typu Single czyli 3. 
Możemy więc program "naprawić" w ten sposób:  
 
Zamiast 
lblwynik = txtliczba1 + txtliczba2   wpisać  
lblwynik = CSng(txtliczba1) + CSng(txtliczba2)  
 
Wypróbujmy nasz program. Działa jak trzeba ? No uporaliśmy się z tym. Jednak jest bardziej 
elegancki (bardziej przejrzysty) sposób:  
 
Dim a,b as single 
a = CSng(txtliczba1) 
b = CSng(txtliczba2) 
lblwynik = a + b  
 
Ta lekcja była krótka, ale bardzo ważna. Musisz zrozumieć to, gdyż bez tego nie będziesz w stanie 
pisać programów operujących na liczbach !!!  
 
ZADANIE  
 
Na ostatniej lekcji nie omówiłem opcji związanych z etykietą. Na zadanie macie poznać 
najważniejsze opcje tzn. pobawić się nimi - fajnie co?   
 
-BackColor - zmienia kolor tła etykiety 
-BorderStyle - efekt wgłębienia 
-Caption - chyba wiadomo o co chodzi ;) 
-Font - chyba też wiadomo... 
-ForeColor - kolor tekstu na etykiecie  
 
 
LEKCJA 6 
  
Dzisiaj poznamy funkcję InputBox. Jest to komunikat, z wbudowanym polem tekstowym. Może 
nas np. zapytać o imię, a my mu od razu odpowiemy. Chcesz spróbować ? No to do dzieła  
 

background image

Jak zwykle tworzymy program z przyciskiem. Wewnątrz niego umieszczamy następujący kod: 
 
Dim x as string 
x = InputBox ("Jak masz na imię ?") 
 
Uruchamiamy nasz program i co? Fajne okienko, ale jak zmienić tytuł?  
 
x = InputBox("Jak masz na imię?"," Tutaj tytuł", "Tu domyślna odpowiedź") 
 
Dobra, napiszmy program który pyta się ciebie jak masz na imię, a następnie w MsgBox-ie 
przywita nas "Witaj -imię-" 
 
W przycisku umieszczamy następujący kod : 
 
Dim x,y as string 
x = InputBox ("Jak masz na imię ?","Przywitanie","Może Marek...") 
y = MsgBox ("Witaj_" & x ,vbExclamation,"Przywitanie") 
 
Uruchamiamy i co? Fajnie! Program działa. No tak, ale o co tu chodzi ? Wyjaśniem linijka po 
linijce: 
 
1.Deklaracja zmiennych x i y - chyba nie muszę tłumaczyć... 
2.Pytanie do użytkownika. To co wpiszesz w pole tekstowe zostanie zapisane do zmiennej x 
3.MessageBox z tekstem Witaj -i tu to co w x- 
 
O co chodzi z tym msgboxem? Po otwarciu nawiasu mamy zwykły tekst wpisany w cudzysłów. 
Później widzimy jakieś & x. znak & służy do łączenia  łańcuchów (podobnie jak +). W tym 
momencie łączy on tekst "Witaj" z x-em czyli naszym imieniem. Powstaje więc jeden ciąg znaków 
który widzimy w msgBox-ie. Dalej już wiadomo. 
 
------------------------------------------------------------------------------------------------- 
Jeśli masz jakiekolwiek pytania w związku z kursem Visual Basica, nie krępuj się - pisz do mnie na 
adres: slash@ptik.prv.pl .Twój list nie zostanie bez odpowiedzi. Jeśli nawet nie masz pytań to i tak 
napisz czy podoba ci się ten kurs, co chciałbyś w nim zmienić. Napisz w ogóle cokolwiek, abym 
wiedział, że ktoś ten kurs czyta. 
------------------------------------------------------------------------------------------------- 
 
ZADANIE 
 
Poćwicz sobie funkcje MsgBox, InputBox, przypomnij sobie instrukcję IF.  
 
 
LEKCJA 7 
  
 
Witajcie znowu ! Dziś nauczycie się posługiwać funkcją IF. If,if,if - czy ja tego już gdzieś nie 
słyszałem? Tak, właśnie tą funkcję miałeś sobie na dzisiaj przypomnieć.  
 
Co byśmy dzisiaj napisali ? Może program, który uruchomisz tylko po podaniu hasła. Fajny 
pomysł. Po drodze poznasz jeszcze kilka funkcji. Tak więc zaczynamy... 
 

background image

Teraz pomyślmy. Kiedy i jak mamy podać hasło. Najlepszym sposobem będzie InputBox (też 
miałeś go na dziś powtórzyć). Czyli jak zwykle przycisk... Zaraz, zaraz. Ale my chcemy, aby 
okienko proszące nas o podanie hasła uruchomiło się przed programem. Jak to zrobić. Pamiętasz 
jak wprowadzaliśmy kod do przycisku? Tak - dwa razy click na przycisku. Musisz wiedzieć, że kod 
możemy wprowadzać praktycznie do każdego obiektu ustawionego na formie, a także na niej 
samej. I tak właśnie zrobimy w naszym przypadku. Kliknijmy dwa razy na formę. Pojawi się coś 
takiego: 
 
Private Sub Form_Load() 
 
End Sub 
 
Co to jest? Tu właśnie jest miejsce na wprowadzenie kodu który będzie wykonany przed 
załadowaniem się formy (świadczy o tym słowo Load). Tak więc napiszmy funkcję wyświetlającą 
okienko tekstowe z prośbą o podanie hasła: 
 
Dim haslo as string 
haslo = InputBox ("Proszę podać hasło dostępu","Hasło") 
 
Teraz gdzieś musimy ustalić jakie będzie hasło. A więc piszemy dalej: 
 
If haslo <> "SLASH" then 
x = msgbox("Podałeś złe hasło",vbcritical,"Błąd") 
End 
Else 
y = msgbox("Podałeś dobre hasło",vbExclamation,"OK") 
End IF 
 
Cholera ! Ale ten SLASH zamącił. Co to ma być! 
Nie przejmuj się ! Zaraz Ci wszystko wytłumaczę, ale najpierw uruchom program. 
Pojawia się InputBox - podaj złe hasło. Wyskakuje komunikat i... program się zamknął. No dobra - 
uruchamiamy go jeszcze raz i tym razem podajemy dobre hasło - i co - tak program uruchomił się. 
Czas by Wam wytłumaczyć co się tu dzieje: 
 
1. Dim haslo... - chyba wiesz ;). Tu oczywiście deklaracja zmiennej 
2. Input Box - tu właśnie pojawia się prośba o podanie hasła 
3. If haslo <> "SLASH" then - Jeżeli hasło będzie mniejsze lub większe (czyli nierówne - nie będzie 
się zgadzało) od "SLASH" wtedy... 
4. msgbox - Komunikat o złym podaniu hasła 
5. End - i tu UWAGA. Nowe polecenie - służy ono do kończenia programu - czyli jeśli złe hasło 
program się zamyka 
6. Else - UWAGA - rozszerzenie instrukcji IF - oznacza ono "W przeciwnym przypadku" - o co tu 
chodzi ? Wróć do linii 3. Widzisz tam instrukcję Jeżeli hasło nierówne "SLASH" to..., a tu mamy w 
przeciwnym przypadku - czyli hasło równe "SLASH". Oczywiście możemy napisać 
If haslo = "SLASH" then ...       -  ale przecież else jest dużo krótsze . 
7. MsgBox - wiadomo, komunikt, że poprawnie podałeś hasło 
8.End If - tu kończymy instrukcję IF/Else 
No i w końcu dotarliśmy do końca, pojawia się forma ! 
 
No, myślę,  że zrozumiałeś o co tu chodziło. Napiszmy jeszcze jeden program pytający się nas o 
wiek. 
 

background image

Na formie układamy przycisk. Dodajemy do niego następujący kod: 
 
Dim wiek As Byte 
Dim x, y, z As Byte 
wiek = InputBox("Podaj, ile masz lat", "Pytanie o wiek", "17") 
If wiek < 12 Then 
x = MsgBox("Jesteś jeszcze za młody na pewne rzeczy", vbExclamation, "Młody") 
ElseIf wiek >= 40 Then 
y = MsgBox("Jesteś w pełni wieku", vbExclamation, "Strszy") 
Else 
z = MsgBox("Jesteś jeszcze młody", vbExclamation, "Średni wiek") 
End If 
 
Teraz objaśniam: 
1,2,3. Pierwszych trzech linijek chyba nie muszę tłumaczyć ;) 
4. If wiek < 12 then - jeśli wiek będzie mniejsy od 12 to... 
5. MsgBox - Komunikat, że jesteś za młody 
6. UWAGA - nowe wyrażenie ElseIF - jak się domyślasz jest to połączenie instrukcji Else (w 
przeciwnym przypadki) z IF (Jeśli) - i co z tego wychodzi? W przeciwnym przypadku jeśli... 
Dlaczego ? Pamiętaj, że nie możemy użyć więcej niż jednej instrukcji IF pod rząd. Co najwyżej IF i 
Else - ale nigdy IF, IF, Else - po prostu wyskoczy błąd. Zamiast tego stosuje się instrukcję ElseIF, 
którą możesz użyć w dowolnej ilości w programie. 
Tłumaczę - jeśli wiek będzie większy lub równy 40 to... 
7. y=MSgBox... - wiadomo o co chodzi... 
8. Else - w przeciwnym przypadku... 
9. Następny MessageBox 
10. Zakończenie instrukcji IF 
 
I co łatwe?  
 
------------------------------------------------------------------------------------------------- 
Pamiętaj,  że jeśli masz jakikolwiek problem z wyżej zamieszczonym kursem lub masz jakieś 
pytanie nie krępuj się - pisz do mnie na adres: slash@ptik.prv.pl .Twój list nie zostanie bez 
odpowiedzi. Jeśli nawet nie masz pytań to i tak napisz czy podoba ci się ten kurs, co chciałbyś w 
nim zmienić. Napisz w ogóle cokolwiek, abym wiedział, że ktoś ten kurs czyta. 
------------------------------------------------------------------------------------------------- 
 
Myślę,  że na dzisiaj wystarczy. Pewnie już myślisz co ten Slash wymyślił na następny kurs - 
powiem ci tylko jedno - prawie to samo co dzisiaj. Poznasz jedynie połączenie instrukcji IF z 
operatorami logicznymi. Na dziś zrób sobie przerwę...  
 
 
LEKCJA 8 
  
 
Wyspani ? No to do dzieła !!! Dzisiaj dowiesz się co to są operatory arytmetyczne i jak ich używać. 
Myślę,  że umiesz już posługiwać się instrukcją IF. Będzie nam dzisiaj bardzo potrzebna. Dobra. 
Czy ktoś wie co to są operatory arytmetyczne? Nie? No to zaczynamy:  
 
W Visual Basicu będziemy posługiwać się następującymi operatorami: And , Or, Not. 
And to nasze polskie "i", Or to lub, a Not to nie. Ale o co tu właściwie chodzi. Wyjaśnię to na 
prostym przykładzie:  

background image

Mamy dwie firmy które przynoszą dochody. Tak więc uruchamiamy VB, tworzymy dwa pola 
tekstowe i przycisk. Pierwsze pole nazywamy txtFirma1, a drugi txtFirma2, oczywiście czyścimy 
ich zawartość (Text). Przycisk nazwijmy np. cmdWynik. Nadajmy mu etykietę (Caption) "I co ?". 
Teraz napiszemy procedurę, tak abyśmy dostali gratulacje jeśli dochody jednej i drugiej firmy 
przekroczą 5000 zł. No to do przycisku "I co?" dodajemy kod. No właśnie, ale jaki. Jak się pewnie 
domyślasz będziemy musieli użyć instrukcji IF. Czyli Jeżeli dochód pierwszej firmy będzie 
większy niż 5000 to komunikat... Zaraz, a co z drugą firmą? Pierwsza może przynieść zysk w 
wysokości 6000 zł, a druga straty w wysokości 9000 zł. I co? Program ma nam pogratulować ? 
Można by użyć prostej funkcji matematycznej. Mianowicie dodawania. Skoro i jedna i druga firma 
ma przynieść zysk pow. 5000 zł, no to w sumie mają przynieść zysk 10000 zł. No dobra. Ale jak 
pierwsza przyniesie zysk 20000 zł, a druga jakąkolwiek stratę to program też ma nam gratulować. 
Nie sądzę. My musimy zaznaczyć,  że i jedna i druga ma być dochodowa i przynosić zysk pow. 
5000 zł. Po polsku powiedzielibyśmy tak:  
 
Jeżeli firma1 przyniesie zysk pow. 5000 i firma2 przyniesie zysk pow. 5000 zł to... gratulacje.  
 
I tak właśnie będzie brzmiał Visual Basicowy język:  
 
Dim x 
IF txtfirma1 > 5000 and txtfirma2 > 5000 then 
x = msgBox("Gratulacje",vbInformation,"Dochód") 
End IF  
 
Uruchom program i co? Wpisz obydwie dane pow. 5000. Otrzymujesz gratulacje. A zmień jedną z 
danych np. na 4000. Gratulacji już nie otrzymujemy. No więc program działa. Myślę,  że już 
rozumiesz operator And. Jeśli tak, to nie będziesz mieć żadnych problemów z operatorem Or (lub). 
Spróbujmy zamienić w naszym programie and na or. Teraz rozumiemy to tak:  
 
 Jeżeli firma1 przyniesie zysk pow. 5000 lub firma2 przyniesie zysk pow. 5000 zł to... gratulacje.  
 
Uruchamiamy program wpisujemy np. 6000 i 7000. I co? Gratulacje. Tutaj działa tak samo jak z 
And. No dobra. Zmieńmy jedną daną np. na 2000. I co? Także gratulacje. W tym przypadku 
program szuka w obydwu polach tekstowych liczby większej od 5000. Jeśli znajdzie jakąkolwiek 
(czyli w txtFirma1 lub txtFirma2 lub w obydwu) to otrzymujemy gratulacje. No też myślę, że nie 
miałeś z tym większych problemów. Został nam jeszcze operator Not. Nie powinniśmy go stosować 
-bo gdzieś wyczytałem, że może doprowadzić do nieoczekiwanych wyników - sam jednak nigdy z 
nim nie miałem problemów. Faktycznie, lepiej zastępuje się go odwrotną instrukcją do danej. Oto 
przykład.  
 
Mamy jedną firmę która powinna przynosić dochody. Gratulacje możemy wyświetlić na dwa 
sposoby.  
 
1. Operator NOT  
 
Dim x 
IF NOT txtFirma1 < 5000 then 
x = msgBox("Gratulacje",vbInformation,"Dochód") 
End IF  
 
Jednak pisanie takich instrukcji jest bez sensu. Dlaczego ? Przetłumaczmy:  
 
Jeśli dochód firmy1 NIE mniejszy niż 5000 to... gratulacje  

background image

Lepiej zapisać tak:  
 
IF txtFirma1 >= 5000 then  
 
Prawda, że bardziej czytelne. Staraj się nigdy niestosować tego operatora. Zawsze da się go zastąpić 
przez zmianę znaku na przeciwny.  
 
------------------------------------------------------------------------------------------------- 
Pamiętaj,  że jeśli masz jakikolwiek problem z wyżej zamieszczonym kursem lub masz jakieś 
pytanie nie krępuj się - pisz do mnie na adres: slash@ptik.prv.pl .Twój list nie zostanie bez 
odpowiedzi. Jeśli nawet nie masz pytań to i tak napisz czy podoba ci się ten kurs, co chciałbyś w 
nim zmienić. Napisz w ogóle cokolwiek, abym wiedział, że ktoś ten kurs czyta. 
-------------------------------------------------------------------------------------------------  
 
Teraz jeszcze dopełnienie do InputBox-a. Zapomniałem Wam napisać, jak sprawić aby działał 
przycisk "Cancel" na InputBox-ie. Pokaże to na przykładzie z imieniem, który braliśmy na lekcji 6  
 
Dim x,y as string 
x = InputBox ("Jak masz na imię ?","Przywitanie","Może Marek...") 
IF x = "" then end 
y = MsgBox ("Witaj_" & x ,vbExclamation,"Przywitanie")  
 
Wyjaśnienie do IF-a. Są tu pewnie dwie rzeczy których nie rozumiesz. 
Po pierwsze. Dlaczego akurat x = "" ? Jeśli naciśniesz przycisk "Cancel" VB nie przypisuje nic do 
zmiennej x. Wykorzystuje to właśnie IF który kończy program w tym momencie. 
Po drugie. Dlaczego po "then" nie zakończyłem linii i nie dałem instrukcji End IF. 
Otóż, jeśli nie masz zamiaru użyć instrukcji Else, lub ElseIF, a twoja instrukcja warunkowa mieści 
się w jednej linijce. (jak np. moja - End) nie musisz rozpoczynać nowej linijki i co za tym idzie 
kończyć IF-a  
 
 
LEKCJA 9 
  
 
Witam Was znowu, już w 9 lekcji kursu VB. Zastanawiałem się właśnie ile będzie tych lekcji. Z 
moich wyliczeń wynika, że nie mniej niż 50 !. Tak, tak ! To jest gorzka prawda. Visual Basic choć 
jest językiem programowania łatwym (czytaj najłatwiejszym), to jednak jego możliwości są bardzo 
duże. Te 50 lekcji to będą podstawy, a potem? Myślę,  że potem będziemy mówić coś o bazach 
danych i API (o którym sam nie mam pojęcia - na razie). No dobra skupmy się jednak na dzisiejszej 
lekcji. Dowiesz się na niej coś o funkcji Select Case (Przypadek). 
 
Funkcję Select Case zawsze można zastąpić funkcją IF - jednak funkcja Case ma dużo krótszy 
zapis. Pokażę to na przykładzie programu pytającego nas o wiek.  
Uruchamiamy VB - tworzymy przycisk i dodajemy do niego kod: 
 
Dim wiek As Currency 
wiek = InputBox("Podaj swój wiek...", "Pytanie o wiek") 
If wiek <= 0 Then 
x = MsgBox("To jest niemożliwe", vbCritical, "Błąd") 
ElseIf wiek < 11 Then 
x = MsgBox("Mniej niż 11 - jeszcze dziecko", vbInformation, "Odp") 
ElseIf wiek < 18 Then 

background image

x = MsgBox("Młodzież", vbInformation, "Odp") 
ElseIf wiek < 40 Then 
x = MsgBox("Dorosły do 40", vbInformation, "Odp") 
ElseIf wiek = 100 then 
x = MsgBox("Piękny wiek !!!", vbInformation, "Odp") 
ElseIf wiek < 110 Then 
x = MsgBox("Pełnia wieku...", vbInformation, "Odp") 
Else 
x = MsgBox("Niemożliwe !!!", vbCritical, "Błąd") 
End If 
 
Chyba wiecie o co tu chodzi. W tym kodzie są  błędy - ktoś może mi zarzucić. Dlaczego. Kilka 
lekcji wcześniej pisałem, że nie można kilku MsgBoxom przypisać jednej zmiennej (tutaj x). Ale 
zauważmy,  że program wykonuje zapis tylko raz do x. To przecież jest zależne od IF-a. Nie 
prawdaż ? 
 
Instrukcja IF nie oferuje czegoś takiego jak przedziały. Tak np. nie możemy napisać instrukcji IF z 
przedziałem (np. od 20 do 70). Operujemy tylko operatorami (>,<,=,<=,>=,<>). Taki komfort daje 
nam za to funkcja Case. Teraz napiszemy ten sam program z użyciem właśnie tej funkcji: 
 
Dim wiek As Currency 
wiek = InputBox("Podaj swój wiek...", "Pytanie o wiek") 
Select Case wiek 
Case is < 0 : x=MsgBox("To jest niemożliwe", vbCritical, "Błąd") 
Case 0 to 10: x= MsgBox("Mniej niż 11 - jeszcze dziecko", vbInformation, "Odp") 
Case 10 to 18: x = MsgBox("Młodzież", vbInformation, "Odp") 
Case 18 to 40: x = MsgBox("Dorosły do 40", vbInformation, "Odp") 
Case 100: x = MsgBox("Piękny wiek (100) !!!", vbInformation, "Odp") 
Case is <= 110: x = MsgBox("Pełnia wieku...", vbInformation, "Odp") 
Case else: x = MsgBox("Niemożliwe !!!", vbCritical, "Błąd") 
End Select 
 
Uruchamiamy - i co? Działa tak samo ? No właśnie , tak ma działać. Program stał się dużo 
czytelniejszy, nie prawdaż ? No to teraz tłumaczę o co chodzi: 
 
1. Dim - wiadomo, nakazujemy programowi pamiętać wiek 
2.wiek=InputBox... - Pytanie o wiek, który zostaje zapisany do zmiennej wiek 
3.W odróżnieniu od IF-a, Case należy zacząć - podajemy tutaj co będzie wchodziło w rachubę (w 
naszym przypadku wiek) 
4.Jeśli mniejsze niż zero (oczywiście wiek) to MsgBox - "To jest niemożliwe..." 
5.Jeśli od 0 do 10 to MsgBox - "Mniej niż..." 
6,7 - tak samo 
8. Jeśli 100 to MsgBox - "Piękny wiek" 
9. Jeśli mniej niż 110 to MsgBox "Pełnia wieku..." 
10 Case Else - Jeśli inaczej to MsgBox "Niemożliwe..." 
11 End Select - Zakańczamy Case (Odpowiednik End IF) 
 
Myślę, że wszyscy zrozumieli o co chodzi. I tutaj jedna uwaga - jeśli będziesz używał operatorów 
większy - mniejszy itp. to po instrukcji Case musisz dać  słowo is - jednak nie przejmuj się tym 
zbytnio. Jeśli zapomnisz napisać tego słowa, VB zrobi to za ciebie (sprytne, nie? ;) ). Dwukropek 
jest odpowiednikiem If-owego Then. Tak więc instrukcja Case jest dużo bardziej uproszczona, 
chociaż ma większe możliwości niż IF.  

background image

Kiedy jej używać ? Wtedy gdy masz dużo rozpatrzeń do obsłużenia. Jak sam widziałeś na 
przykładzie - dużo szybciej i milej jest pisać program z Case. Jednak gdy masz tylko dwie opcje do 
rozpatrzenia to funkcja IF jest całkowicie wystarczająca... 
 
------------------------------------------------------------------------------------------------- 
Pamiętaj,  że jeśli masz jakikolwiek problem z wyżej zamieszczonym kursem lub masz jakieś 
pytanie nie krępuj się - pisz do mnie na adres: slash@ptik.prv.pl .Twój list nie zostanie bez 
odpowiedzi. Jeśli nawet nie masz pytań to i tak napisz czy podoba ci się ten kurs, co chciałbyś w 
nim zmienić. Napisz w ogóle cokolwiek, abym wiedział, że ktoś ten kurs czyta. 
------------------------------------------------------------------------------------------------- 
 
Może jakieś zadanie ? Etam, myślę zrozumiałeś i sam jeszcze raz przeanalizujesz dokładnie tą 
lekcję. Jednak jeśli czegoś nie zrozumiesz napisz do mnie. Na dzisiaj to by było na tyle. 
 
 
LEKCJA 10 
  
 
Już dziesiąta lekcja przed nami. Trzeba się za nią wziąć ostro. Zaczynamy nowy dział - pętle. 
Jednak przed tym muszę wam wyjaśnić jak pisze się komentarze w VB. 
Po co mi komentarze i co to w ogóle jest ? Komentarz jest to pomocniczy tekst w projekcie służacy 
jedynie dla nas ! Visual Basic w ogóle na to nie zwraca uwagi. Po co to stosować... Na razie 
piszemy małe programy i komentarz jest zbyteczny. Jeśli jednak będziesz musiał wykonać 
skomplikowany program, sam się w nim pogubisz. Do deklaracji przykładów stosujemy znak ' 
Wszystko co znajdzie się po tym znaku aż do końca linijki jest komentarzem i VB nie zwraca na to 
najmniejszej uwagi. Komentarze zostają zaznaczone przez VB na zielono. Przykład 
 
If x=0 then end  'Jeśli zmienna x będzie równa zero to zakończ program 
 
lub 
 
If x=0 then end 
'Jeśli zmienna x będzie równa zero to zakończ program 
 
Jak widzisz oba przypadki są dobra i czytelne. Dobra, to tyle wstępem - zaczynamy pętle. 
 
Pętla, jak sama nazwa mówi to kilkukrotne powtórzenie się tych samych instrukcji kodu. Ile ich 
będzie, to zależy od warunku pętli. Najprościej jest to wyjaśnić na przykładzie. 
Napiszemy program pytający się nas o wiek. Po jego podaniu wyskoczy komunikat "Masz x lat". 
Oczywiście program musi być  głupioodporny i jeśli podamy, że mamy 0 lub 123 lata powinien 
zapytać nas jeszcze raz o wiek. 
Zabieramy się więc do roboty. Jak zwykle tworzymy przycisk i dodajemy kod: 
 
Dim wiek as string 
Dim b,c as byte 
wiek = InputBox ("Podaj ile masz lat","Pytanie")  'Tutaj program pyta nas o wiek 
If wiek = "" then end    ' Jeśli nacisnęliśmy Cancel 
wiek = Val(wiek)  'opis poniższej funkcji pod przykładem, na razie musisz wiedzieć,  że działa 
podobnie jak CSng( ) 
Do While wiek<=0 or wiek>120 
b = MsgBox ("Musisz podać prawidłowy wiek",vbCritical,"Błąd") 
wiek = InputBox ("Podaj jeszcze raz swój wiek","Pytanie")  'Tutaj program znów pyta nas o wiek 

background image

If wiek = "" then end    ' Jeśli nacisnęliśmy Cancel 
wiek = Val(Wiek) 
Loop 
c = MsgBox("Masz " & wiek & " lat" , vbInformation, "Odpowiedź")  
 
Ho, ho, ho - trzy nowości w programie. No to przetłumaczenie: 
 
1. Dim wiek - deklarujemy zmienną wiek - czyli naszą odpowiedź 
2. Dim x,y - deklaracja tego co zwraca MsgBox 
3. Pytanie o wiek, który zostaje zapisany do zmiennej wiek 
4. If... - jeśli naciśniemy cancel to koniec programu 
5. wiek = Val(Wiek) - pierwsza nowość. Jest to funkcja bardzo podobna do CSng( ). W przyszłości 
właśnie ją będziemy używać. Ale czym się rożni? Jeśli byś napisał: 
 
x = "12" 
odp = CSng(x) 
 
w zmiennej odp znalazło by się 12. Miałeś zapamiętać,  że to co jest np. w polach tekstowych 
nazywa się stringami. Zapisuje się je właśnie w cudzysłowach. String "12" zostaje 
przekonwertowany na 12 i wszystko O.K. Ale zobaczmy co się teraz stanie: 
 
x = "Tata i mama" 
odp = CSng(x) 
 
i w tym momencie wyskoczy błąd (13). Nie można przekonwertować "Tata i mama" na liczbę 9co 
jest chyba logiczne). Jednak funkcja VAL to potrafi... 
 
x = "Tata i mama" 
odp = Val(x) 
 
teraz w zmiennej odp znajdzie się liczba 0. 
No dobra - ale po co to mam stosować. Załużmy, że użyłeś funkcji CSng. Teraz program pyta się 
nas o wiek - ty mu podajesz jakiś string np. Ble, ble - i nagle błąd "Type mismath". Aby temu 
zapobiec zastosowałem funkcję VAL - która zwróci 0 i błędu nie będzie... 
 
6. Do while wiek <= 0 or wiek >120 then 
Jak widzisz funkcja jest bardzo podobna do funkcji IF - lecz nie oznacza ona jeśli a dopóki. 
Czyli tłumacząc - dopóki wiek <= 0 lub wiek >120 wykonuj istrukcje do Loop. Innymi słowy 
mówiąc - jeśli podamy liczbę taką jak trzeba to program przeskoczy aż za funkcję Loop 
(Odpowiednik End IF). Jeśli jednak podamy np 140 to... 
7. MesageBox, że zły wiek 
8.InputBox - ponawiamy pytanie o wiek... 
9. Znów sprawdzenie czy naciśnięto Cancel 
10. Val - znów konwersja stringu Wiek na liczbę 
11. Loop - funkcja która spowrotem przenosi nas do funkcji Do While 
 
No to wracamy się, aż do linijki 6 i tu znowu rozstrzyga się czy będziemy już kończyć, czy jeszcze 
nie. Znów rozpatrzymy dwa przypadki: 
 
a) Znów podaliśmy zły wiek, więc program ponownie wykonuje to co jest między Do While a 
Loop. Gdy dojdzie do końca to znów wraca do linii 6, i po raz kolejny rozstrzyga sprawę. 
 

background image

b) Podaliśmy dobry wiek - program więc przeskakuje przez funkcję Do While - Loop i lądujemy w 
linijce 12 
 
12.MsgBox - w końcu dotarliśmy tutaj. Program daje nam odpowiedź ile mamy lat. Ale co tam 
znowu jest namieszane... Może przestraszyliście się troszkę wyrażenia "Masz " & wiek & " lat" - 
pamiętacie co robił symbol & - dla tych co zapomnieli: 
x = "Mam " & 12 & " lat" 
Dawało to w wyniku "Mam 12 lat" 
 
No myślę, że wiesz o co tu chodzi... 
 
------------------------------------------------------------------------------------------------- 
Pamiętaj,  że jeśli masz jakikolwiek problem z wyżej zamieszczonym kursem lub masz jakieś 
pytanie nie krępuj się - pisz do mnie na adres: slash@ptik.prv.pl .Twój list nie zostanie bez 
odpowiedzi. Jeśli nawet nie masz pytań to i tak napisz czy podoba ci się ten kurs, co chciałbyś w 
nim zmienić. Napisz w ogóle cokolwiek, abym wiedział, że ktoś ten kurs czyta. 
------------------------------------------------------------------------------------------------- 
 
ZADANIE DOMOWE 
 
Przepisz program który zrobiliśmy dzisiaj na lekcji. Fajnie się zaczyna, co ? No, ale to nie jest 
celem zadania. Twoim celem jest zmienienie tak kodu, aby po wpisaniu złego wieku program nie 
wyświetlał -  Musisz podać prawidłowy wiek, ale powiedział nam, że wiek który podaliśmy jest za 
mały, albo za duży. 
Podpowiedź: 
Musisz zastosować funkcję Case (If też by starczył, ale nie da się go wsadzić między Do While a 
Loop !!!) 
 
 
LEKCJA 11 
  
 
Czołem !!! Jak tam z zadaniem ? Uporaliście się z zadaniem, czy tylko bezmyślnie przepisaliście 
wszystko z przykładu ? Jeśli SAMEMU udało ci się to zrobić, to dobrze. Jeśli skopiowałeś, to i tak 
się nie przejmuj - po prostu pewnie to było za trudne. Ale jest to oznaka, że za mało chęci wkładasz 
w moje lekcje VB. 
Dzisiaj poznamy przeciwność funkcji Do While, będzie to funkcja Do Until. Działa dokłanie 
odwrotnie. Oto przykład:  
 
Zamiast: 
Do While wiek<=0 or wiek>120 
możemy zapisać: 
Do Until wiek > 0 and wiek <= 120 
 
Pamiętaj, że przeciwnością < jest >=, a <= jest >. Przeciwnością <> jest =. 
Pamiętaj także o zmianie operatorów - Or zamienia się na End i odwrotnie. 
 
Linie możemy przetłumaczyć tak: 
 
Dopóki wiek  będzie nie większy niż 0 i nie mniejszy niż 120 to... 
 

background image

Myślisz pewnie, że nigdy nie zastosujesz tej funkcji - bo i po co? Skoro można ją zamienić na 
bardziej zrozumiałą Do While, to po co zaprzątać sobie głowę tym. Sam przyznaję, że funkcję Do 
Until będziesz używał znacznie rzadziej, ale będziemy pisać takie programy, że będzie ona 
najwygodniejszym sposobem.  
 
I co tu więcej pisać. Praktyczne zastosowanie tej funkcji poznasz już za niedługo. Skoro mowa o 
pętlach to powiemy jeszcze coś o pętlach odwrotnych.  
 
Pętla:         Do While... Loop 
Odwrotna: Do... Loop While  
 
Tak samo możemy postąpić z Until... Dobra, ale czym ona się różni od normalnej pętli ? Najlepiej 
zobrazować to na małym shemaciku...  
 
Blok instrukcji (1) 
Do While... 
Blok instrukcji (2) 
Loop 
Blok instrukcji (3)  
 
W przypadku normalnej pętli program wykonuje się tak: 
Blok instrukcji (1), teraz albo blok instrukcji (2), albo po kilku (lub jednej) pętli blok instrukcji (3)  
 
A teraz funkcja odwrotna do poprzedniej  
 
Blok instrukcji (1) 
Do  
Blok instrukcji (2) 
Loop While... 
Blok instrukcji (3)  
 
A teraz program wykonuje się tak: 
Blok instrukcji (1), Blok instrukcji (2), teraz albo blok instrukcji (3), albo znów Blok instrukcji (2) i 
tak kilka razy (lub raz) i na koniec blok instrukcji (3)  
 
Generalnie różni się to tym, że w funkcji Do While - Loop, program może, ale nie musi wykonąć 
tego co znajduje się między DO - LOOP. Zaś w funkcji odwrotnej program musi wykonać 
przynajmniej jeden raz instrukcję zawartą między DO - LOOP.  
 
Funkcja jest rzadko stosowana (sam nigdy jej nie używałem), zawsze ją można zastąpić zwykłym 
ułożeniem. Ale warto wiedzieć, że coś takiego jest . Zawsze się może zdarzyć, że akurat będzie ona 
lepsza.  
 
------------------------------------------------------------------------------------------------- 
Pamiętaj,  że jeśli masz jakikolwiek problem z wyżej zamieszczonym kursem lub masz jakieś 
pytanie nie krępuj się - pisz do mnie na adres: slash@ptik.prv.pl .Twój list nie zostanie bez 
odpowiedzi. Jeśli nawet nie masz pytań to i tak napisz czy podoba ci się ten kurs, co chciałbyś w 
nim zmienić. Napisz w ogóle cokolwiek, abym wiedział, że ktoś ten kurs czyta. 
------------------------------------------------------------------------------------------------- 
 
Ufff... Dobrnęliśmy do końca tej lekcji (właściwie to była sama teoria - dopełnienie poprzedniej 
lekcji). Trzeba by wypić jakieś piwo. Oczywiście bezalkoholowe ;) .Na następnej lekcji będziemy 

background image

brać ostatnią z pętli... pętlę For. Lekcja będzie bardzo ważna. For jest najczęściej stosowaną pętlą w 
VB. Przed lekcją dobrze wypocznij.  
 
 
LEKCJA 12 
  
 
Dzieńdoberek !!! Jak tam samopoczucie? Dobrze? No to się cieszę !  
Jak pisałem wcześniej przechodzimy dzisiaj do bardzo ważnego tematu - Pętli FOR.  
 
Czym różni się ona od pętli Do While, Do Until ? Otóż, jak pamiętasz pętle Do - wykonywały się 
dopóki jej warunki nie zostały spełnione. Pętla for wykonuje się zaś określoną ilość razy. Tak np. 
 
Dim x,y as byte 
For x = 1 to 5 
y = MsgBox("To jest MessageBox nr. " & x, vbinformation,"Przykład") 
Next x 
 
Ten program powoduje pięciokrotne wyświetlenie się MsgBox-a. Jak to działa ? 
 
1. Dim - wiadomo co... ;) 
2. Dla x = od 1 do 5 
3. MsgBox... 
4. Dodaj do x i wróć 
 
No dobra, ale jak to działa ? Przeanalizujmy... 
 
Najpierw zainicjowanie zmiennych x i y. Dalej jest instrukcja for. Decyduje ona ile razy ma zostać 
wykonana pętla. W naszym przypadku jeśli x=6 to przeskakuje za Next-a (Odpowiednik Loop-a z 
pętli DO-LOOP). Czyli tak - obecnie w zmiennej x jest 1 - to jest ta pierwsza liczba w FOR. 
Wykonuje się msgBox z wiadomością "To jest MessageBox nr 1". Program dochodzi do funkcji 
Next x - oznacza ona - dodaj (1) i wróć . Tak więc program wraca do For-a, tylko teraz w x jest 
liczba 2 - i znów MsgBox - To jest MessageBox nr 2. I znów dodaj 1 i wróć, aż tak do 5. Ale co 
potem... Załóżmy, że w x jest 5. Jesteśmy przy funkcji For - skoro do pięciu to jeszcze raz pętelka - 
MessageBox i dochodzimy do Next x. Po tej operacji x = 6. Program wraca do for-a i okazuje się, 
że x nie spełnia warunku pętli. Następuje przeskok za instrukcję Next - i program w ten sposób 
kończy działanie. 
Dokładne i praktyczne zastosowanie tej funkcji poznasz dużo później - gdy będziemy mówić o 
dostępie do plików. Niemniej jednak będzie nam ona bardzo potrzebna i musisz ją znać.  
 
Myślę, że nie będziesz mieć z nią żadnych problemów.  
 
Ach, zapomniałem napisać o pewnym dopełnieniu funkcji FOR - jest nią Step (czyli krok). Po 
prostu do funkcji For dopisz jeszcze Step i pewną liczbę. Zastosujmy to do wcześniej napisanego 
przykładu. Będzie to wyglądać więc tak:  
 
Dim x,y as byte 
For x = 1 to 5 step 2 
y = MsgBox("To jest MessageBox nr. " & x, vbinformation,"Przykład") 
Next x  
 

background image

I co się tu dzieje... Pomyślmy. Wchodzimy w funkcję FOR, następnie zapisuje ona do zmiennej x 
wartość 1. Dostajemy wiadomość "To jest MessageBox nr. 1". I zatrzymujemy się na next. 
Pamiętasz co on oznaczał ? Tak, dodaj do x (w tamtym przypadku 1) i wróć do FOR. Teraz sytuacja 
się zmienia. Funkcja STEP nakazuje FOR-owi, aby teraz do x dodał 2. I co teraz. Wracamy się, i w 
x znajduje się liczba 3 ! A więc nie dostaniemy MessageBoxa z numerem 2 lecz 3. Znów NEXT 
czyli x+2 a to daje 5. Powrót, MessageBox nr 5. Znów Next, teraz x=7, powrót do FOR - ale 
niestety (?) For nie obejmuje już liczby 7, a więc przeskok za Next i koniec. programu...  
 
Zauważyłeś różnicę? Chyba tak. Zamiast 5 Messag-ów otrzymałeś tylko 3 !  
 
Teraz zastosujmy funkcję for do liczenia silni danej liczby. 
Dobra, dobra - ale większość osób pewnie nie wie co to jest silnia. 
7! (czytaj. 7 silnia) - 1*2*3*4*5*6*7 
No dobra skoro wiesz co to jest już silnia, bierzemy się do pisania programu.  
 
Na formie ułóż przycisk - jako wartość "Caption" wpisz Silnia, i nazwij go cmdSilnia. No dobra, 
ale gdzie będziemy wpisywać liczbę... Musimy zrobić textBox-a. Wyczyść wartość Caption i 
nazwij go txtSilnia. Teraz dodaj do przycisku następujący kod:  
 
Dim x, odp 
odp = 1 
For x = 1 To txtSilnia 
odp = odp * x 
Next x 
ss = MsgBox(txtSilnia & " ! to " & odp)  
 
Czy potrafisz go przeanalizować? Przynajmniej powinieneś. Jeśli jednak nie potrafisz tego zrobić 
przeanalizujmy razem:  
 
1. Dim - zainicjowanie zmiennych 
2. Na początek ustalamy zmienną początkową. Ale dlaczego nie 0. Pomyśl - mnożenie przez 0 
zawsze daje w wyniku 0 - a więc bez sensu. Przy dodawaniu jako stałą musisz dać 0, a przy 
mnożeniu 1 !!!. 
3. Instrukcja for - od 1 do... ile? txtsilnia to jest właśnie liczba którą wpisałeś okienko. 
4. Teraz następuje przemnożenie stałej przez x - czyli kolejną liczbę naturalną zaczynając od 1, a 
kończąc na txtSilnia. Czyli nasze równanie (załóżmy,  że w okienko wpisałeś 7) 1*2*3*4*5*6*7 
czyli 7!. Po 7 okrążeniach otrzymujemy nasz wynik.  
 
ZADANIE DOMOWE:  
 
Napisz program z przyciskiem i polem tekstowym. Program ma dodawać tylko liczby parzyste 
zaczynając od 2, a kończąc na liczbie wpisanej w pole textowe. 
Może trochę trudne więc daję 2 podpowiedzi: 
Po pierwsze skoro dodawanie zaczynamy od 2 (bo 1 jest liczbą nieparzystą) funkcję FOR też 
zaczniemy od 2. 
Po drugie - liczby parzyste to co drugie liczby. Tak więc będziemy musieli użyć funkcji STEP. 
 
No to do dzieła!  
 
Jeśli jednak nie możesz sobie poradzić z tym zadaniem przeanalizuj to... 
 
  

background image

Do następnego spotkania...  
 
 
LEKCJA 13 
 
  
Jakie powitanie by tu dziś wymyślić... Może po prostu WITAJCIE !!! 
Dzisiaj przed nami prosta, ale bardzo ważna lekcja. Zmiana właściwości komponentów kodem. 
Robiliśmy coś takiego gdzieś w pierwszych lekcjach kursu. Dzisiaj jednak zajmiemy się tym 
tematem szczegółowo.  
 
Musimy wrócić do lekcji 1. Dla przypomnienia  
 
(name) 
 W tym polu wpisujemy nazwę identyfikującą naszą etykietę – najlepiej używać skrótu lbl (od 
Label)  np. lblNazwa 
  
Alignment 
 !!! Czyli wyrównanie tekstu który znajduje się na etykiecie. Domyślnie mamy ustalone 0 - Left 
Justyfy - czyli wyrównanie do lewej krawędzi. Można też ustawić 1 - Right... czyli wyrównanie do 
prawej oraz 2 - Center - czyli wyśrodkowanie tekstu. 
  
caption 
 Chyba najważniejsza – Tu ustalamy wyrazy które mają znaleźć się na naszej etykiecie 
  
Font 
 W tym oknie możemy ustalić czcionkę, wielkość i efekty dla napisu 
  
Height 
 Wysokość etykiety. Raczej wygodniejsze jest rozciąganie bezpośrednio na formularzu 
  
Left 
 Określa odległość etykiety od lewej krawędzi ekranu. Wygodniej jest przemieszczać etykietę 
bezpośrednio na formie. 
  
BackColor 
 Tutaj kolor tła etykiety 
  
ForeColor 
 Tutaj kolor tekstu 
  
Top 
 Określa położenie etykiety od górnej krawędzi ekranu 
  
Width 
 Określa szerokość etykiety 
  
Visible 
 Określa czy etykieta ma być widoczna na formularzu. Jeśli zaznaczymy false, to po uruchomieniu 
programu zobaczymy pusty formularz. 
  
 

background image

O co chodzi z tym kodem ? Napiszmy mały program. Na formularzu umieśćmy pole tekstowe o 
nazwie txtWpis, wyczyść opcję Caption. Umieszczamy także etykietę o nazwie lblGotowe i także 
wyczyśćmy Caption. I jeszcze 3 przyciski o nazwach - Do lewej, Do prawej, Wyśrodkowanie. 
Nazwij je jak tam chcesz.  
Nasz program ma działać tak - Wpisujemy w pole tekstowe jakiś tekst, który automatycznie 
przenoszony jest do etykiety. A nasze trzy przyciski sterują położeniem tekstu na etykiecie. 
 
No dobra, ale nie zapomniałem czasem o przycisku przenoszącym tekst z pola tekstowego do 
etykiety ? Zaraz, przecież to miało być automatyczne... Ale jak to zrobić. Po pierwsze musimy 
ocenić kiedy program ma zareagować. Oczywiście, że wtedy, gdy zaczniemy coś wpisywać do pola 
tekstowego. Czyli nasz kod będzie siedział w polu tekstowym. Tak więc klikamy na niego 
dwukrotnie i widzimy coś takiego: 
 
Private Sub txtwpis_Change() 
 
End Sub 
 
Change - oznacza zmianę - czyli jeśli coś będziemy zmieniać w polu tekstowym to wykona nam się 
kod. No dobra, ale jaki ? Pomyślmy. Chodzi nam o przeniesienie tego co w txtWpis do lblGotowe. 
Wyjdzie proste równanie matematyczne: 
 
lblGotowe.caption = txtwpis 
 
I jak to ma prawo działać. Tu właśnie zmieniamy właściwość etykiety, mianowicie caption (czyli to 
co jest wpisane w etykietę). Przyporządkowujemy temu to co wpisujemy w txtwpis. 
Myślę, że rozumiesz... 
 
Sprawdźmy jak to działa. Uruchom program i wpisuj cokolwiek w pole tekstowe - działa nie ? No 
dobra, ale przyciski nie działają. 
 
Wracamy do trybu projektowania, klikamy dwukrotnie przycisk Do lewej i dodaj kod: 
 
lblGotowe.Alignment = 0 
 
Co to oznacza. Zajrzyj do tabelki. To jest właśnie wyśrodkowanie. Ale dlaczego 0 ? Znów spójrz do 
tabelki - 0 to jest do lewej. Po przetłumaczeniu funkcja wygląda tak: 
 
etykietaGotowe.wyrównanie = 0 czyli do lewej 
 
No chyba wiesz co zrobić z pozostałymi przyciskami. Popatrz do tabelki i dopisz odpowiedni kod. 
Teraz uruchom program i co? Super nie... ;) 
 
Dobra. ni wyłączaj jeszcze VB. Zapisz program - będzie nam potrzebny za niedługo. W tym celu z 
menu file wybierz Save Project As... i zapisz obydwa pliki gdzieś na dysku. 
 
Dobra. Jeszcze jedno zdanie na koniec. Pamiętaj, że tym sposobem możesz zmieniać właściwości 
wszystkich elementów ułożonych na formie!!! 
 
------------------------------------------------------------------------------------------------- 
Pamiętaj,  że jeśli masz jakikolwiek problem z wyżej zamieszczonym kursem lub masz jakieś 
pytanie nie krępuj się - pisz do mnie na adres: slash@ptik.prv.pl .Twój list nie zostanie bez 

background image

odpowiedzi. Jeśli nawet nie masz pytań to i tak napisz czy podoba ci się ten kurs, co chciałbyś w 
nim zmienić. Napisz w ogóle cokolwiek, abym wiedział, że ktoś ten kurs czyta. 
 
 
LEKCJA 14 
  
 
Witajcie po raz kolejny. Właśnie mam spieprzony komputer i kurs ten piszę na praktyce. No cóż – 
kurs trzeba pisać...  
 
Dość gadania – zaczynamy. Dzisiaj nauczysz posługiwać się polami wyboru – Check Box-em i 
Option Button-em (Radio). Znajdują się one na palecie narzędzi w czwartym rzędzie. Taki 
kwadracik „zafajkowany” i kółeczko z kropką. Na początek weżmy ten pierwszy czyli kwadracik. 
 
Na pewno już się z nim gdzieś spotkałeś. Służy on do poinformowania programu czy coś chcemy 
czy też nie. Np. możemy nim sterować podkreślenie tekstu w etykiecie. Spróbujmy...  
 
Na formie ułóż CheckBox-a. Nazwij go chkPodkreslenie. Właściwość Caption ustaw na 
„Podkreśl”. No dobra – ale co będzie podkreślane ? No oczywiście jakiś tekst w etykiecie. No więc 
tworzymy etykietę o nazwie lblTekst i tekscie (Caption) – „To jest jakiś tam tekst”. OK. Teraz nasz 
program po zaznaczeniu Check-a powinien podkreślić tekst. Oczywiście kod będziemy dodawać do 
Check-a. Klikamy więc go dwukrotnie i dopisujemy kod:  
 
lblTekst.FontUnderline = True  
 
Chyba jeszcze nie znasz właściwości FontUnderline – musisz wiedzieć,  że służy ona do 
podkreślenia tekstu. 
 
Myślę, że rozumiesz ten prosty kod. Jeśli klikniemy to podkreśl... 
 
Odpal program, zaznacz Check-a i co podkreślił. Hurra ! No ale teraz odznacz. Podkreślenie nie 
znika – co jest. No tak. My mamy napisane, że program ma podkreślić jeśli klikniemy na pole – nie 
ma ani słowa o odznaczeniu. Pomyślmy jakby to zrobić. Musisz wiedzieć jedną bardzo ważną 
rzecz. Jak sprawdzić czy Check Box jesz zaznaczony czy też nie ? Steruje tym funkcja Value. Jeśli 
jest ona równa 0 to Check jest nezaznaczony, jeśl 1 to zaznaczony, a jeśli 2 to zszarzały. Jak to 
sprawdzić. Zaznacz na formularzy Check i w oknie properties zmień  właściwość np. na 1 i co 
zaznaczył się... ? Procedura powinna wyglądać tak:  
 
If chkPodkreslenie.Value = 1 Then 
lblTekst.FontUnderline = True 
Else 
lblTekst.FontUnderline = False 
End If   
 
Przetłumaczmy.  
 
Jeśli Chec Box zostanie zaznaczony (bo Value będzie równe 1) to 
Podkreśl tekst 
W przeciwnym przypadku (czyli wyłączymy Checka – Value = 0) 
Skasuj podkreślenie tekstu 
Koniec  
 

background image

Twoje zadanie – dorób podobny CheckBox pogrubiający tekst. Służy do tego właściwość 
FontBold. Myślę, że sobie poradzicie.  
 
No dobra – teraz zabieramy się za RadioButton – teraz nazwany OptionButton. Umieśćmy taki na 
formularzu. Fajnie wygląda – ale co poza tym. Czy on się różni od CheckBox-a – tylko wyglądem ? 
Nie, nie, nie... Aby się o tym przekonać umieść na formie dwa Check-i i dwa OptionButtony. 
Uruchom teraz program. Najpierw zaznacz pierwszego CheckBox-a a potem drugiego. Co ten 
SLASH kombinuje – oba się zaznaczyły i co z tego ? To miało być dziwne ? No dobra spróbuj to 
samo zrobić z Optionami. Co? nie da się ? :) No właśnie – tu jest różnica. Nie można zaznaczyć 
dwóch naraz. 
 
Jak sama nazwa wskazuje to jest przycisk opcji – a więc tylko jedną opcję można wybrać. 
Napiszmy mały programik pokazujący praktyczne zastosowanie obu tych pól wyboru. Napiszemy 
małą ankietę  
 
Na formularzu umieść dwa OptionButton-y jako Caption ponadawaj im kolejno etykiety – Pentium 
i AMD oraz nazwij je optPentium, optAMD. Stwórz także jeden CheckBox i jako właściwość 
Caption nadaj mu etykietę Posiadam akcelerator graficzny i nazwij go chkAkcelerator. Potrzebna 
nam także będzie etykieta. Skasuj zawartość Caption i nazwij ją lblEtykieta. Nasz program ma 
działać tak:  W etykiecie ma się pojawić tekst – Masz komputer z procesorem (nazwa) i 
(masz/niemasz) akcelerator(a). I tu znów musisz wiedzieć jedną bardzo ważną rzecz. OptionButton-
em też możesz sterować za pomocą opcji Value – tylko z tą różnicą, że nie ma tu już wartośći 0,1,2 
tylko jest True lub False. Czyli klikamy dwukrotnie na pierwszym z optionButtonów i dodajemy 
następujący kod:  
 
Dim procesor, akcelerator As String 
If optPentium.Value = True Then 
procesor = "Pentium" 
Else 
procesor = "AMD" 
End If   
If chkAkcelerator.Value = 1 Then 
akcelerator = "i posiadasz akcelerator graficzny" 
Else 
akcelerator = "bez akceleratora graficznego" 
End If  
lblEtykieta = "Masz komputer z procesorem " & procesor & " " & akcelerator  
 
Przeanalizuj kod. Myślę, że nie będziesz mieć z nim żadnych problemów. Jeśli jednak ...  
 
------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie – upiszę się jak głupi, a nikomu to nie będzie potrzebne ;(   Napisz najlepiej 
co uważasz o tym kursie... 
------------------------------------------------------------------------------------------------ 
 
No dobra, ale program ma to samo wykonywać za każdym razem gdy coś wybierzemy. Dodajmy 
więc ten kod do pozostałych ptinButtonói i Check-a. Uruchom program. Działa !  
 

background image

Wszystko byłoby w porządku gdyby nie pojawił się 4x ten sam kod. Przecież to jest bez sensu pisać 
4x to samo. A jak gdyby trzeba było to zrobić 20x to co? No właśnie – z pomocą przychodzi nam 
funkcja Call. Oznacza ona Połącz. Oto zasada jej działania:  
 
Linijka1 
Linijka2 
Call Podprogram 
Linijka3 
Linijka4   
 
Private Sub Podprogram( ) 
Linijka5 
Linijka6 
Linijka7 
End Sub  
 
Program będzie się wykonywał tak – Pierwzse linijka 1 i 2. Następnie napotykamy Call – łączy nas 
z podprogramem – czyli następnie linijka 5,6,7 i do End Sub. W tym momencie program wraca do 
Call czyli teraz linijki 3 i 4.  
 
No dobra – ale jak to zastosować do naszego programu ? Bardzo prosto ! 
 
Najpier musimy skasować wszystko co napisaliśmy (żeby się nie pogubić...). Kliknij dwukrotnie na 
czymkolwiek co znajduje się na formie (możesz nawet na niej samej). Wyświetli się kod – zaznacz 
wszystko co widzisz i skasuj przyciskiem Del – powinna zostać czysta strona. No dobra – 
oczyszczone z kodu.  
 
Teraz musimy napisać procedurę która będzie wywoływana Call-em. W oknie kodu dopisujemy ją 
na samym końcu – zawsze za ostatnim End Sub. Jeśli mamy czystą stronę to gdziekolwiek (się da... 
;) ) Napisz:  
 
Private Sub Przelicz ( )  
 
Po naciśnięci Enter VB dopisał End Sub i oddzielił procedurę od reszty. Piszemy dalej to co 
wpisywaliśmy wcześniej do każdego z przycisków opcji czyli:  
 
Dim procesor, akcelerator As String 
If optPentium.Value = True Then 
procesor = "Pentium" 
Else 
procesor = "AMD" 
End If   
If chkAkcelerator.Value = 1 Then 
akcelerator = "i posiadasz akcelerator graficzny" 
Else 
akcelerator = "bez akceleratora graficznego" 
End If   
lblEtykieta = "Masz komputer z procesorem " & procesor & " " & akcelerator   
 
No dobra najważniejsze zrobione. No ale skąd program ma wiedzieć, że po zaznaczeniu jednej z 
opcji ma się odwołać do tej procedury ? 
No właśnie – w każdym przycisku opcji musimy dopisać linijkę:  

background image

Call Przelicz ( )   
 
Sprawdź czy działa – przynajmniej powinno... ;) 
Dobra – jak na dzisiaj starczy...   
 
W następnej lekcji dowiesz się jak zaznaczyć dwa OptionButtony na raz. Niemożliwe, co ? 
 
Zobaczymy...  
 
 
LEKCJA 15 
  
 
Witajcie. W końcu po dwutygodniowej przerwie zasiadłem do kompa. Trzeba by było dalej pisać 
kurs VB... No to zaczynamy. 
Co by ty dzisiaj zrobić - może jakieś... zaraz dzisiaj chyba miałem napisać jak włączyć 2 
OptionButtony, nie? No dobra, ale po co? Zastanówmy się nad rozszerzeniem programu z 
poprzedniej lekcji. 
Ostatnio pisaliśmy program, gdzie OptionButtony decydowały o naszym procesorze (a CheckBox - 
czy mamy akcelerator graficzny). A jak byśmy jeszcze chcieli dorobić np. wybór prędkości CD-
ROM-u ? Konieczne byłoby zaznaczenie dwóch OptionButtonów. Jednego decydującego o 
procesorze, a drugiego o CD-ROM-ie. No dobra ale jak to zrobić ?  
 
Umieśćmy na formie dwa OptB (tak to będzie w skrócie) nadajmy im etykiety jak w programie z 
poprzedniej lekcji czyli Pentium i AMD. Teraz z 5 kolejnych OptB dla CD-ROM-u. Nadajmy im 
kolejno etykiety - wolniejszy, 24x, 32x, 40x, szybszy. Uruchamiamy program i spróbujmy 
zaznaczyć,  że mamy procesor AMD i CD 40x. Niestety, nie da się. Gdy zaznaczamy AMD jest 
wszystko OK. Ale przy zaznaczaniu CD-ROM-u odznacza się procesor. Dlaczego to chyba wiesz? 
Nie da się zaznaczyć więcej niż jednej opcji. No dobra - ale powiedziałem, że jakoś się da. No ale 
jak ? 
Do tego celu musimy użyć narzędzia o nazwie Frame (tłumacząc Ramka). Jest ono na palecie 
narzędzi w postaci szarego kwadracika i małym napisem xy u góry (3 rząd, 1 kolumna). Spróbujmy 
umieścić to na formularzu. No, takie sobie - ale do czego to właściwie służy ? 
Jeśli w ramce utworzymy OptionButtony to nie będą one kolidowały z OptB z sąsiednich ramek, 
czy z poza formy. Czyli parę możemy stworzyć np. 
OptB bezpośrednio na formie + OptB w ramce     lub 
OptB w ramce1 + OptB w ramce2 itd.. 
 
Oczywiście par możemy tworzyć więcej. No to co - przenosimy nasze OptB (te co charakteryzują 
CD-ROM) na ramkę. Chwytamy, przenosimy i puszczamy - OptB zniknął ? Co jest ? 
 
ZAPAMIĘTAJ !!! 
Najpierw tworzymy ramkę, a potem przycisk opcji tworzymy bezpośrednio na niej. Nie możemy 
przenosić OptB-ów na ramkę. 
 
Czyli stare usuwamy i tworzymy nowe bezpośrednio na ramce. Uruchamiamy nasz program i co, da 
się zaznaczyć dwie opcje ? 
 
ZADANIE DOMOWE 
Udoskonal program z poprzedniej lekcji, tak aby można było zaznaczyć prędkość CD-ROM-u. 
Napis wynikowy powinien być w tej formie: 

background image

Masz komputer z procesorem {AMD, Pentium}, CD-ROM-em {wolniejszym niż 24x, 24x, 32x, 
40x, szybszym niż 40x} i {posiadasz akcelerator, nie posiadasz akceleratora} 
Banalne nie ? To no do roboty... 
 
_________________________________________________________________________ 
Teraz dwa dopełnienia do poprzednich lekcji. Tak właściwie to jedno nowe, a jedno dopełnienie do 
funkcji DIM. Czy może pamiętasz dokąd funkcja DIM pamiętała zmienną ? Tak, do End Sub - czyli 
zakończenia procedury. No dobra - napiszmy króciutki program, aby zobrazować to co chcę 
wyjaśnić. 
 
Na formie ułóż 2 przyciski - jako etykiety nadaj im Zapamiętaj i Odczytaj oraz 1 TextBox (Pole 
tekstowe) nadaj mu nazwę txtzmienna. I o co tu będzie chodziło... Po naciśnięci przycisku 
Zapamiętaj nasz program ma zapisać do zmiennej x to co będzie w TextBox-ie. Przycisk Odczytaj 
ma spowodować wyświetlenie się Okna komunikatu którego treścią będzie zmienna.  
Tak więc do przycisku Zapamiętaj dodajemy kod: 
 
Dim x as string 
x = txtzmienna   ' zapisujemy d x to co jest w TextBox-ie 
 
A do przycisku Odczytaj: 
 
Dim odp 
odp = MsgBox (x) 
 
Uruchom program. Najpierw naciśnij Zapamiętaj, a potem Odczytaj i co? Wyświetla się nam pusty 
komunikat - ale dlaczego. Przeanalizujmy program... 
 
Po naciśnięci Zapamiętaj x to się równa to co jest w textboxie (pamiętaj, że DIM "podtrzymuje" x 
tylko do momentu zakończenia procedury czyli do End Sub na który waśnie natrafia nasz program. 
Po wciśnięciu drugiego przycisku x = nic i właśnie dlatego otrzymujemy puste okienko.  
No dobra, ale jak zmusić program, aby pamiętał x przez cały czas ? 
Do tego służy opcja                     global 
Stosuje się  ją jeszcze przed załadowaniem programu. Czyli w Form_Load ? Nie. Należy ją 
załadować jeszcze wcześniej. Ale gdzie ? 
 
Musisz wiedzieć, że oprócz form są jeszcze moduły - one ładują się najwcześniej. No ale jak dodać 
moduł do mojego projektu ? 
Z menu wybierz Project - Add Module. Teraz wyskoczy okienko- kliknij dwukrotnie na  Module. 
Zauważ z prawej strony w okienku projektu, że oprócz formy widzimy jeszcze dodany przez nas 
moduł. Wyskoczyło okienko tekstowe - pewnie je zamknąłeś - a jeśli nie to je zamknij. Po co? 
Skoro zamknąłeś to jak teraz przywrócisz to okienko z powrotem ? Do tego posłuży nam okienko 
projektu - kliknij dwukrotnie na pozycji Module1 - a okienko wróci. Teraz dopisz taką linijkę: 
 
Global x as string 
 
Funkcja jak widzisz działa identycznie jak DIM, z tą różnicą, że jest "długowieczna". 
Ale musimy jeszcze usunąć funkcję Dim x as string z jednego z przycisków - przecież nie będziemy 
deklarować zmiennej dwa razy. No to teraz uruchom program i co? Działa ? Jeśli zrobiłeś wszystko 
jak pisałem to powinno... Czy teraz widzisz różnicę pomiędzy DIM a GLOBAL ? Mam nadzieję, że 
tak... 
 
Druga sprawa może następnym razem - było by to jednak za dużo jak na jeden dzień... 

background image

------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie – upiszę się jak głupi, a nikomu to nie będzie potrzebne ;(   Napisz najlepiej 
co uważasz o tym kursie... 
------------------------------------------------------------------------------------------------  
 
 
LEKCJA 16 
  
_________________________________ Druga sprawa ___________________________ 
 
Jak za pomocą jednego formularza wywołać drugi ? Wiadomo - większe programy składają się z 
wielu formularzy. No dobra - pokaże Wam praktycznie...  
 
Na formie ułóż przycisk o etykiecie Pokaż. Teraz stworzymy drugą formę - ona właśnie ukaże się 
po naciśnięciu przycisku Pokaż. No dobra - tworzymy - ale jak ? Bardzo podobnie jak Moduł. Z 
menu wybierz Project - Add Form (pierwsza pozycja) kliknij dwukrotnie na form. Na drugiej 
formie ułóż przycisk o etykiecie Ukryj i drugi przycisk o etykiecie Koniec. Jeszcze jedno - co by się 
stało jakbyś niechcący wyłączył formę2 - kliknij na krzyżyku w okienku z naszą formą (NIE na 
krzyżyku który jest na formie). I co - znikło... Przywracamy to tak samo jak moduł. W okienku 
project klikamy dwukrotnie na Form2 i znów widzimy naszą formę. No dobra - zajmijmy się dalej 
programem. 
Jak spowodować aby po kliknięciu przycisku Pokaż (na Form1) wyświetlić  Form2. Proste - 
dodajemy kod: 
 
Form2.visible = true 
 
Uruchom program i przetestuj. Pojawiają się dwie formy. Teraz jeszcze dodamy kod do dwóch 
przycisków na formie 2. 
 
Aby ukryć formę (właściwie to wyłączyć) należy dodać kod: 
 
Unload Me 
 
Aby zakończyć cały program - czyli do przycisku koniec: 
 
Unload Form1 
Unload Me 
 
Wystartuj program i przetestuj - działa? Myślę, że tak.  
 
Teraz sprawdź jeszcze jedno. Uruchom program, wyświetl formę 2 i naciśnij ukryj. Teraz zamknij 
program "krzyżykiem" w prawym górnym rogu programu. Na niebiesko zaznaczyła się nam ikonka 
"Play" na pasku narzędzi w VB. Oznacza to, że program jest gotowy do następnego uruchomienia. I 
co z tego? Czytaj dalej... 
 
Skoro już jesteśmy przy tym temacie to od razu wyjaśnię czym różni się ukrywanie formy od 
wyłączenia jej. Zastosujmy to do powyższego przykładu. W przycisku Ukryj zamiast Unload Me 
wpisz: 
 

background image

Form2.visible = false 
 
Teraz uruchom program. Postępuj jak przedtem czyli 
Uruchom program, wyświetl formę 2 i naciśnij ukryj. Teraz zamknij program "krzyżykiem" w 
prawym górnym rogu programu. Ale ikonka play nie zmieniła koloru na niebieski, co świadczy, że 
program jest jeszcze uruchomiony - ale gdzie ? 
Naciśnij stop. 
Uruchomiona jest forma2 gdyż ją tylko ukryliśmy, a nie zamknęli. 
 
To po co w takim razie stosować funkcję Form2.Visible = false ? 
 
Zróbmy jeszcze jeden test. Na formie 2 ułóż jeszcze TextBox-a . Wystartuj program. Naciśnij 
przycisk Pokaż - wpisz coś w TextBox (nie wystarczy to co jest tam domyślnie) i kliknij ukryj 
(czyli form2.visible = false). Wróciliśmy do formy 1. Kliknij jeszcze raz Pokaż i co jest w TextBox-
ie. Właśnie to co wpisaliśmy. No dobra, a teraz zamień form2.visible = false na Unload Me. Zrób to 
samo jeszcze raz i co? Text box już nie wyświetli tego co wpisaliśmy.  
 
Krótko: 
Funkcja Form.visible = false ukrywa tylko formę, zachowując jej własności i dane na niej 
Funkcja Unload Form kasuje bezpowrotnie wszystkie dane z formy. 
 
 
LEKCJA 17 
  
Dzisiaj przed Wami dość trudna lekcja - będziemy mówić o oknach dialogowych. Zacznijmy od 
tego co to jest okno dialogowe. Okna dialogowe spotkałeś pewnie setki razy. Pokaże ci je w 
Paincie. Uruchom Paint-a (Start - Programy - Akcesoria - Paint). Gdy się uruchomi to z menu 
wybierz plik i otwórz - pojawiło się okno dialogowe. Daj anuluj. Teraz z plik wybierz zapisz - 
pojawiło się drugie okno dialogowe bardzo podobne do otwórz. Dobra daj anuluj. Na dole jest 
paleta z farbami - kliknij dwukrotnie na jakimkolwiek kolorze. Wyskoczyło kolejne okno 
dialogowe - kolor. Są jeszcze okna dialogowe - czcionka i drukuj. W przykładzie posłużę się 
dwoma - kolor i czcionka.  
 
Pamiętasz jeszcze lekcję 13 - kazałem tam zapisać sobie mały programik który potrafił 
wyrównywać tekst do prawej, lewej i wyśrodkowywać. Teraz uzupełnimy go o możliwość 
manipulowania czcionką tzn. wielkość, styl i rodzaj czcionki. Uzupełnimy go także o możliwość 
zmiany koloru czcionki. Do dzieła... 
 
Uruchom VB. Z menu file wybierz open i odnajdź program (rozszerzenie VBP). No dobra 
uruchomił się - teraz dorabiamy dwa przyciski. Jako wartość kaption przypisz im kolejno - 
Czcionka, Kolor. No dobra - teraz musimy dopisać jakiś kod - ale jaki ? 
No niestety - sam kod nie wystarczy - na formie musimy ułożyć element króry nazywa się Common 
Dialog Box. Jak się domyślasz będzie on na palecie narzędzi po lewej. No przynajmniej musi się 
tam znaleźć. Domyślnie jest wyłączony (chociaż nie wiem dlaczego). No to jak go dodać do palety 
? Kliknij prawym klawiszem myszki (to ten drugi) na wolnym miejscu na pasku narzędzi, z 
powstałego menu kontekstowego wybierz Components. Wyskoczyło okienko dialogowe na którym 
widzimy listę dostępnych komponentów - my musimy znaleźć "Microsoft Common Dialog Control 
6.0". Naciskamy Zastosuk i zamknij. Czy widzisz już nowy element na pasku narzędzi ? Tak, ten na 
samym dole - to ten prostokąt z dwoma kwadracikami i kropkami w środku). Wybierz go i ustaw 
gdzieś na formie. Obojętne gdzie - on i tak jest niewidoczny. Potrzebny jest on VB tylko po to aby 
zapamiętywał własności wybrane z okien dialogowych. Zmień tylko jego nazwę na cdb1. Wystartuj 

background image

program i co? Widzisz go gdzieś ? No nie. Dobra wyłącz program - bierzemy się za kod. Kliknij 
dwukrotnie na przycisku Czcionka. Teraz dopiszemy kod: 
 
cdb1.DialogTitle = "Zmień czcionkę" 
cdb1.FontName = "MS Sans Serif" 
cdb1.Flags = cdlCFBoth 
cdb1.ShowFont 
 
Uruchom program. Kliknij przycisk czcionka - pokazało się nam okno dialogowe. Wybierz 
cokolwiek i kliknij OK. Jak widzisz nasz program jeszcze nie działa. Na razie wyjaśnię 
poszczególne linijki kodu: 
 
Najpierw tytuł okna dialogowego 
Potem mamy domyślną czcionkę 
Teraz bardzo ważna rzecz ! Informuje to CDB-a jakie czcionki ma wyświetlić - cdlCFBoth 
oznacza, że wszystkie 
No i teraz pokaż okno dialogowe. 
 
Teraz musimy spowodować aby to działało - poniżej jeszcze dopisujemy następujący kod: 
 
lblgotowe.Font = cdb1.FontName 
lblgotowe.FontBold = cdb1.FontBold 
lblgotowe.FontItalic = cdb1.FontItalic 
lblgotowe.FontSize = cdb1.FontSize 
 
Jak to działa ? W chwili gdy ty wybierasz coś w Oknie dialogowym odpowiednie własności zostają 
zapisane do cdb1. Teraz musisz je tylko stamtąd wyciągnąć. Teraz kolejno wyciągaliśmy: 
Nazwę czcionki, czy jest pogrubiona, czy może z kursywą, oraz jej rozmiar. 
 
Uruchamiamy program i... działa !!! 
No dobra, a co z drugim przyciskiem? Jeszcze został kolor czcionki... Do drugiego przycisku 
dodajemy więc następujący kod: 
 
cdb1.dialogTitle = "Zmieniamy kolor" 
cdb1.ShowColor 
 
Uruchamiamy program - naciskamy przycisk kolor - wyskakuje okienko takie jak w Paint. Teraz 
wybieramy jakiś kolor i OK. Niestety, jeszcze nie działa. Teraz musimy jakoś z cdb1 wyciągnąć 
kolor - ale jak? Poniżej dopiszmy jeszcze: 
 
lblGotowe.ForeColor = cdb1.color 
 
Teraz uruchamiamy program iii... działa !!! 
 
*****************************KOMPILACJA******************************* 
 
Dobra - teraz was nauczę kompilować programy. Po co? Gdy piszesz projekt to zapisujesz go do 
pliku VBS. A czy nie lepiej byłoby zrobić plik EXE ? Jasne, że tak ! Kompilacja jest nadzwyczaj 
banalna. Wystarczy z menu VB wybrać Make Project1.exe . Oczywiście zamiast Project1.exe może 
pisać co innego. No to wybieramy Make... exe. Teraz VB pyta się Nas gdzie zapisać skompilowany 
program. Teraz tylko OK i gotowe !!! 
************************************************************************* 

background image

No dobra - teraz ciąg dalszy CDB.  
 
1. Aby wywołać okno otwórz należy posłużyć się następującym kodem: 
 
cdb1.dialogTitle = "Tytuł" 
cdb1.Filter = "Zwykły plik tekstowe|*.txt|Zdjęcia|*.bmp; *.jpg " 
cdb1.showOpen 
 
Pewnie zastanawiasz się jak zrobić taki znaczek:  |  . Znajduje się on nad Enter-em obok Backspace-
a. Wpisujemy go z Shift-em. Wszystko pewnie jest jasne tylko nie wiesz co to są te filtry. Pewnie 
się spotkałeś z takimi programami które pozwalają otworzyć tylko niektóre pliki. W powyższym 
przykładzie program będzie tylko widział pliki txt, a po zmianie opcji także bmp i jpg. Jeśli chcesz 
aby program widział wszystkie pliki to                cdb1.Filter = "*.*" 
 
No ale co to zwraca ? Zwraca to ścieżkę do pliku - możesz ją wyciągnąć w ten sposób: 
 
Dim x 
x = cdb1.fileName 
 
2. Zapisz: 
 
cdb1.DialogTitle = "Tytuł" 
cdb1.Filter = "*.*" 
cdb1.FileName = "Test.txt"    'Domyślna nazwa pliku 
cdb1.ShowSave 
 
Ta funkcja także zwraca właściwość FileName 
 
3. Drukuj 
 
cdb1.DialogTitle = "Tytuł" 
cdb.ShowPrinter 
 
Ta funkcja zwraca pewne ustawienia drukarki - ale o tym później 
 
************************************************************************ 
Myślę, że tyle na dzisiaj wystarczy - do następnego spotkania... 
 
------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie, skoro nikt tego nie czyta to po co pisać ;(  Napisz najlepiej co uważasz o 
tym kursie... 
------------------------------------------------------------------------------------------------  
 
 
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 wybory - 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 

background image

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że 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)) 

background image

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

background image

Private Sub Combo1_Click() 
 
My zamiast click będziemy musieli posłóż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... 
 
------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie, skoro nikt tego nie czyta to po co pisać ;(  Napisz najlepiej co uważasz o 
tym kursie... 
------------------------------------------------------------------------------------------------  
 
 
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  

background image

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łachostką :)  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.  
 
------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie, skoro nikt tego nie czyta to po co pisać ;(  Napisz najlepiej co uważasz o 
tym kursie... 
------------------------------------------------------------------------------------------------  
 
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. Chmmm... 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 
  

background image

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...  
 
 
LEKCJA 20 
  
 
Witajcie wszyscy. Dziś przed wami kolejna dość prosta lekcja. Poznamy kilkanaście funkcji. Dość 
gadania zaczynamy.  
 
Visual Basic potrafi dobrze operować na godzinach: 
 
1. Wyciąganie informacji o dacie - Stwórzmy mały programik, ułóżmy przycisk i dodajmy do niego 
kod: 
 
x = MsgBox(Date) 
 
Uruchamiamy. Program w okienku pokazuje dzisiejszą datę w formacie yy-mm-dd  
(rok [dwie ostatnie cyfry]- miesiąc, dzień ) 
 
2.DateSerial zwraca w wewnętrznym formacie datę wpisaną przez nas ręcznie np. 
 
Dim MyDate 
MyDate = DateSerial(1969, 2, 12) 
x = MsgBox (MyDate) 
 
Zwraca to 69-02-12 
 
3.DateAdd - potrafi dodawać do podanej daty miesiące dni itd: Zobaczmy jak to działa. Do 
przycisku dodajmy kod: 

background image

Dim DataPoczatek As Date ' Declare variables. 
Dim TypDopisu As String 
Dim Miesiace As Integer 
Dim Odp 
TypDopisu = "m" 
DataPoczatek = InputBox("Podaj jakąś datę w formacie yy-mm-dd") 
Miesiace = InputBox("Ile misięcy chcesz dodać") 
Odp = "Nowa data: " & DateAdd(TypDopisu, Miesiace, DataPoczatek) 
x = MsgBox (Odp) 
 
Uruchom go. Program najpierw pyta nas o datę, potem ile miesięcy chcemy dodać, i w końcu 
dostajemy odpowiedź. 
Składnia tej funkcji: 
 
DateAdd (Jednostka, Ilość jednostek, Data) 
 
Yyyy  Rok 
  
Q  

Kwartał 

  
M.  

Miesiąc 

  

 Dni w roku 

  
D  

Dni 

  
W  

Weekendy 

  
Ww  

Tygodnie 

  
H  

Godziny 

  
N  

Minuty 

  
S  

Sekundy 

  
 
Zauważ, że w naszym przykładzie użyliśmy literału m - czyli miesiące  
 
4.DateDiff - zwraca ilość jednostek czasu między dwoma datami 
 
Dim TheDate As Date 
Dim Msg 
TheDate = InputBox("Podzaj jakąś przyszłościową datę") 
Odp = "Będzie to za: " & DateDiff("d", Now, TheDate) & " dni." 
x = MsgBox (Odp) 
 
Zauważ w tym programiku w linijce 4, że użyliśmy literki d co oznacza ilość dni. 
 
Składnia : 
DateDiff ("jednostka", data1, data2) 
 

background image

5.DatePart - zwraca ilość jednostek licząc od początku roku. np. 
 
Dim TheDate As Date 
Dim Odp  
TheDate = InputBox("Podaj datę:") 
Odp = "Od początku roki minęło: " & DatePart("q", TheDate) & " kwartałów" 
x = MsgBox (Odp) 
 
Składnia: 
DatePart ("jednostka", data) 
 
6.Now - zwraca aktualną datę i czas 
 
x = MsgBox (Now) 
 
wyświetli to np. 00-06-15 11:12:34 
 
7.Time - zwraca aktualny czas np. 
 
x = msgBox(Time) 
 
zwróci to np. 12:23:54 
 
9. TimeSerial - zwraca w wewnętrznym formacie godzinę 
 
 
MyTime = TimeSerial(16, 35, 17) 
' Reprezentacja godziny 4:35:17 po południu. 
 
Zwróci to 16:35:17 
 
10. Timer - tą funkcją zajmiemy się trochę dokładnie, gdyż jest ona używana dość często. Zwraca 
ona ilość sekund które upłynęły od północy. No, ale po ci mi to ma być potrzebne ? 
 
Napiszemy program który pyta się nas ile to jest 12*6. Po podaniu prawidłowej odpowiedzi 
program wyświetli komunikat ile myśleliśmy nad tym zadaniem... 
Ale po co tu funkcja licząca sekundy od północy ?  
Załóżmy,  że uruchomiliśmy program dokładnie o północy - funkcja timer wskazuje 0. 
Rozwiązujemy zadanie 10 sek, funkcja timer wskaże 10 sek. Jeśli teraz odejmiemy czas odpowiedzi 
od czasu zapytania otrzymamy czas ile spędziliśmy na rozwiązywaniu zadania. 
No dobra - inaczej. Zaczęliśmy w 12000 sekundzie od pólnocy, po 10 sek timer wskaże 12010 czyli 
12010-12000 = 10 sek (myślenia). Napiszmy program - może lepiej to zrozumiesz: 
 
Na formularzu umieść przycisk i dodaj do niego kod: 
 
Dim CzasPrzed, CzasPo, CzasRoznica as Single 
Dim  Odp as string 
CzasPrzed = Timer  ' Pobieramy czas początku testu 
Do 
Odp = InputBox ("Ile wynosi iloczyn 12 i 6 ?") 
Loop Until Val(Odp) = 72 
CzasPo = Timer '' Pobieramy czas końca testu 

background image

CzasRoznica = CzasPo - CzasPrzed 
x = MsgBox("Zajęło ci to: " & CzasRoznica & " sekund") 
 
Przy okazji przypomniałeś sobie pętle. Program będzie wyświetlał pytanie dopóki nie podamy 
prawidłowej odpowiedzi. Potem oblicza czas i podaje wynik. Uruchom program i sam sprawdź... 
Jak widzisz odpowiedź jest ułamkowa - ale o zaokrąglaniu liczb dowiesz się na następnej lekcji. 
 
------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie, skoro nikt tego nie czyta to po co pisać ;(  Napisz najlepiej co uważasz o 
tym kursie... 
------------------------------------------------------------------------------------------------ 
 
 
LEKCJA 21 
  
 
Ostatnio poznaliśmy funkcje czasowe - dziś czas na funkcje matematyczne. Do dzieła  
 
1. Abs (liczba) - zwraca wartość bezwzględną z liczby np: 
 
Abs(4) = 4 
Abs(-4) = 4 
Abs(0) = 0 
 
2.Atn (liczba) - zwraca wartość arcusCotangens liczby wyrażoną w radianach np. 
 
4 * Atn(1) = pi 
 
3.Cos (liczba) - zwraca cosinus z liczby 
 
4.Exp(liczba) - e ^ liczba ; e - podstawa logarytmu naturalnego 
 
5.Log (liczba) - zwraca wartość logarytmu naturalnego z liczby 
 
6.Sng(liczba) - Dla liczby dodatniej zwraca 1, dla ujemnej -1, a dla 0 - 0 np. 
 
Sng(23) = 1 
Sng(-29) = -1 
Sng(0) = 0 
 
7.Sin(liczba) - zwraca sinus z liczby 
 
8.Sqr(liczba) - zwraca pierwiastek kwadratowy z liczby np. 
 
Sqr(9) = 3 
 
Jeśli chcesz wyliczać pierwiastki n-tego stopnia z liczby x to musisz zastosować wzór: 
x ^ (1/n) 
 

background image

9.Tan(liczba) - zwraca tangens liczby 
 
10. INT((6 * RND) + 1) - całkowita liczba losowa z przedziału od 1 do 6. No może nie całkiem 
losowa - sam zobacz. Uruchom VB, na formie ułóż przycisk i dodaj do niego następujący kod: 
 
Dim x 
x = INT((6 * RND) + 1) 
odp = MsgBox(x) 
 
Wystartuj program. Po naciśnięciu przycisku pojawi się pierwsza liczba - zapamiętaj ją. Teraz OK i 
jeszcze raz kliknij na przycisk - tym razem inna (chyba) liczba, także ją zapamiętaj. Zrób tak 
jeszcze kilka razy (zapamiętaj tylko te dwie pierwsze). No i co ? Są liczby losowe.  
Teraz wyłącz program i włącz go jeszcze raz. Kliknij na przycisk - pierwsza liczba jest taka sama 
jak poprzednio. Druga też... Jakbyś sprawdzał dalej to wszystkie by się powtórzyły w tej samej 
kolejności. Nie będę tłumaczył dlaczego bo tylko bym Wam pomącił w głowie. Aby VB za każdym 
razem losował inne liczby należy przed funkcją RND dopisać Randomize, będzie to wyglądało tak: 
 
Dim x 
Randomize 
x = INT((6 * RND) + 1) 
odp = MsgBox(x) 
 
A jak np. zrobić Cotangensa z liczby ? Oto krótka ściągawka : 
 
Secant Sec(X) = 1 / Cos(X) 
Cosecant Cosec(X) = 1 / Sin(X) 
Cotangent Cotan(X) = 1 / Tan(X) 
Inverse Sine Arcsin(X) = Atn(X / Sqr(-X * X + 1)) 
Inverse Cosine Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) 
Inverse Secant Arcsec(X) = Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1)) 
Inverse Cosecant Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) – 1) * (2 * Atn(1)) 
Inverse Cotangent Arccotan(X) = Atn(X) + 2 * Atn(1) 
Hyperbolic Sine HSin(X) = (Exp(X) – Exp(-X)) / 2  
Hyperbolic Cosine HCos(X) = (Exp(X) + Exp(-X)) / 2 
Hyperbolic Tangent HTan(X) = (Exp(X) – Exp(-X)) / (Exp(X) + Exp(-X)) 
Hyperbolic Secant HSec(X) = 2 / (Exp(X) + Exp(-X)) 
Hyperbolic Cosecant HCosec(X) = 2 / (Exp(X) – Exp(-X)) 
Hyperbolic Cotangent HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) – Exp(-X)) 
Inverse Hyperbolic Sine HArcsin(X) = Log(X + Sqr(X * X + 1)) 
Inverse Hyperbolic Cosine HArccos(X) = Log(X + Sqr(X * X – 1)) 
Inverse Hyperbolic Tangent HArctan(X) = Log((1 + X) / (1 – X)) / 2 
Inverse Hyperbolic Secant HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X) 
Inverse Hyperbolic Cosecant HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X) 
Inverse Hyperbolic Cotangent HArccotan(X) = Log((X + 1) / (X – 1)) / 2 
Logarithm to base N LogN(X) = Log(X) / Log(N) 
 
Bardzo przepraszam, że ściągawka jest nie przetłumaczona na polski. Wyciągnąłem ją żywcem z 
Helpa. Myślę, że zwykli użytkownicy  nigdy ich nie użyją - jest to dla matematyków (oni już sobie 
poradzą z tymi funkcjami). Pewnie spytacie po co to tu umieściłem. Skoro jest w helpie... Założę 
się, że większość z Was ma pirackiego VB. Jeśli zakupiłeś 1 płytkę VB 6 to na pewno Helpa nie 
posiadasz. No dobra - to tyle jeśli chodzi o funkcje matematyczne  
 

background image

LEKCJA 22 
  
 
Dziś przed nami funkcje łańcuchowe. Co to są funkcje łańcuchowe? Są to funkcje które 
"przerabiają" stringi. Sami zobaczcie:  
 
1. Chr (liczba) - zwraca znak ASCII odpowiadający numerycznemu argumentowi. O co tu chodzi i 
po co to stosować. Napiszmy mały programik: 
 
Uruchom VB - na formie ułóż przycisk. Teraz musimy dodać taki kod, aby wyświetlił się 
komunikat: 
I powiedziała "Jestem tu" i poszła dalej 
 
Psi. Banał - napiszę tak: 
 
x = msgbox (" I powiedziała "Jestem tu" i poszła dalej" ) 
 
Ojej ! Wyskoczył jakiś błąd - co jest. VB się pogubił! Dlaczego. VB chce wyświetlić komunikat : 
I powiedziała , ale po drugim cudzysłowie nie ma przecinka i zamiast vbPrzycisk czy vbikonka jest 
jakaś bzdura ! Chmm co by na to poradzić ? Tutaj z pomocą przychodzi nam funkcja Chr - nasz 
program będzie wyglądał tak: 
 
x = msgbox ( "I powiedziała " & chr(34) & " Jestem tu " & chr(34) & " i poszła dalej ") 
 
Trochę bardziej skomplikowane - ale tak musi być  
 
2. LCase (string) - zmienia wszystkie znaki w stringu na małe np: 
 
x = "Stonoga Ma 100 nóg" 
y = LCase (x) 
 
Da w wyniku "stonoga ma 100 nóg" 
 
2. UCase - zmienia wszystkie znaki w stringu na duże np. 
 
x = "Stonoga Ma 100 nóg" 
y = UCase (x) 
 
Da w wyniku "STONOGA MA 100 NÓG" 
 
3.Left (string, n) - zwraca n pierwszych znaków łańcucha (stringa) np. 
 
x = "Stonoga Ma 100 nóg" 
y = Left (x, 10) 
 
Zwróci to - Stonoga Ma 
 
4. Right (string, n) - zwraca n ostatnich znaków łańcucha np. 
 
x = "Stonoga Ma 100 nóg" 
y = Right (x, 7) 
 

background image

Zwróci  - 100 nóg 
 
5. Mid (string, n,m) - zróci będączy częścią argumentu łańcuch począwszy od znaku numer n do 
znaku nr. m (licząc od n !)  np. 
 
x = "Stonoga Ma 100 nóg" 
y = Mid (x, 9,6) 
 
Zwróci  - 100 nóg 
 

 t 
 o 
 n 
 o 
 g 
 a 
   
 M 
 a 
   
 1 
 0 
 0 
   
 n 
 ó 
 g 
  

 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 1 
 2 
 3 
 4 
 5 
 6 
   
   
   
   
  
                    
 
 

background image

Zauważ, że litera M jest zarazem znakiem 9 jak i pierwszym !!!  
 
6. Len(string) - zwraca długość stringu np. 
 
x= "Stonoga" 
y = Len(x) 
 
W tym przypadku y = 7 
 
7. (L),(R)Trim - usuwa spacje wiodące - L z lewej, R z prawej, samo Trim i z lewej i z prawej np 
 
x = Ltrim ("       to jest lekcja VB      ")  
zwróci  "to jest lekcja VB      " 
 
x = Rtrim ("       to jest lekcja VB      ")  
zwróci "       to jest lekcja VB"  
 
x = trim ("       to jest lekcja VB      ")  
zwróci "to jest lekcja VB"  
 
8. ASC (znakASCII) - odwrotność funkcji Chr - czyli ze znaku robi liczbę np 
 
y = Asc("A") 
zwróci liczbę 65  
 
 
LEKCJA 23 
  
 
Funkcji ciąg dalszy. Dziś funkcje testujące dane i funkcje konwersji danych. Zaczynamy od tych 
pierwszych. 
Po co się je stosuje ? Jak sama nazwa mówi coś testują, ale co ? Nadają się doskonale do obsługi 
błędów w naszym programie. Zademonstruję działanie jednej z nich. Napiszmy program który 
będzie podnosił do potęgi pewną liczbę którą wpiszemy w okienko tekstowe. Tak więc 
uruchamiamy VB - dodajemy textbox-a nazwijmy go txtLiczba. Teraz jeszcze przycisk - jako 
etykietę nadaj mu "Podnieś do kwadratu". OK. Zasada jest prosta - po kliknięciu na przycisk 
podnosi do kwadratu liczbę wpisaną w okienko, a wynik podaje w MsgBox-ie. Proste nie ?  
 
Dim x 
x = Val(txtLiczba) ^ 2 
odp = MsgBox(txtliczba & " do kwadratu to " & x) 
 
Uruchamiamy program - w okienko tekstowe wpisujemy jakąś liczbę i działa. No dobra, ale co się 
stanie gdy w okienko tekstowe wpiszemy jakieś  słowo np. Visual Basic. Wyskoczy nam 
komunikat, że Visual Basic do kwadratu to 0. Co za bzdura !!!. Puki wpisujemy liczby to wszystko 
jest w porządku, a gdy jakiś string to cały program się pieprzy.  
Można by zastosować coś takiego, że gdy w pole tekstowe wpiszemy jakiś string to program 
wyświetli komunikat, że błąd. No ale jak VB ma rozpoznać czy to string czy liczba ? Po to właśnie 
są funkcje testujące dane. Nasz program teraz powinien wyglądać tak: 
 
Dim x 
If IsNumeric(txtliczba) Then 

background image

x = Val(txtliczba) ^ 2 
odp = MsgBox(txtliczba & " do kwadratu to " & x) 
Else 
odp = MsgBox("Błąd", vbCritical, "Błąd") 
End If 
 
Po przetłumaczeniu będzie to wyglądało tak: 
 
Zapamiętuj x 
Jeśli to co w polu tekstowym to liczba to... 
Obliczenie + Komunikat z odpowiedzią 
W przeciwnym przypadku 
Błąd 
 
OK. Oto najważniejsze funkcje testujące dane: 
 
1. IsDate (string) - zwraca true jeśli data 
2. IsNumeric (string) - zwraca true jeśli liczba 
3. IsEmpty (zmienna) - zwraca True jeśli zmienna nie istnieje 
 
Mały przykładik do IsEmpty 
 
Dim zmienna 
If IsEmpty (zmienna) Then 
MsgBox ("Błąd") 
End If 
 
W tym przypadku wyskoczy komunikat Błąd ponieważ nigdzie nie mamy podstawienia czegoś pod 
zmienną. 
 
No dobra - to tyle o funkcjach testujących dane - więcej w helpie (ci co mają pirata to niestety, ale 
jeśli Ci te funkcje będą potrzebne to napisz do mnie, a ci je podeślę ...) 
 
--------------------------- FUNKCJE KONWERSJI DANYCH ----------------------------- 
 
A te po co się stosuje ? Znów malutki przykładzik: (chyba to już kiedyś było...) 
 
x = 1/7   'daje to w wyniku 0,1428571 
x = CDbl (1/7)  'daje w wyniku 0,142857142857143 
 
VB domyślnie stosuje tryb Single - pierwszy przypadek. Po konwersji na Double otrzymujemy 
dokładniejszy wynik... 
 
Oto inne: 
 
Cint (x) - Zaokrągla w górę argument z częścią ułamkową do liczby całkowitej np. 
Cint (12,7) = 13 
 
Int(x) - Zaokrągla w dół argument z częścią ułamkową do liczby całkowitej np. 
Cint (12,7) = 12 
 
CStr (x) - Konwertuje argument na stringa 

background image

CVar (x) - Konwertuje argument na Variant 
 
Fix (liczba) - Obcina część ułamkową 
 
Hex(liczba) - Konwertuje numeryczny argument na heksadecymalny 
 
Oct (liczba) - Konwertuje numeryczny argument na oktalny 
 
Teraz pewnie powiesz, że Fix i Int to te same funkcje. Bo przecież: 
Fix (12,5) = 12    i   Int(12,5) = 12 
Połowicznie masz rację. Fix = Int tylko wtedy gdy liczba jest dodatnia lub 0. Ale zobacz: 
 
Fix (- 12,5) = -12   ' Bo obcina to co jest po przecinku 
Int (-12,5) = -13   'Bo -12 było by większe niż -12,5, a ma być mniejsze - więc -13 
 
Oczywiście funkcji jest więcej, ale te są najważniejsze...  
 
  
LEKCJA 24 
  
 
Dzisiaj powiemy sobie jak uruchamiać inne programy z VB, oraz jak sterować listami napędów, 
plików i katalogów. OKi. Zaczynamy...  
 
Jeśli chcemy np. uruchomić Painta z poziomu programu napisanego przez nas musimy użyć funkcji 
shell. Pokażę to na przykładzie. 
Uruchom VB, ułóż przycisk i dodaj do niego kod: 
 
x = shell("C:\Program Files\Accessories\Mspaint.exe,1) 
 
Uruchom program i wciśnij przycisk - naszym oczom ukazuje się paint. No dobra, ale co oznacza ta 
jedynka w poleceniu ? 
Oto składnia funkcji Shell: 
 
x = Shell(Ścieżka dostępu, styl okna) 
 
Ścieżka dostępu to wiadomo co , a styl okna ? 
 

 Okno uruchamianego programu zostaje ukryte (trochę bez sensu) 

  

 Normalne okno 

  

 Okno zminimalizowane 

  

 Okno zmaksymalizowane 

  

 Normalne okno niezaznaczone 

  

 Zminimalizowane okno nie zaznaczone 

  
 
To nie błąd - w tabelce nie ma wartości 5.   

background image

-------------STEROWANIE LISTAMI NAPĘDÓW, KATALOGÓW, PLIKÓW------------- 
 
Co to są te listy ? Otwór eksplorator windows - Start - Programy - Eksplorator Windows 
Po lewej stronie widzisz drzewo katalogów - właśnie to jest lista katalogów, Lista plików jest po 
prawej stronie, a lista dysków wyżej. Właściwie to co oferuje Eksplorator jest trochę doskonalsze 
od list w VB - ale chciałem wam tylko zobrazować jak to wygląda. 
 
Jak to ma działać ? Po pierwsze mamy listę dysków i katalogów. Ma to zostać tak połączone, że 
gdy w liście dysków wybierzemy dysk np CD-ROM to w liście katalogów mają zostać wyświetlone 
katalogi z tejże płyty. Jeszcze do tego dochodzi lista plików. Jeśli wybierzemy jakiś katalog - mają 
się pojawić pliki w nim zawarte.  Bierzmy się do roboty: 
 
Uruchamiamy VB i kolejno na formie układamy - Listę dysków (DriveListBox - ikonka znajduje 
się obok ikonki zegarka - To ten szary prostokącik z kreską i kropką. Następne listę katalogów, 
(ikonka - żółty katalog), oraz listę plików, to zaraz obok ikonki katalogu. 
OKi. Mamy wszystko - uruchamiamy program, no ale to jeszcze nie działa. Co prawda możemy 
sobie coś tam wybierać, ale nie pociąga to za sobą zmiany drugiego elementu. Musimy dodać kod. 
W liście napędów (domyślnie wpisane jest tam C oraz nazwa dysku) dodaj kod: 
 
Dir1 = Drive1 
 
A w liście katalogów (chyba wiesz jak wyglądają katalogi): 
 
File1 = Dir1 
 
Uruchom program. Teraz powinno wszystko działać. No dobra, ale co to zwraca ? 
Zwraca to ścieżkę do pliku. Jak ? Ułóż na formie jeszcze Etykietę (Label) i nazwij ją lblWynik. 
Teraz do listy katalogów dopisz jeszcze (pod File1 = Dir1): 
 
lblWynik = Dir1.Path 
 
Spowoduje to wyświetlanie się aktualnej ścieżki do pliku. Ale można jeszcze wyciągnąć nazwę 
wybranego pliku. W liście plików dopisz: 
 
lblWynik = Dir1.Path & "\" & File1.FileName 
 
Teraz wszystko działa jak trzeba - no może nie wszystko... 
 
Jeśli zaznaczysz dysk nie wybierając żadnego katalogu i zaznaczysz jakiś plik np. Autoexec.bat to 
wyświetli się ścieżka : 
 
c:\\autoexec.bat 
 
To jest oczywiście błąd - na zadanie macie to poprawić  
 
------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie, skoro nikt tego nie czyta to po co pisać ;(  Napisz najlepiej co uważasz o 
tym kursie... 
------------------------------------------------------------------------------------------------  

background image

LEKCJA 25 
  
 
Dzisiaj przed nami już 25 lekcja. Ach. Jak ten czas szybko leci. Do końca kursu na poziomie 
podstawowym zostało jeszcze 5 lekcji !!! Tak, to już koniec podstaw. I co dalej ? Zobaczymy - 
jeszcze zostało 5 lekcji - a więc do dzieła:  
 
Dzisiaj przed Wami bardzo ważna (jak nie najważniejsza) lekcja. Jak dotąd pisaliśmy programy, 
które nie ingerowały w "życie" innych. No może funkcja Shell była wyjątkiem. Dziś zajmiemy się 
tworzeniem plików i zapisywaniem do nich informacji. OKi. Zaczynamy... 
 
Pierwszą funkcją którą musisz poznać jest Open. Przed edycją jakiegokolwiek pliku musimy go 
najpierw otworzyć. Jak ? 
 
Open "C:\katalog\plik.roz" for Mode as # number 
 
Co to jest ten Mode ? W mode wpisujemy to co będziemy chcieli zrobić z plikiem : 
 
Input 
 Jedynie odczyt danych (najbezpieczniejsza funkcja bo nic nie zepsujemy) 
  
Output 
 Dopisywanie do pliku informacji 
  
Append 
 Nadpisywanie informacji 
  
 
Number to zaś liczba porządkowa otwartego pliku. Nie możemy otworzyć dwóch plików z tym 
samym numerem porządkowym !!! Czyli:  
 
Open "C:\moje dokumenty\index.dat" for input as #1 
Open "C:\info.txt" for input as #1 
 
Coś takiego jest niemożliwe ! Możliwe jest za to: 
 
Open "C:\moje dokumenty\index.dat" for input as #1 
Open "C:\info.txt" for input as #2 
 
Teraz funkcja Close. Ona zamyka pliki. Czyli jeśli użyjemy funkcji Open to także musimy użyć 
funkcji close. 
Jeśli chcemy zamknąć plik z numerem porządkowym 3 to piszemy: 
 
Close 3 
 
Jeśli chcemy zaś zamknąć wszystkie aktualne pliki to po prostu wpisujemy close. 
Czy więc teraz jest możliwa taka sytuacja ? 
 
Open "C:\moje dokumenty\index.dat" for input as #1 
Close 1 
Open "C:\info.txt" for input as #1 
 

background image

TAK ! Otwieramy plik z #1 - zamykamy go (teraz #1 się zwalnia), no i znowu możemy otworzyć 
plik z #1 
 
No dobra, ale po co tak otwierać i zamykać pliki ? Po to aby można było z nich skorzystać !!! 
 
--------------------------------------------- WRITE ------------------------------------------ 
 
Instrukcja ta zapisuje do pliku pewne informacje. Jak ? Napiszemy teraz program zapisujący do 
pliku imiona pewnych dzieci. Otwieramy więc VB - tworzymy przycisk i dodajemy kod: 
 
Dim x 
Dim dzieci(6)    'Pamiętasz tablice ? 
dzieci(1) = "Kasia" 
dzieci(2) = "Michał" 
dzieci(3) = "Piotruś"   'Nie musimy wykorzystywać wszystkich 6 imion 
Open "C:\dzieci.txt" for Output as #1   'Output bo będziemy zapisywać do pliku 
For x = 1 to 3  'Bo mamy troje dzieci 
Write #1, dzieci(x) 
Next x 
Close 1 
 
No, no, no. Co to jest ! Tłumaczę wszystko: 
 
Dim-y  -  to chyba wiadomo, pierwszy (x) to zmienna dla For-a, a drugi to tablica 
Następnie przypisanie dzieci do tablicy 
Open - tutaj zostaje otwarty plik do zapisu z liczbą porządkową #1 
For - Od x = 1 do 3 
Zapisz do #1 zmienną dziecko(x); teraz x = 1 (patrz FOR) a więc Kasia 
Next - powrót do for ale x = 2 
For ... 
Zapisz do #2 zmienną dziecko(x); teraz x = 2 a więc Michał... 
Tak jeszcze przez Piotrusia i 
Zamknij plik #1 
 
Chmmm. I co to z tego powstało ? Uruchom program i naciśnij przycisk. Nic się nie dzieje... No 
tak, ale to ma stworzyć tylko plik... Popatrzmy. Uruchom Ekspolator Windows. Start - Programy - 
Ekspolator Windows. Po prawej stronie powinieneś zobaczyć plik dzieci.txt. Otwórz go klikając na 
niego. Jest !!! Zapisał tam 3 imiona - ale dlaczego w cudzysłowach ? Jak może pamiętasz w VB 
stringi podaje się w cudzysłowach, liczby bez. No fajnie. 
A co by się stało gdybyśmy zapomnieli użyć funkcji Close ? 
Plik nie zostałby zapisany - a więc zostałby utworzony (funkcja Open as Output), ale nie zapisany - 
byłby więc pusty... NIE USUWAJ GO NA RAZIE !!! - plik będzie nam potrzebny w następnej 
lekcji !!! 
 
Druga sprawa - będzie wam potrzebna jak będziecie pisać poważniejsze programy. Sam nad nią 
myślałem kilka dni - Wam podaję gotowca.  
Póki wiemy ile jest informacji do zapisu sprawa jest prosta (For x = 1 to ilość). A jeśli ilości nie 
znamy ? Albo będzie się ona stale zmieniała ? Tu jest problem ! Musimy zastosować coś takiego: 
 
Dim x, wynik as single 
Dim tablica(100) 
... - tutaj np. zapisy do tablicy 

background image

Open "C:\plik.roz" for Mode as # number 
For x = 1 to 100000  'wpisujemy jakąś liczbę większą od rozmiaru tablicy 
wynik = VarType(tablica(x)) 
If wynik = 0 then Exit For 
Write # number, tablica(x) 
Next x 
Close 1 
 
Jak to działa. Pętla For - Next przerwie się jeśli wynik = 0 (IF wynik = 0 ...). A kiedy będzie 0 ? Nie 
znasz jeszcze funkcji VarType. Musisz wiedzieć jedynie, że zwraca ona pewne liczby. Jeśli zwróci 
0 to błąd. Czyli - jeśli błąd do koniec zapisu... 
 
OKi. Zapomniałem napisać o jeszcze jednym. Funkcją write możesz zapisać kilka informacji w 
jednej linijce np. 
 
Write #1, string, jakasliczba, jakasdata 
 
Spowoduje to np. zapisanie do pliku takich informacji: 
 
" To jest jakiś string", 123456789876, #12-11-99# 
 
Dobra, skoro umiemy już zapisywać to przydałoby się odczytać jakoś te informacje. Ale o tym w 
następnej lekcji.  
 
 
LEKCJA 26 
  
 
Dzisiaj czeka nas odczytywanie informacji z plików. Postaramy się odczytać trzy imiona z pliku 
dzieci.txt. Jak ? Uruchommy VB i na formie ułóżmy przycisk - dodajmy do niego kod:  
 
Dim x 
Dim dzieci(10) 
Open "C:\dzieci.txt" for input as #1 
For x = 1 to 3 
Input #1, dzieci(x) 
odp = MsgBox(dzieci(x)) 
Next x 
Close 
 
Spowoduje to trzykrotne wyświetlenie się MsgBox-a z imieniem kolejnego dziecka. Jak może 
zauważyłeś funkcja Input ma identyczną składnię jak Write. Sam przeanalizuj kod. To tnie o to 
chodzi, że jestem leniwy i nie chcę Wam wytłumaczyć. Ja chcę Was nauczyć logicznego myślenia. 
Jeśli jednak nie dajesz sobie rady ze zrozumieniem kodu to wróć do poprzedniej lekcji. Tam 
znajduje się prawie taki sam i przetłumaczony. 
 
Dobra - ale jeśli chcemy odczytać wszystkie rekordy z pliku, ale nie wiemy ile ich jest? Tym razem 
jest trochę inaczej niż z funkcją Write . Tam musiałem napisać procedurę - tutaj użyjemy gotowej 
funkcji EOF. Działa ona na zasadzie (tak też ją można przetłumaczyć) - czy jest jeszcze coś w pliku 
? Czyli nasz program ma wyglądać tak: 
 
Czy jest jeszcze coś w pliku ? Jeśli tak to... 

background image

Odczytaj i powrót 
Jeśli nie to koniec 
 
Składnia funkcji EOF 
EOF(numer pliku) 
 
Widać, że będziemy tu musieli zastosować pętlę DO-LOOP. Kod ma wyglądać tak: 
 
Dim tablica(100) 
Open "c:\dzieci.txt" for input as #1 
Do Until EOF(1) = True 
Input #1, tablica(x) 
Loop 
Close 
 
Zobaczmy jak zachowa się nasz program. 
 
Zapisz tablicę 100 - elementową 
Otwórz plik dzieci.txt do odczytu danych 
Dopóki EOF nie równe True czyli równe False !!! (czyli dopóki nie koniec pliku) 
Odczytuj i zapisuj do tablicy 
Kontynuuj 
Zamknij plik 
 
OKi. Myślę,  że sobie poradzisz. Jeszcze jedna ważna sprawa. Co zrobić gdy chcesz odczytać 
jedynie drugą i trzecią linijkę pliku dzieci.txt ? Musisz zastosować coś takiego: 
 
Dim dziecko2, dziecko3 as string 
Open "c:\dzieci.txt" for input as #1 
Input #1, dziecko2 
Input #1, dziecko2 
Input #1,dziecko3 
Close 
 
Działa to tak: 
Zapamiętuj dziecko2,dziecko3 
Otwórz plik do odczytu danych 
Zapisz do zmiennej dziecko2 pierwszą linijkę pliku #1. Nam chodzi o drugą. 
No to jeszcze raz zapisz do zmiennej dziecko2 drugą linijkę pliku #1 
I do zmiennej dziecko3 trzecią linijkę pliku. 
 
 
LEKCJA 27 
  
 
Doszliśmy już do kolejnej, już 27 lekcji podstaw VB. Dzisiaj jeszcze uzupełnienie do ostatnich 
dwóch lecji.  
Umiemy już otwierać pliki, edytować je, czytać z nich dane. Dziś nauczymy się usuwać pliki, 
katalogi itp.  
 
Zaczynamy od usuwania plików. Służy do tego funkcja kill. Używamy jej w następujący sposób:  
 

background image

Kill "C:\dzieci.txt"   ' Usunie ona plik stworzony 2 lekcje temu 
Kill "C:\Bzdety\*.*  'Usunie wszystkie pliki z katalogu Bzdety 
Kill "C:\bzdety\*.txt"   ' Usunie wszystkie dokumenty tekstowe z katalogu bzdety 
Kill "C:\bzdety\A*.*  'Usunie wszystkie pliki z katalogu bzdety zaczynające się na literę a  
 
Dobra - teraz funkcja RmDir - usuwa ona katalogi (puste).  
 
RmDir "C:\bzdety"  'Spowoduje usunięcie katalogu bzdety jeśli nie ma w nim żadnych plików  
 
A jeśli byśmy chcieli usunąć katalog z plikami ? Zastosujmy połączenie obu wcześniej poznanych 
komend:  
 
Kill "C:\bzdety\*.*" 
RmDir "C:\bzdety"   
 
Niestety, jeśli w katalogu bzdety będą jakieś podkatalogi (podfoldery), to wyskoczy błąd. Pozbycie 
się tego uniedogodnienia jest bardzo trudne. Sam nie wiedziałem jak się za taką funkcję zabrać. 
Dopiero na grupie dyskusyjnej poznałem takiego jednego co mi to wyjaśnił. Funkcję opiszę dopiero 
w kursie na poziomie zaawansowanym.  
 
OKi. Skoro umiemy usuwać pliki i katalogi, umiemy tworzyć pliki (Funkcją Open-Close) to 
przydałoby się nauczyć tworzenia katalogów. Służy do tego funkcja MkDir np:  
 
MkDir "C:\Moje dokumenty\pierdoły"  'Spowoduje utworzenie katalogu pierdoły w Moich 
dokumentach  
 
OKi. Czegoś jeszcze brakuje? Tak zmieniania nazw plików, katalogów i przenoszenia ich w inne 
miejsce na dysku.  
Nie uwierzysz, ale te trzy metody obsługuje jedna funkcja - Name.  
 
Aby zmienić nazwę pliku: 
File "C:\Moje dokumenty\Do mamy.doc" as "C:\Moje dokumenty\Wysłany do mamy.doc"  
 
Aby zmienić nazwę katalogu: 
File "C:\Bzdety" as "C:\Pierdoły"  
 
Aby przenieść plik w inne miejsce (od razu zmieniając jego nazwę) 
File "C:\dzieci.txt" as "C:\Moje dokumenty\bachory.txt"  
 
------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie, skoro nikt tego nie czyta to po co pisać ;(  Napisz najlepiej co uważasz o 
tym kursie... 
------------------------------------------------------------------------------------------------  
 
 
LEKCJA 28 
  
To już lekcja 28. Dzisiaj nauczymy się posługiwać polem grafiki. Podobne jest do Etykiety, z taką 
różnicą, że zamiast tekstu umieszcza się tam grafikę. Takie pole graficzne znajduje się na palecie 

background image

narzędzi prawie na samym dole. To taki obrazeczek z górami i słoneczkiem w ramce. U samej góry 
znajduje się jakiś obraz z kaktusem. Ale nie o to nam chodzi. To co jest na górze to PictureBox - 
my zajmiemy się obiektem Image (ten na dole). Wybieramy go więc i układamy gdzieś na formie. 
Co to ? Jakiś prostokąt z przerywanych linii. To jest właśnie to ! Teraz w to pole możemy 
załadować grafikę ! Teraz uwaga. Jeśli załadujemy plik graficzny większy od pola graficznego to 
rysunek zostanie obcięty. Czyli np. na formie ułożyliśmy Image-a o rozdzielczości 400x200. My 
zaś chcemy załadować zdjęcie kota o rozdzielczości 800x200. I co nam z tego powstanie ? 
Będziemy widzieć albo pierwszą połowę kota, albo drugą. My chcemy zrobić coś takiego jak w 
programach graficznych. Chwytamy za krawędź i zmieniamy rozmiar dowolnie. W VB uzyskamy 
to poprzez zmienienie opcji Image-a - Stretch na True. Popatrz powyżej tej opcji. Mamy tam 
funkcję Picture. Tu możemy ustalić jaki rysunek ma zostać załadowany.  
 
A co jeśli chcemy załadować rysunek kodem. Np. po uruchomieniu programu podajemy mu ścieżkę 
do pliku a on to ma otworzyć ? 
Pewnie myślisz, że jest to zwykłe przypisanie opcji obiektowi jak np. 
Image1.picture = "C:\Moje dokumenty\kot.jpg" 
 
COŚ TAKIEGO JEST NIEPOPRAWNE !!! 
 
Do załadowania obrazka musimy użyć polecenia LoadPicture. Nasz kod więc powinien wyglądać 
tak: 
 
Image1.picture = LoadPicture "C:\Moje dokumenty\kot.jpg" 
 
-------------------------------------- SHELL jeszcze raz -------------------------------------- 
 
Pamiętasz jeszcze jak uruchamialiśmy programy z poziomu VB ? No dobra, dziś jeszcze nauczysz 
się otwierać inne pliki. Np. chcemy otworzyć dokument Worda z poziomu VB. Pewnie napisałbyś 
tak: 
 
x = Shell("C:\Moje dokumenty\list.doc",1) 
 
Takiej funkcji używamy tylko do odpalanie Exe-ców. My musimy otworzyć Worda. Sprawa jest 
nadzwyczaj prosta, w pewnym miejscu dopisujemy tylko start: 
 
x = Shell("Start C:\Moje dokumenty\list.doc",1) 
 
OKi. Dzisiejsza lekcja była nadzwyczaj krótka. Za to następna będzie trochę trudniejsza.  
  
 
LEKCJA 29 
  
 
Witajcie znów ! Jak obiecałem dzisiaj trochę dłuższa i trudniejsza lekcja. Będziemy tworzyć menu. 
Jeśli używasz teraz przeglądarki to spójrz prawie na samą górę ekranu - widzisz tam Plik, Edycja, 
Widok itd. Kliknij np. na Plik - rozwija się kolejne menu - będziemy to już nazywać podmenu. Ale 
to podmenu można jeszcze bardziej rozwinąć. Tak np. jest W Internet Explorer pod Plik - Nowy. 
Rozwija się kolejne. Te zagadnienia są trochę trudniejsze więc po raz pierwszy do kursu wstawię 
grafikę!!!  
 
OKi. Na razie stworzymy coś takiego: 
 

background image

Menu jak na razie nie będą rozwijane. Nie posłużymy się tu żadną kontrolką z menu narzędzia. To 
co nas interesuje znajduje się pod menu Tools- Menu Edytor. Lub szybko dostaniemy się do tego 
przytrzymując przycisk Control a potem literkę E. Wyskoczy nam takie okienko: 
 
Chmmm. Co my tu mamy. Pierwszą rzeczą jest Caption. Chyba wiesz co to jest ... To jest to co 
będziemy widzieć na pasku - wpisz więc Plik. Duga rzecz to name - tutaj nazywamy to mnuPlik. 
Inne rzeczy nas na razie nie będą interesować. Klikamy Next. Teraz znów w Caption wpisujemy 
Edycja i nazwa mnuEdycja. Next. Caption Widok, nazwa mnuCaption. Teraz nasz program 
powinien wyglądać tak ja na pierwszym rysunku. No dobra, ale my chcemy aby to menu było 
rozwijalne. No więc jeszcze raz wchodzimy do menu edytora. Są tam nasze trzy pozycje. Klikamy 
poniżej ostatniej na wolnym miejscu. W pole Caption wpisujemy Start, a jako nazwę nadajemy mu 
mnuPlikStart. No dobra, jak na razie stworzyliśmy 4 menu rozwijalne. Ale my przecież chcemy aby 
to było podmenu. Aby ustawić to tam gdzie trzeba będziemy musieli się posłużyć strzałeczkami - te 
zaraz obok Next-a. Skoro Start ma być pod Plik, to musimy 2x kliknąć strzałkę w górę. No ale 
nadal mamy 4 menu rozwijalne. No to jeszcze strzałka w prawo i wyglądać to powinno tak: 
 
 
Ja jeszcze zrobiłem koniec. Myślę,  że sobie z tym już poradzisz. Jeszcze raz na wolne miejsce 
Caption na Koniec, nazwa mnuPlikKoniec. I jeszcze ustawić tak jak na rysunku. A jeśli teraz 
byśmy chcieli z Plik - Start zrobić kolejne menu rozwijalne ? Tzn. Klikamy Plik - Start i wyskakuje 
kolejne menu z kolejnymi dwoma opcjami - Przód i tył ? Znów klikamy na wolne miejsce w Menu 
Edytorze. Tworzymy kolejną pozycję - Przód o nazwie mnuPlikStartPrzod. Ma ona być rozwijana 
Startem, a więc przesuwamy ją strzałkami do góry pod Start. No ale teraz znów mamy 4 główne 
menu rozwijalne. No to strzałka w prawo. No, ale tera jak klikniemy na menu plik to pokaże 3 
pozycje - Start, Przód,Koniec. My chcemy, aby Przód ukazało się dopiero po kliknięciu na Start. No 
to jeszcze raz strzałka w prawo. To samo robimy z Tył. Powinno to teraz wyglądać tak: 
 
Dobra. Teraz klikamy OK - nasz program powinien wyglądać tak: 
 
Dobra. A teraz jak zrobić, aby po kliknięciu na Koniec program się wyłączył ? Bardzo prosto ! Po 
prostu kliknij na Koniec i dodaj odpowiedni kod tzn. Unload Me 
 
Musisz sobie jeszcze poćwiczyć tą lekcję, gdyż jest ona troszeczkę skomplikowana, a na następnej 
lekcji jeszcze trudniejsze zagadnienie - będziemy projektować pasek narzędzi 
 
------------------------------------------------------------------------------------------------ 
Pamiętaj ! Jeśli masz jakiekolwiek problemy ze zrozumieniem kursu, albo masz jakieś pytania pisz 
do mnie na adres slash@ptik.prv.pl . Twój list na pewno nie zostanie bez odpowiedzi. Jeśli nawet 
nie masz do mnie żadnych pytań ani uwag to i tak napisz.. Po co? Chcę wiedzieć czy w ogóle ktoś 
ten kurs czyta. Wiecie, skoro nikt tego nie czyta to po co pisać ;(  Napisz najlepiej co uważasz o 
tym kursie... 
------------------------------------------------------------------------------------------------ 
  
 
LEKCJA 30 
  
 
Dziś już ostatnia lekcja VB ;( - ale na poziomie podstawowym. Będą kolejne :))))) 
Dziś zajmiemy się chyba najtrudniejszym zagadnieniem jak do tej pory - tworzeniem paska 
narzędzi. Jeśli oglądasz tą stronę w przeglądarce internetowej to na pewno widzisz takie pasek 
zaraz pod (niekiedy obok) menu. Tak to te strzałki, krzyżyki itp. To jest właśnie pasek narzędzi. W 
tej lekcji także wstawiam grafikę ;)  (Mogłem o tym wcześniej pomyśleć - zajebisty pomysł nie...)   

background image

Dobra - aby zrobić pasek narzędzi musimy posłużyć się dwoma elementami z paska narzędzi. 
Uwaga standardowo są one nie dostępne - musimy (jak kiedyś) dodać element Microsoft Windows 
Common Controls 6.0. Pamiętasz jak - jeśli nie to powrót do lekcji 17 !. Najpierw potrzebny nam 
będzie ImageList. Jak wygląda to zobacz na ściągawce z paska. Układamy go na formie - tak to 
takie 3 kwadraciki z jakąś klepsydrą czy czymś takim. Klikamy na niego prawtm klawiszem myszy 
i z powstałego menu wybieramy Properties. Wyskoczyło nam okienko Opcji. Wybieramy teraz 
zakładkę Images i wybieramy kolejno ikonki (lub inne małe obrazki) które będziemy później 
chcieli wstawiać do naszego paska narzędzi. A więc klikamy Insert Picture i wybieramy katalog z 
Visual Basiciem. Standardowo jest to C:\Program Files\Microsoft Visual Studio. My będziemy 
dodawać ikonki standardowo zainstalowane przez VB. A więc wchodzimy kolejno w 
Common\Graphics\Icons. Teraz wybierzmy dziedzinę Computer. Wyświetliło się mnóstwo ikonek - 
dodajm ze 4 - może kolejno - CDROM01.ico. Pojawiła się ona w okienku. Teraz znów Insert 
Picture i dodajemy dalej - DISK04.ico, KEYBRD02.ico, Mouse01.ico - no może starczy. Nasze 
okienko Properties powinno wyglądać tak:  
 
 
Teraz klikamy OK. No i bierzemy się do tworzenia paska narzędzi. Wybieramy więc ToolBar - 
także zobacz ściągawka. Układamy go gdzieś na formie. Sam ułoży się u samej góry formy - 
zostawmy go więc tam. Teraz klikamy prawym klawiszem myszy na ToolBar-ze i wybieramy 
Properties. Ojej - ile tu tego jest ! 
 
 
Nas zainteresuje trzecia pozycja - mianowicie ImageList. Musimy wybrać ImageList1 - bo tam są 
nasze rysunki... Teraz przechodzimy do zakładki Buttons i widzimy: 
 
 
I chyba już wiesz co kliknąć ! Oczywiście insert Button. Teraz podświetlą nam się "zszarzałe" pola. 
W sekcji Imege wybieramy numer ikonki (teraz z 0 robimy 1). W sekcji Key wpisz nazwę 
przycisku -  KeyCDROM. Teraz znów Insert Button - tym razem w sekcji Imege wpisujemy 2 i 
wpisujemy inną nazwę przycisku. Czynność należy wykonać jeszcze 2 razy - w sumie pole index 
ma osiągnąć wartość 4. No i na koniec OK. Po wystartowaniu nasz program powinien wyglądać 
tak: 
 
 
Dobra - stworzyliśmy pasek narzędzi ale jak to wykorzystać. Sprawa nie jest tak prosta jak ze 
zwykłymi przyciskami. Przedtem wystarczyło kliknąć dwukrotnie na przycisku i dopisać kod, a tu 
nie mamy do czynienia z przyciskami tylko ToolBarem. Nie bój się. Tym razem sprawa jest dość 
prosta. Kliknij dwukrotnie na pasku narzędzi naszego programu. Wyskoczy miejsce na dopisanie 
kodu. Ale do jakiego przycisku? 
Do wszystkich ! Program je będzie rozróżniał po nazwach.  
 
Dim Msg as Integer 
Select Case Button.Key 
Case is = "KeyCDROM":  
Msg = MsgBox ("Nacisnąłeś CD-ROM") 
Case is = "KeyDyskietka": 
.... itd 
End Select  
 
Uff. Dobrnęliśmy do końca kursu VB dla początkujących. Mam nadzieję, że będziesz mieć pożytek 
z tej nauki. Jeśli dobrnąłeś tutaj to koniecznie napisz do mnie na adres slash@ptik.prv.pl . Chcę 
wiedzieć ile osób skorzystało z mojego kursu VB. Napisz jak ci się podobał kurs, ile dni (lat ???) go 

background image

przerabiałeś. Teraz czeka Ciebie kurs dla wtajemniczonych w VB - nie będę już opisywał tak 
dokładnie jak masz co robić krok po kroku. Jeśli uporałeś się z podstawami to na pewno masz już 
pojęcie jak zabrać się za zaawansowane funkcje VB. Nie wiem jeszcze kiedy zacznę i ile tych lekcji 
będzie. Na razie rozpoczynam przygodę z dużo bardziej profesjonalnym językiem programowania 
jakim jest C++. Jeśli podobał się Wam kurs VB (po to właśnie chcę abyście pisali do mnie), to na 
pewno w przyszłości napiszę kurs C++. Jeszcze raz dziękuję za naukę z mojego kursu VB i 
zapraszam do kursu VB dla wtajemniczonych - w sieci już po wakacjach (albo nawet może w 
wakacje :)  )  
 
  


Document Outline