ART5 (7)







NoName 9 - magazyn internetowy - mamy najwięcej najlepszych artykułów







Kurs Visual Basic

Lekcja 6 - Kurs Visual Basic by SLASH

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

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?


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

Lekcja 8 - Kurs Visual Basic by SLASH

Wyspani ? No to do dzieła !!! Dzisiaj dowiesz się co to są operatory arytmetyczne i
jak ich używać. Myślę, że umiesz już posługiwać się instrukcją IF. Będzie nam
dzisiaj bardzo potrzebna. Dobra. Czy ktoś wie co to są operatory arytmetyczne? Nie? No
to zaczynamy:

W Visual Basicu będziemy posługiwać się następującymi operatorami: And , Or, Not.
And to nasze polskie "i", Or to lub, a Not to nie. Ale o co tu właściwie
chodzi. Wyjaśnię to na prostym przykładzie:

Mamy dwie firmy które przynoszą dochody. Tak więc uruchamiamy VB, tworzymy dwa pola
tekstowe i przycisk. Pierwsze pole nazywamy txtFirma1, a drugi txtFirma2, oczywiście
czyścimy ich zawartość (Text). Przycisk nazwijmy np. cmdWynik. Nadajmy mu etykietę
(Caption) "I co ?". Teraz napiszemy procedurę, tak abyśmy dostali gratulacje
jeśli dochody jednej i drugiej firmy przekroczą 5000 zł. No to do przycisku "I
co?" dodajemy kod. No właśnie, ale jaki. Jak się pewnie domyślasz będziemy
musieli użyć instrukcji IF. Czyli Jeżeli dochód pierwszej firmy będzie większy niż
5000 to komunikat... Zaraz, a co z drugą firmą? Pierwsza może przynieść zysk w
wysokości 6000 zł, a druga straty w wysokości 9000 zł. I co? Program ma nam
pogratulować ? Można by użyć prostej funkcji matematycznej. Mianowicie dodawania.
Skoro i jedna i druga firma ma przynieść zysk pow. 5000 zł, no to w sumie mają
przynieść zysk 10000 zł. No dobra. Ale jak pierwsza przyniesie zysk 20000 zł, a druga
jakąkolwiek stratę to program też ma nam gratulować. Nie sądzę. My musimy
zaznaczyć, że i jedna i druga ma być dochodowa i przynosić zysk pow. 5000 zł. Po
polsku powiedzielibyśmy tak:

Jeżeli firma1 przyniesie zysk pow. 5000 i firma2 przyniesie zysk pow. 5000 zł
to... gratulacje.

I tak właśnie będzie brzmiał Visual Basicowy język:

Dim x
IF txtfirma1 > 5000 and txtfirma2 > 5000 then
x = msgBox("Gratulacje",vbInformation,"Dochód")
End IF

Uruchom program i co? Wpisz obydwie dane pow. 5000. Otrzymujesz gratulacje. A zmień
jedną z danych np. na 4000. Gratulacji już nie otrzymujemy. No więc program działa.
Myślę, że już rozumiesz operator And. Jeśli tak, to nie będziesz mieć żadnych
problemów z operatorem Or (lub). Spróbujmy zamienić w naszym programie and na or. Teraz
rozumiemy to tak:

Jeżeli firma1 przyniesie zysk pow. 5000 lub firma2 przyniesie zysk pow. 5000 zł
to... gratulacje.

Uruchamiamy program wpisujemy np. 6000 i 7000. I co? Gratulacje. Tutaj działa tak samo
jak z And. No dobra. Zmieńmy jedną daną np. na 2000. I co? Także gratulacje. W tym
przypadku program szuka w obydwu polach tekstowych liczby większej od 5000. Jeśli
znajdzie jakąkolwiek (czyli w txtFirma1 lub txtFirma2 lub w obydwu) to otrzymujemy
gratulacje. No też myślę, że nie miałeś z tym większych problemów. Został nam
jeszcze operator Not. Nie powinniśmy go stosować -bo gdzieś wyczytałem, że może
doprowadzić do nieoczekiwanych wyników - sam jednak nigdy z nim nie miałem problemów.
Faktycznie, lepiej zastępuje się go odwrotną instrukcją do danej. Oto przykład.

Mamy jedną firmę która powinna przynosić dochody. Gratulacje możemy wyświetlić na
dwa sposoby.

1. Operator NOT

Dim x
IF NOT txtFirma1 < 5000 then
x = msgBox("Gratulacje",vbInformation,"Dochód")
End IF

Jednak pisanie takich instrukcji jest bez sensu. Dlaczego ? Przetłumaczmy:

Jeśli dochód firmy1 NIE mniejszy niż 5000 to... gratulacje

Lepiej zapisać tak:

IF txtFirma1 >= 5000 then

Prawda, że bardziej czytelne. Staraj się nigdy niestosować tego operatora. Zawsze da
się go zastąpić przez zmianę znaku na przeciwny.


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.


Teraz jeszcze dopełnienie do InputBox-a. Zapomniałem Wam napisać, jak sprawić aby
działał przycisk "Cancel" na InputBox-ie. Pokaże to na przykładzie z
imieniem, który braliśmy na lekcji 6

Dim x,y as string
x = InputBox ("Jak masz na imię ?","Przywitanie","Może Marek...")
IF x = "" then end
y = MsgBox ("Witaj_" & x ,vbExclamation,"Przywitanie")

Wyjaśnienie do IF-a. Są tu pewnie dwie rzeczy których nie rozumiesz.
Po pierwsze. Dlaczego akurat x = "" ? Jeśli naciśniesz przycisk
"Cancel" VB nie przypisuje nic do zmiennej x. Wykorzystuje to właśnie IF
który kończy program w tym momencie.
Po drugie. Dlaczego po "then" nie zakończyłem linii i nie dałem instrukcji
End IF.
Otóż, jeśli nie masz zamiaru użyć instrukcji Else, lub ElseIF, a twoja instrukcja
warunkowa mieści się w jednej linijce. (jak np. moja - End) nie musisz rozpoczynać
nowej linijki i co za tym idzie kończyć IF-a


Slash
slash83@go2.pl

Ten tekst pochodzi z zinu @t




Wyszukiwarka