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.