Magazyn NoName

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: slash@ptik.ivg.pl




Darmowe konta e-mail w prezencie od NoName!

Copyright (c) 1999 - 2000 NoName