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