NoName - zin o wszystkim

Kurs Visual Basic

Lekcja 3 - Kurs Visual Basic by SLASH

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")

Odpowid╝ 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 zaznazcmy 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
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▒.

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 !

Do nastΩpnego spotkania !

Lekcja 4 - Kurs Visual Basic by SLASH

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

Tutaj zamieszczam gotowe zadanie jakby╢ nie m≤g│ szczaiµ o co chodzi!

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

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

Slash
e-mail: slash83@go2.pl