ZAAWANSOWANY KURS VISUAL BASIC BY SLASH

Witam wszystkich ponownie. Jeśli przeszedłeś kurs Visual Basic by SLASH na poziomie podstawowym bez problemów, to czas na bardziej zaawansowane funkcje.

Mam nadzieję, że ten język przypadł Ci do gustu i masz zamiar w nim programować.


Nie będę się dużo rozpisywał – zaczynamy więc:


KURS VISUAL BASIC

POZIOM ZAAWANSOWANY

BY SLASH




Funkcja With


Zamiast pisać:


Label1.Caption = „Tekst”

Label1.Size = 16

Label1.Bold = True

Label1.Underline = False


Możemy napisać:


With Label1

.Caption = „Tekst”

.Size = 16

.Bold = True

.Underline = False

End With



Schowek Windows


Visual Basic potrafi obsługiwać schowek Windows. Możemy na nim wykonać działania:


Składnia:


Zmienna = Clipboard.Mode


Mode:


Clear

Czyści zawartość schowka

GetData

Pobiera ze schowka grafikę

GetText

Pobiera ze schowka tekst

SetData

Kopiuje do schowka grafikę

SetText

Kopiuje do schowka tekst




Zastępowanie błędów i funkcja Goto


Bardzo często w aplikacjach VB będziesz używał funkcję zastępującą błędy. Po co ? Np., gdy w okienko przeznaczone na liczbę wpiszesz jakieś litery – wyskakuje błąd. Czy nie lepiej by było, abyśmy sami zdecydowali o komunikacie błędu. Oto przykład pokazujący zdefiniowany przez nas komunikat o błędzie:


On Error Resume Next ‘Jeśli błąd to go nie wyświetlaj tylko kontynuuj...

Nn = 4 / 0 ‘Przykładowe spowodowanie błędu

If err.number <> 0 then ‘Jeśli są błędy (czyli wynik err.number nie jest równy 0)

Goto line1 ‘ Idź do linii oznaczonej „Line1”

Else ‘W przeciwnym przypadku (czyli jeśli nie ma błędów)

Goto line2 ‘Idź do linii oznaczonej “Line2”

End if ‘Koniec założeń


Line1: ‘Deklaracja linii “Line1”

If err.number = 11 then ‘Jeśli wystąpił błąd 11 (czyli dzielenie przez 0)

X = MsgBox(“Cholero! Nie dzieli się przez 0 !!!”) ‘Odpowiedni komunikat

Exit Sub ‘Zakańczamy procedurę

ElseIf err.number <> 11 then ‘Jeśli inny błąd to

X = MsgBox(“Jakiś inny błąd”) ‘Odpowiedni komunikat

Exit Sub ‘Zakańczamy procedurę

End if ‘Zakańczamy założenia


Line2: ‘Deklaracja linii 2

X = MsgBox(„Bez błędów”) ‘ Jeśli program dotarł tutaj to znaczy że brak błędów




Funkcja InStr


Przeszukuje stringi i zwraca pozycję danej litery np.


String = „XXpXXpXXPXXP”

Szukane = „P”


Wynik = InStr(String, Szukane) ‘Funkcja zwróci 9

Wynik = InStr(4, String, Szukane) ‘Funkcja zaczyna szukać dopiero od 4 znaku, czyli

‘ 4 znak to pierwszy znak i zwróci 6


Wynik = InStr(String, „W”) ‘Funkcja zwróci 0, gdyż dana litera nie występuje w stringu



Funkcja Line


Rysuje linię prostą od punktu (x1, y1) do (x2,y2) w wybranym kolorze:


Line(100,200) – (3000,4552), RGB(200,12,12)




Keyboard, czyli jaki klawisz nacisnąłem ?



Kliknij dwukrotnie na formie, teraz wybierz zdarzenie KeyDown. Oznacza to reakcję na wciśnięcie jakiegoś klawisza. Teraz dodaj kod:


Dim ShiftDown, AltDown, CtrlDown, Txt

ShiftDown = (Shift And vbShiftMask) > 0

AltDown = (Shift And vbAltMask) > 0

CtrlDown = (Shift And vbCtrlMask) > 0

If KeyCode = vbKeyF2 Then ' Jeśli nacisnęliśmy F2 to próbujemy kombinacji.


If ShiftDown And CtrlDown And AltDown Then

Txt = "SHIFT+CTRL+ALT+F2."

ElseIf ShiftDown And AltDown Then

Txt = "SHIFT+ALT+F2."

ElseIf ShiftDown And CtrlDown Then

Txt = "SHIFT+CTRL+F2."

ElseIf CtrlDown And AltDown Then

Txt = "CTRL+ALT+F2."

ElseIf ShiftDown Then

Txt = "SHIFT+F2."

ElseIf CtrlDown Then

Txt = "CTRL+F2."

ElseIf AltDown Then

Txt = "ALT+F2."

ElseIf Shift = 0 Then

Txt = "F2."

End If


MsgBox ("Nacisnąłeś " & Txt)

End If


