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