![Tw≤j ulubiony magazyn on-line](/file/14477/MICD_2000_12_NR1.iso/NoName/dane/gfx/noname.jpg)
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](/file/14477/MICD_2000_12_NR1.iso/NoName/dane/gfx/ucieczka.gif)
Copyright (c) 1999 - 2000 NoName |
|