C ała tablica kodów znajduje się tu – kliknij po prostu dwukrotnie na ikonie:



Keyboard 2 – czyli co wpisałem ?


Nieraz jednak zachodzi potrzeba sprawdzenia czy wpisałem coś dużą litero czy małą. Poprzednia funkcja reaguje tylko na wciśnięcie klawisza – nie sprawdza jednak co wyskakuje nam na ekranie. Owszem – można sprawdzić czy piszemy dużą literą – bo to w końcu wciśnięte dwa klawisze Shift + Litera. A jeśli mamy włączonego Caps Lock-a ? Program wykryje tylko naciśnięcie litery – więc stwierdzi że mała...


Można się z tym dogadać za pomocą funkcji Chr. Funkcję zastosujmy np. do okienka tekstowego. Zmieńmy więc zdarzenie na KeyPress (Czyli naciśnięcie). Pewnie spytasz dlaczego nie KeyDown. KeyDown zwraca tylko wciśnięty klawisz, a KeyPress zwraca kod Ascii wpisanego znaku.

Dodajmy kod:


Dim znak

Znak = Chr(KeyAscii)

MsgBox(„Wpisałeś : ” & znak)



Funkcja Circle:


Rysuje ona okręgi.


Dim CX, CY, Promien

ScaleMode = 3 ‘Tutaj odstęp promieni (5 – sama obręcz)

CX = ScaleWidth / 2 ‘Wyznaczenie współrzędnej x środka formy

CY = ScaleHeight / 2 ‘Wyznaczenie współrzędnej y środka formy

If CX > CY Then

Limit = CY ‘Ustalenie o którą krawędź ma się opierać ostatni promień

Else

Limit = CX
End If

For Promien = 0 to limit

Circle(CX,CY), Promien, RGB(Rnd * 255, RND * 255, RND * 255)

N ext Promien




Operator Like


Przeszukuje stringi w poszukiwaniu znaków (nie pojedyńczego znaku jak to było w przypadku funkcji InStr). Funkcja zwraca True (czyli prawda) lub False.


yCheck = "aBBBa" Like "a*a" ' Zwraca True.

MyCheck = "F" Like "[A-Z]" ' Zwraca True.

MyCheck = "F" Like "[!A-Z]" ' Zwraca False.

MyCheck = "a2a" Like "a#a" ' Zwraca True.

MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Zwraca True.

MyCheck = "BAT123khg" Like "B?T*" ' Zwraca True.

M yCheck = "CAT123khg" Like "B?T*" ' Zwraca False.



Jak rysować na formie za pomocą myszy:


Proces rysowania jest bardziej złożony i składa się z trzech kroków :


  1. Klikamy dwukrotnie na formie i zmieniamy zdarzenie z Load na MousMove. Teraz dodajemy następujący kod:


If Button = vbKeyLButton Then ‘Jeśli wciśnięty lewy klawisz myszy

PSet (X, Y) ‘ Narysuj punkt o współrzędnych myszy (x,y)

End If

Po uruchomieniu aplikacji, zobaczymy, że faktycznie możemy rysować, ale tylko wtedy gdy wolno poruszamy myszką. Dlaczego tak się dzieje ? Otóż procesor nie nadąża z rysowaniem punktów. No więc jak robią to inne programy. Otóż stosują one prostą sztuczkę – rysują prostą między dwoma punktami, za którymi nadążył procesor. Pewnie zauważyłeś w aplikacjach, że zamiast ładnego odręcznego okręgu wychodzi iluśtamkąt.


  1. Tworzymy moduł (Project-Add module) i dopisujemy do niego:


Global ostX, ostY ‘Ostatnie współrzędne



Teraz wracamy do Form1_MousMove i zmieniamy wszystko na:


If Button = vbKeyLButton Then ‘Jeśli wciśnięty lewy klawisz myszki

Line (ostX, ostY)-(X, Y) ‘Rysuj prostą od ostatniego punktu do aktualnego

ostX = X ‘Zapisanie aktualnej pozycji myszy jako ostatniej

ostY = Y ‘ j.w

End If


Po uruchomieniu zauważymy znaczną różnicę – da się rysować płynnie. Jest jednak mały problem, nie da się narysować dwóch krzywych i rysowanie zawsze zaczyna się z lewego górnego rogu. Aby to skorygować:


  1. W zdarzeniu MouseDown dopisujemy:


ostX = X

ostY = Y


I wszystko powinno działać jak trzeba. Do formularza możemy także dodać przycisk który będzie czyścił zawartość ekranu – wystarczy dodać do niego :


CLS


Możemy także pokusić się o zmianę koloru pędzla i jego grubość.

W sekcji Form1_Load dopisz:


DrawWidth = 10 ‘Grubość pędzla

F oreColor = RGB(0, 0, 255) ‘Kolor pędzla (niebieski)




Obiecałem już w kursie podstawowym, że wyjaśnię jak ListBox ma rozpoznawać wybrany element:


