Visual Basic #3

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

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

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? 

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

Slash
slash@ptik.ivg.pl
http://www.ptik.ivg.pl 

 

 Copyright © 2000 PTiK. Wszystkie prawa zastrze┐one.
 Kopiowanie tekst≤w w ca│o╢ci lub we fragmentach bez zgody redakcji i autor≤w zabronione.