Tw≤j ulubiony magazyn on-line

Kurs Visual Basic

Lekcja 6 - Kurs Visual Basic by SLASH

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

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╢ni│em 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.


ZADANIE

Poµwicz sobie funkcje MsgBox, InputBox, przypomnij sobie instrukcjΩ IF.

Lekcja 7 - Kurs Visual Basic by SLASH

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

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.

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?


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 - Kurs Visual Basic by SLASH

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:

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

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


Slash
e-mail: slash@ptik.ivg.pl




Ucieczka z piekla - ksiazka on-line

Copyright (c) 1999 - 2000 NoName