Cała funkcja powinna wyglądać tak: (Zakładam, że stworzyłeś ListBox i nie zmieniałeś jego domyślej nazwy – czyli zostało List1


Tworzymy mduł i deklarujemy dwie tablice:


Global tytul(10)

Global opis(10)




W sekcji Form_Load dopisujemy:


Dim i


tytul(1) = "Jeden"

tytul(2) = "Dwa"

tytul(3) = "Trzy"

opis(1) = "Opis do jeden"

opis(2) = "Opis do dwa"

opis(3) = "Opis do trzy"


For i = 1 To 10

If tytul(i) = "" Then Exit For

List1.AddItem tytul(i)

List1.ItemData(List1.NewIndex) = i

Next i



A w procedurze kliknięcia na listBox:


im wynik

wynik = opis(List1.ItemData(List1.ListIndex))

MsgBox (wynik)


I teraz czy lista posortowana, czy też nie program zawsze prawidłowo będzie rozróżniał dane



Teraz zajmiemy się plikami na naszym twardzielu-


Kopiowanie pliku:


FileCopy „C:\plik.dat”,”D:\backupplik.dat”


Przenoszenie i zmiana nazwy:


Aby tylko zmienić nazwę:


Name "C:\ptik.htm" As "C:\index.htm"


Aby przenieść plik:


Name "C:\ptik.htm" As "D:\HTML\ptik.htm"


Aby przenieść i zmienić nazwę:


Name "C:\ptik.htm" As "D:\HTML\PTiK\index.htm"


Aby pobrać wielkość pliku (w bajtach):


Wielkosc = FileLen(„C:\ptik.htm”)



Teraz jedna z ciekawszych funkcji : Stymulowanie naciskaniem klawiszy


Do jakiegoś przycisku dodaj kod:


x = Shell("c:\windows\Calc.exe", 1) ‘Uruchom kalkulator

SendKeys "10{+}50", True ‘Prześlij klawisze 10 + 50, Poczekaj na reakcję

SendKeys "=", True ‘Prześlij klawisz =, poczekaj na reakcję



W ten sposób kalkulator powinien wyświetlić liczbę 60


Po co to True na końcu każdej instrukcji SendKeys ?

Jest to instrukcja dla naszej aplikacji, że ma zaczekać, aż uruchomiony program odpowie.

Np.,gdybyśmy nie napisali True pierwsza linijka została by przesłana, ale zaraz pojawiło by się =. Program mógłby nie zdążyć pobrać całego 10+50 i wyświetlił by nam albo błędną odpowiedź, albo by w ogóle nie zareagował (przy szybkich procesorach). Tak więc zawsze stosuj funkcję TRUE !!!


Więcej o tej funkcji znajdziesz w Helpie.




I to by było na tyle jeśli chodzi o funkcje zaawansowane. Sorki, że obiecałem, że będzie jeszcze o API i Bazach danych. Miało tak być, ale postanowiłem się uczyć innego języka Visual C++ - VB zostawiłem w spokoju.

Ale dla pocieszenia powiem Wam, że jak dojdę do wprawy w VC++ to zaraz wezmę się za pisanie kursu – także tak prostego w zrozumieniu jak VB.

Trzeba patrzeć w przyszłość – wiele osób powie, że VB to bardziej język skryptowy. Jego wadami jest powolność i małe możliwości. Nie chcę Wam wmówić, że niepotrzebnie uczyliście się tego języka – jeśli Wam wystarcza to kontynuujcie naukę – kupcie sobie jakąś dobrą książkę (oczywiście nie dla początkujących). Jeśli jednak nie widzisz przyszłości z tym językiem, to przystąp do nauki C++. Na pewno będzie Ci dużo łatwiej znając już VB. Wiele funkcji jest podobnie zbudowanych w C++. No a znać dwa języki programowania to już coś – tylko najlepsi to potrafią :)))


Kiedy będzie kurs VC++-a , tego jeszcze nie wiem. To zależy od tego jak szybko się go nauczę. Zaglądaj na www.ptik.prv.pl .




Wyszukiwarka

Podobne podstrony:
Kurs Visual Basic dla początkujących, Języki programowania
kurs+visual+basic%27a ZQI63ESWFA6RV2NSDJNG3PDNCTT5FCM7QKZEK5Q
praktyczny kurs visual basic net XPYVI3QBP3MCXRIFJRISPLODUH6ANI5R5DTEUTQ
Kurs Visual Basic
Visual Basic 2005 Express i MySQL [ ZLOTEMYSLI][by www ebookforum pl ]
Visual Basic Dla Aplikacji W Programach Word, Powerpoint I Excel Praktyczny Kurs Z Cwiczeniami
Visual Basic Przykładowe zadania , Studia i nauka, Visual Basic
Lab6, Visual Basic Lab 6a, Visual Basic Lab 3
Leksykon VISUAL BASIC, r00-05, Rozdział X
Visual Basic Zdarzenia , Studia i nauka, Visual Basic
visual basic
02 Wprowadzenie do Visual Basic cwiczenia przygotowujace
Makra programowanie w Visual Basic
Mastering Visual Basic NET Database Programming

więcej podobnych podstron