Kurs
Visual Basic - cześć 6 LEKCJA
13
Jakie
powitanie by tu dziś wymyślić... Może po prostu WITAJCIE !!!
Dzisiaj przed nami prosta, ale bardzo ważna lekcja. Zmiana właściwości
komponentów kodem. Robiliśmy coś takiego gdzieś w pierwszych lekcjach
kursu. Dzisiaj jednak zajmiemy się tym tematem szczegółowo.
Musimy
wrócić do lekcji 1. Dla przypomnienia
(name) |
W
tym polu wpisujemy nazwę identyfikującą naszą etykietę –
najlepiej używać skrótu lbl (od Label) np. lblNazwa |
Alignment |
!!!
Czyli wyrównanie tekstu który znajduje się na etykiecie. Domyślnie
mamy ustalone 0 - Left Justyfy - czyli wyrównanie do lewej krawędzi.
Można też ustawić 1 - Right... czyli wyrównanie do prawej oraz 2 -
Center - czyli wyśrodkowanie tekstu. |
caption |
Chyba
najważniejsza – Tu ustalamy wyrazy które mają znaleźć się
na naszej etykiecie |
Font |
W
tym oknie możemy ustalić czcionkę, wielkość i efekty dla napisu |
Height |
Wysokość
etykiety. Raczej wygodniejsze jest rozciąganie bezpośrednio na
formularzu |
Left |
Określa
odległość etykiety od lewej krawędzi ekranu. Wygodniej jest
przemieszczać etykietę bezpośrednio na formie. |
BackColor |
Tutaj
kolor tła etykiety |
ForeColor |
Tutaj
kolor tekstu |
Top |
Określa
położenie etykiety od górnej krawędzi ekranu |
Width |
Określa
szerokość etykiety |
Visible |
Określa
czy etykieta ma być widoczna na formularzu. Jeśli zaznaczymy false,
to po uruchomieniu programu zobaczymy pusty formularz. |
O co
chodzi z tym kodem ? Napiszmy mały program. Na formularzu umieśćmy pole
tekstowe o nazwie txtWpis, wyczyść opcję Caption. Umieszczamy także
etykietę o nazwie lblGotowe i także wyczyśćmy Caption. I jeszcze 3
przyciski o nazwach - Do lewej, Do prawej, Wyśrodkowanie. Nazwij je jak tam
chcesz.
Nasz program ma działać tak - Wpisujemy w pole tekstowe jakiś tekst, który
automatycznie przenoszony jest do etykiety. A nasze trzy przyciski sterują położeniem
tekstu na etykiecie.
No
dobra, ale nie zapomniałem czasem o przycisku przenoszącym tekst z pola
tekstowego do etykiety ? Zaraz, przecież to miało być automatyczne... Ale
jak to zrobić. Po pierwsze musimy ocenić kiedy program ma zareagować.
Oczywiście, że wtedy, gdy zaczniemy coś wpisywać do pola tekstowego. Czyli
nasz kod będzie siedział w polu tekstowym. Tak więc klikamy na niego
dwukrotnie i widzimy coś takiego:
Private
Sub txtwpis_Change()
End Sub
Change
- oznacza zmianę - czyli jeśli coś będziemy zmieniać w polu tekstowym to
wykona nam się kod. No dobra, ale jaki ? Pomyślmy. Chodzi nam o
przeniesienie tego co w txtWpis do lblGotowe. Wyjdzie proste równanie
matematyczne:
lblGotowe.caption
= txtwpis
I jak to ma prawo działać. Tu właśnie zmieniamy właściwość etykiety,
mianowicie caption (czyli to co jest wpisane w etykietę). Przyporządkowujemy
temu to co wpisujemy w txtwpis.
Myślę, że rozumiesz...
Sprawdźmy
jak to działa. Uruchom program i wpisuj cokolwiek w pole tekstowe - działa
nie ? No dobra, ale przyciski nie działają.
Wracamy
do trybu projektowania, klikamy dwukrotnie przycisk Do lewej i dodaj kod:
lblGotowe.Alignment
= 0
Co to
oznacza. Zajrzyj do tabelki. To jest właśnie wyśrodkowanie. Ale dlaczego 0
? Znów spójrz do tabelki - 0 to jest do lewej. Po przetłumaczeniu funkcja
wygląda tak:
etykietaGotowe.wyrównanie
= 0 czyli do lewej
No
chyba wiesz co zrobić z pozostałymi przyciskami. Popatrz do tabelki i dopisz
odpowiedni kod.
Teraz uruchom program i co? Super nie... ;)
Dobra.
ni wyłączaj jeszcze VB. Zapisz program - będzie nam potrzebny za niedługo.
W tym celu z menu file wybierz Save Project As... i zapisz obydwa pliki gdzieś
na dysku.
Dobra.
Jeszcze jedno zdanie na koniec. Pamiętaj, że tym sposobem możesz zmieniać
właściwości wszystkich elementów ułożonych na formie!!!
LEKCJA 14
Witajcie
po raz kolejny. Właśnie mam spieprzony komputer i kurs ten piszę na
praktyce. No cóż – kurs trzeba pisać...
Dość
gadania – zaczynamy. Dzisiaj nauczysz posługiwać się polami wyboru
– Check Box-em i Option Button-em (Radio). Znajdują się one na palecie
narzędzi w czwartym rzędzie. Taki kwadracik „zafajkowany” i kółeczko
z kropką. Na początek weżmy ten pierwszy czyli kwadracik.
Na
pewno już się z nim gdzieś spotkałeś. Służy on do poinformowania
programu czy coś chcemy czy też nie. Np. możemy nim sterować podkreślenie
tekstu w etykiecie. Spróbujmy...
Na
formie ułóż CheckBox-a. Nazwij go chkPodkreslenie. Właściwość Caption
ustaw na „Podkreśl”. No dobra – ale co będzie podkreślane
? No oczywiście jakiś tekst w etykiecie. No więc tworzymy etykietę o
nazwie lblTekst i tekscie (Caption) – „To jest jakiś tam
tekst”. OK. Teraz nasz program po zaznaczeniu Check-a powinien podkreślić
tekst. Oczywiście kod będziemy dodawać do Check-a. Klikamy więc go
dwukrotnie i dopisujemy kod:
lblTekst.FontUnderline
= True
Chyba
jeszcze nie znasz właściwości FontUnderline – musisz wiedzieć, że służy
ona do podkreślenia tekstu.
Myślę,
że rozumiesz ten prosty kod. Jeśli klikniemy to podkreśl...
Odpal
program, zaznacz Check-a i co podkreślił. Hurra ! No ale teraz odznacz.
Podkreślenie nie znika – co jest. No tak. My mamy napisane, że program
ma podkreślić jeśli klikniemy na pole – nie ma ani słowa o
odznaczeniu. Pomyślmy jakby to zrobić. Musisz wiedzieć jedną bardzo ważną
rzecz. Jak sprawdzić czy Check Box jesz zaznaczony czy też nie ? Steruje tym
funkcja Value. Jeśli jest ona równa 0 to Check jest nezaznaczony, jeśl 1 to
zaznaczony, a jeśli 2 to zszarzały. Jak to sprawdzić. Zaznacz na formularzy
Check i w oknie properties zmień właściwość np. na 1 i co zaznaczył się...
? Procedura powinna wyglądać tak:
If
chkPodkreslenie.Value = 1 Then
lblTekst.FontUnderline = True
Else
lblTekst.FontUnderline = False
End If
Przetłumaczmy.
Jeśli
Chec Box zostanie zaznaczony (bo Value będzie równe 1) to
Podkreśl tekst
W przeciwnym przypadku (czyli wyłączymy Checka – Value = 0)
Skasuj podkreślenie tekstu
Koniec
Twoje
zadanie – dorób podobny CheckBox pogrubiający tekst. Służy do tego właściwość
FontBold. Myślę, że sobie poradzicie.
No
dobra – teraz zabieramy się za RadioButton – teraz nazwany
OptionButton. Umieśćmy taki na formularzu. Fajnie wygląda – ale co
poza tym. Czy on się różni od CheckBox-a – tylko wyglądem ? Nie,
nie, nie... Aby się o tym przekonać umieść na formie dwa Check-i i dwa
OptionButtony. Uruchom teraz program. Najpierw zaznacz pierwszego CheckBox-a a
potem drugiego. Co ten SLASH kombinuje – oba się zaznaczyły i co z
tego ? To miało być dziwne ? No dobra spróbuj to samo zrobić z Optionami.
Co? nie da się ? :) No właśnie – tu jest różnica. Nie można
zaznaczyć dwóch naraz.
Jak
sama nazwa wskazuje to jest przycisk opcji – a więc tylko jedną opcję
można wybrać. Napiszmy mały programik pokazujący praktyczne zastosowanie
obu tych pól wyboru. Napiszemy małą ankietę
Na
formularzu umieść dwa OptionButton-y jako Caption ponadawaj im kolejno
etykiety – Pentium i AMD oraz nazwij je optPentium, optAMD. Stwórz także
jeden CheckBox i jako właściwość Caption nadaj mu etykietę Posiadam
akcelerator graficzny i nazwij go chkAkcelerator. Potrzebna nam także będzie
etykieta. Skasuj zawartość Caption i nazwij ją lblEtykieta. Nasz program ma
działać tak: W etykiecie ma się
pojawić tekst – Masz komputer z procesorem (nazwa) i (masz/niemasz)
akcelerator(a). I tu znów musisz wiedzieć jedną bardzo ważną rzecz.
OptionButton-em też możesz sterować za pomocą opcji Value – tylko z
tą różnicą, że nie ma tu już wartośći 0,1,2 tylko jest True lub False.
Czyli klikamy dwukrotnie na pierwszym z optionButtonów i dodajemy następujący
kod:
Dim
procesor, akcelerator As String
If optPentium.Value = True Then
procesor = "Pentium"
Else
procesor = "AMD"
End If
If chkAkcelerator.Value = 1 Then
akcelerator = "i posiadasz akcelerator graficzny"
Else
akcelerator = "bez akceleratora graficznego"
End If
lblEtykieta = "Masz komputer z procesorem " & procesor &
" " & akcelerator
Przeanalizuj
kod. Myślę, że nie będziesz mieć z nim żadnych problemów.
No
dobra, ale program ma to samo wykonywać za każdym razem gdy coś wybierzemy.
Dodajmy więc ten kod do pozostałych ptinButtonói i Check-a. Uruchom
program. Działa !
Wszystko
byłoby w porządku gdyby nie pojawił się 4x ten sam kod. Przecież to jest
bez sensu pisać 4x to samo. A jak gdyby trzeba było to zrobić 20x to co? No
właśnie – z pomocą przychodzi nam funkcja Call. Oznacza ona Połącz.
Oto zasada jej działania:
Linijka1
Linijka2
Call Podprogram
Linijka3
Linijka4
Private
Sub Podprogram( )
Linijka5
Linijka6
Linijka7
End Sub
Program
będzie się wykonywał tak – Pierwzse linijka 1 i 2. Następnie
napotykamy Call – łączy nas z podprogramem – czyli następnie
linijka 5,6,7 i do End Sub. W tym momencie program wraca do Call czyli teraz
linijki 3 i 4.
No
dobra – ale jak to zastosować do naszego programu ? Bardzo prosto !
Najpier
musimy skasować wszystko co napisaliśmy (żeby się nie pogubić...).
Kliknij dwukrotnie na czymkolwiek co znajduje się na formie (możesz nawet na
niej samej). Wyświetli się kod – zaznacz wszystko co widzisz i skasuj
przyciskiem Del – powinna zostać czysta strona. No dobra –
oczyszczone z kodu.
Teraz
musimy napisać procedurę która będzie wywoływana Call-em. W oknie kodu
dopisujemy ją na samym końcu – zawsze za ostatnim End Sub. Jeśli mamy
czystą stronę to gdziekolwiek (się da... ;) ) Napisz:
Private
Sub Przelicz ( )
Po
naciśnięci Enter VB dopisał End Sub i oddzielił procedurę od reszty.
Piszemy dalej to co wpisywaliśmy wcześniej do każdego z przycisków opcji
czyli:
Dim
procesor, akcelerator As String
If optPentium.Value = True Then
procesor = "Pentium"
Else
procesor = "AMD"
End If
If chkAkcelerator.Value = 1 Then
akcelerator = "i posiadasz akcelerator graficzny"
Else
akcelerator = "bez akceleratora graficznego"
End If
lblEtykieta = "Masz komputer z procesorem " & procesor &
" " & akcelerator
No
dobra najważniejsze zrobione. No ale skąd program ma wiedzieć, że po
zaznaczeniu jednej z opcji ma się odwołać do tej procedury ?
No właśnie – w każdym przycisku opcji musimy dopisać linijkę:
Call
Przelicz ( )
Sprawdź
czy działa – przynajmniej powinno... ;)
Dobra – jak na dzisiaj starczy...
W
następnej lekcji dowiesz się jak zaznaczyć dwa OptionButtony na raz. Niemożliwe,
co ?
Zobaczymy...
LEKCJA 15
Witajcie.
W końcu po dwutygodniowej przerwie zasiadłem do kompa. Trzeba by było dalej
pisać kurs VB... No to zaczynamy.
Co by ty dzisiaj zrobić - może jakieś... zaraz dzisiaj chyba miałem napisać
jak włączyć 2 OptionButtony, nie? No dobra, ale po co? Zastanówmy się nad
rozszerzeniem programu z poprzedniej lekcji.
Ostatnio pisaliśmy program, gdzie OptionButtony decydowały o naszym
procesorze (a CheckBox - czy mamy akcelerator graficzny). A jak byśmy jeszcze
chcieli dorobić np. wybór prędkości CD-ROM-u ? Konieczne byłoby
zaznaczenie dwóch OptionButtonów. Jednego decydującego o procesorze, a
drugiego o CD-ROM-ie. No dobra ale jak to zrobić ?
Umieśćmy
na formie dwa OptB (tak to będzie w skrócie) nadajmy im etykiety jak w
programie z poprzedniej lekcji czyli Pentium i AMD. Teraz z 5 kolejnych OptB
dla CD-ROM-u. Nadajmy im kolejno etykiety - wolniejszy, 24x, 32x, 40x,
szybszy. Uruchamiamy program i spróbujmy zaznaczyć, że mamy procesor AMD i
CD 40x. Niestety, nie da się. Gdy zaznaczamy AMD jest wszystko OK. Ale przy
zaznaczaniu CD-ROM-u odznacza się procesor. Dlaczego to chyba wiesz? Nie da
się zaznaczyć więcej niż jednej opcji. No dobra - ale powiedziałem, że
jakoś się da. No ale jak ?
Do tego celu musimy użyć narzędzia o nazwie Frame (tłumacząc Ramka). Jest
ono na palecie narzędzi w postaci szarego kwadracika i małym napisem xy u góry
(3 rząd, 1 kolumna). Spróbujmy umieścić to na formularzu. No, takie sobie
- ale do czego to właściwie służy ?
Jeśli w ramce utworzymy OptionButtony to nie będą one kolidowały z OptB z
sąsiednich ramek, czy z poza formy. Czyli parę możemy stworzyć np.
OptB bezpośrednio na formie + OptB w ramce lub
OptB w ramce1 + OptB w ramce2 itd..
Oczywiście
par możemy tworzyć więcej. No to co - przenosimy nasze OptB (te co
charakteryzują CD-ROM) na ramkę. Chwytamy, przenosimy i puszczamy - OptB
zniknął ? Co jest ?
ZAPAMIĘTAJ
!!!
Najpierw tworzymy ramkę, a potem przycisk opcji tworzymy bezpośrednio na
niej. Nie możemy przenosić OptB-ów na ramkę.
Czyli
stare usuwamy i tworzymy nowe bezpośrednio na ramce. Uruchamiamy nasz program
i co, da się zaznaczyć dwie opcje ?
ZADANIE
DOMOWE
Udoskonal program z poprzedniej lekcji, tak aby można było zaznaczyć prędkość
CD-ROM-u. Napis wynikowy powinien być w tej formie:
Masz komputer z procesorem {AMD, Pentium}, CD-ROM-em {wolniejszym niż 24x,
24x, 32x, 40x, szybszym niż 40x} i {posiadasz akcelerator, nie posiadasz
akceleratora}
Banalne nie ? To no do roboty...
Teraz
dwa dopełnienia do poprzednich lekcji. Tak właściwie to jedno nowe, a jedno
dopełnienie do funkcji DIM. Czy może pamiętasz dokąd funkcja DIM pamiętała
zmienną ? Tak, do End Sub - czyli zakończenia procedury. No dobra - napiszmy
króciutki program, aby zobrazować to co chcę wyjaśnić.
Na
formie ułóż 2 przyciski - jako etykiety nadaj im Zapamiętaj i Odczytaj
oraz 1 TextBox (Pole tekstowe) nadaj mu nazwę txtzmienna. I o co tu będzie
chodziło... Po naciśnięci przycisku Zapamiętaj nasz program ma zapisać do
zmiennej x to co będzie w TextBox-ie. Przycisk Odczytaj ma spowodować wyświetlenie
się Okna komunikatu którego treścią będzie zmienna.
Tak więc do przycisku Zapamiętaj dodajemy kod:
Dim x
as string
x = txtzmienna ' zapisujemy d x to co jest w TextBox-ie
A do
przycisku Odczytaj:
Dim odp
odp = MsgBox (x)
Uruchom
program. Najpierw naciśnij Zapamiętaj, a potem Odczytaj i co? Wyświetla się
nam pusty komunikat - ale dlaczego. Przeanalizujmy program...
Po naciśnięci Zapamiętaj x to się równa to co jest w textboxie (pamiętaj,
że DIM "podtrzymuje" x tylko do momentu zakończenia procedury
czyli do End Sub na który waśnie natrafia nasz program. Po wciśnięciu
drugiego przycisku x = nic i właśnie dlatego otrzymujemy puste okienko.
No dobra, ale jak zmusić program, aby pamiętał x przez cały czas ?
Do tego służy opcja
global
Stosuje się ją jeszcze przed załadowaniem programu. Czyli w Form_Load ?
Nie. Należy ją załadować jeszcze wcześniej. Ale gdzie ?
Musisz
wiedzieć, że oprócz form są jeszcze moduły - one ładują się najwcześniej.
No ale jak dodać moduł do mojego projektu ?
Z menu wybierz Project - Add Module. Teraz wyskoczy okienko- kliknij
dwukrotnie na Module. Zauważ z prawej strony w okienku projektu, że
oprócz formy widzimy jeszcze dodany przez nas moduł. Wyskoczyło okienko
tekstowe - pewnie je zamknąłeś - a jeśli nie to je zamknij. Po co? Skoro
zamknąłeś to jak teraz przywrócisz to okienko z powrotem ? Do tego posłuży
nam okienko projektu - kliknij dwukrotnie na pozycji Module1 - a okienko wróci.
Teraz dopisz taką linijkę:
Global
x as string
Funkcja
jak widzisz działa identycznie jak DIM, z tą różnicą, że jest "długowieczna".
Ale musimy jeszcze usunąć funkcję Dim x as string z jednego z przycisków -
przecież nie będziemy deklarować zmiennej dwa razy. No to teraz uruchom
program i co? Działa ? Jeśli zrobiłeś wszystko jak pisałem to powinno...
Czy teraz widzisz różnicę pomiędzy DIM a GLOBAL ? Mam nadzieję, że
tak...
Druga
sprawa może następnym razem - było by to jednak za dużo jak na jeden dzień...
Slash
slash83@wp.pl
|