Visual Basic 6 - Kurs

Embed Size (px)

Citation preview

VISUAL BASIC 6

KURS

autorzy: Krystian . Kamil R. wznowienie kursu: Krystian . wersja z: 05.11.2005

strona gwna kursu: http://visual.basic.kaem.forall.pl/1

SPIS TRECI1. Informacje podstawowe ......................................................................................................... 5 2. rodowisko VB ...................................................................................................................... 5 3. Zmienne.................................................................................................................................. 6 4. Stae........................................................................................................................................ 8 5. Waciwoci formy................................................................................................................. 8 6. Msgbox................................................................................................................................. 11 7. Przyciski ............................................................................................................................... 12 8. Waciwoci obiektw.......................................................................................................... 14 9. Label..................................................................................................................................... 16 10. Pole tekstowe...................................................................................................................... 16 11. CheckBox ........................................................................................................................... 17 12. OptionButton...................................................................................................................... 17 13. Suwaki................................................................................................................................ 18 14. ComboBox ......................................................................................................................... 18 15. Image.................................................................................................................................. 19 16. Shape & Line...................................................................................................................... 19 17. Operacje na stringach ......................................................................................................... 20 18. Funkcje matematyczne....................................................................................................... 22 19. Instrukcje warunkowe ........................................................................................................ 23 20. Ptle.................................................................................................................................... 27 21. Procedury ........................................................................................................................... 29 22. Funkcje ............................................................................................................................... 30 23. Tablice................................................................................................................................ 30 24. Moduy ............................................................................................................................... 32 25. Forma ................................................................................................................................. 33 26. ListBox ............................................................................................................................... 34 27. DriveListBox, DirListBox, FileListBox............................................................................. 36 28. Timer .................................................................................................................................. 37 29. ListView ............................................................................................................................. 37 30. TreeView............................................................................................................................ 43 31. Dostp do plikw ............................................................................................................... 47 32. Operacje na plikach............................................................................................................ 48 33. Operacje na katalogach ...................................................................................................... 49 34. Atrybuty plikw i folderw................................................................................................ 50 35. Spis plikw i katalogw ..................................................................................................... 51 36. Obsuga bdw.................................................................................................................. 53 37. Schowek Windows............................................................................................................. 54 38. Klawisze ............................................................................................................................. 55 39. Shell.................................................................................................................................... 57 40. Rejestr................................................................................................................................. 58 41. Menu................................................................................................................................... 59 42. Pasek statusu ...................................................................................................................... 61 43. Menu graficzne................................................................................................................... 62 44. Czas .................................................................................................................................... 64

2

45. Indeksowanie obiektw...................................................................................................... 66 46. Przeciganie obiektw........................................................................................................ 68 47. Forma rysowanie ............................................................................................................. 69 48. Forma autoredraw ........................................................................................................... 70 49. Forma pisanie .................................................................................................................. 71 50. O API.................................................................................................................................. 72 51. Przeciganie obiektw........................................................................................................ 73 52. Wasny ksztat formularza.................................................................................................. 75 53. GetPixel i SetPixel ............................................................................................................. 76 54. BitBlt i StretchBlt............................................................................................................... 77 55. Operacje na polu tekstowym .............................................................................................. 78 56. Iif ........................................................................................................................................ 79 57. Split i Join........................................................................................................................... 79 58. Type.................................................................................................................................... 80 59. With.................................................................................................................................... 83 60. Zdarzenia............................................................................................................................ 84 61. Input Box............................................................................................................................ 86 62. Menu Podrczne................................................................................................................. 87 63. Option Explicit ................................................................................................................... 89 64. Praktyka Zmienne ........................................................................................................... 89 65. Praktyka Suwaki.............................................................................................................. 91 66. Praktyka - Uywanie kolorw............................................................................................ 92 67. Graficzny pasek postpu .................................................................................................... 93 68. Obsuga bdw + http ....................................................................................................... 94 69. WinSock ............................................................................................................................. 98 70. Poczenie IRC ................................................................................................................... 99 71. Poczenie FTP................................................................................................................. 101 72. FTP, komendy i listowanie............................................................................................... 107 73. FTP, transfer danych ........................................................................................................ 114 74. FTP, listowanie^3............................................................................................................. 116 75. Poczenie HTTP.............................................................................................................. 117 76. Algorytm: NWD............................................................................................................... 119 77. Algorytm: Sortowanie Bbelkowe ................................................................................... 121 78. Przeszukiwanie Binarne ................................................................................................... 123 79. Drukowanie Podstawy................................................................................................... 126 80. Drukowanie - Obrbka tekstu .......................................................................................... 128 81. Drukowanie Grafika...................................................................................................... 135

3

4

1. Informacje podstawowehttp://visual.basic.kaem.forall.pl/Witaj, jeeli zacze to czyta to na pewno jeste zainteresowany(a) programowaniem w rodowisku graficznym (RAD). Zanim wybierzesz jzyk Visual Basic musisz pozna par jego wad i zalet. Zalety : + Szybkie tworzenie aplikacji + Intuicyjne poruszanie si w menu + atwe wykorzystanie bilbliotek DirectX (Mona uzyska nawet 120 FPS) + Proste wykorzystywanie Windows API + Moliwo tworzenia wasnych kontrolek + atwy dostp do rejestru, plikw ini i sieci Wady : - Jest wolniejszy od jezykw C o okoo 8 % (dane ze strony Pmasters) - Nie pozwala tworzy aplikacji dosowych - Nie ma bezporedniego poczenia z Assemblerem

2. rodowisko VBhttp://visual.basic.kaem.forall.pl/Gdy pierwszy raz wczamy program wyskakuje nam okienko z wyborem aplikacji, na razie wybieramy 'Standard EXE' i klikamy otwrz. Teraz widzimy ju gwne okno programu (powinno by takie jak na obrazku (oprcz kolorw oczywicie)) Kolor Czerwony (Tolbox) - Jest to lista obiektw, aby umieci jaki obiekt na formie wystarczy klikn w wybrany obiekt i postawi go w wybranym miejscu (kliknicie + przecignicie). Obiekty moemy dodawa, wystarczy wybra opcje z menu : Project > Components... lub wcisn CTR+T, pokazuje si nam okienko z rnymi obiektami, jeli jaki chcemy to wystarczy go odhaczy i zastosowa zmiany. Kolor Zielony (Form) - W tym okienku widzimy wygld aplikacji, a take kod rdowy, moesz tutaj umieszcza rne obiekty z Tolbox-u Kolor Rowy (Start) - Tym przyciskiem testujemy aplikacje, moemy to take robi wciskajc F5 Kolor Fioletowy (Project Explorer) - Tu widzimy wszystkie formy, moduy itp. Znajduj si tutaj take 2 przyciski, jeden wcza okienko kodu, a drugi okienku wygldu formy Kolor Niebieski (Properties) - Tutaj widzimy rne waciwoci obiektw, moemy je atwo edytowa i zmienia im nazwy Kolor ty (Form Layout) - Okienko w ktrym moemy ustali miejsce otwarcia okienka na ekranie

5

3. Zmiennehttp://visual.basic.kaem.forall.pl/1.Zmienne-co to takiego? Zmienna w fachowym okreleniu jest wydzielona czci pamici, o rozmiarze okrelonym przez jej typ. Oznacza to, e zmienna jest to taki pojemnik, w ktrym przechowujemy dane. Dane te mona odczytywa, zapisywa i zamienia. Jeeli zmiennej przyporzdkujemy jak warto, to w miejscach jej wywoania zostanie zastpiona swoj wartoci. Troch to pogmatwane, ale zaraz wszystko si wyjani. Zmienne wywoujemy poprzez podanie ich nazwy. Oto przykad pozwalajcy to wszystko zrozumie: wiek = 4 ' przyporzadkowujemy zmiennej wiek warto 4 wiek = wiek + 2 ' przyporzdkowujemy zmiennej wiek warto o 2 wiksz od jej poprzedniej - czyli 6 Z matematycznego punktu widzenia ten drugi zapis jest niepoprawny, znak = nie jest znakiem rwnoci tylko znakiem przyporzdkownia. Zmienna wiek przyjmuje warto zmiennej wiek + 2. 2.Typy zmiennych Sama nazwa zmiennej podczas deklaracji nie wystarczy, poniewa program nie bdzie

6

wiedzia ile pamici dla niej zarezerwowa. Visual Basic pozwala zdefiniowa typ zmiennej na jeden z dostpnych poniej. S to standardowe typy zapewnione przez Visual Basic: Typ Boolean Byte Integer Long Currency Single Double Date String Variant Liczba bajtw Zastosowanie 2 1 2 4 8 4 8 8 1bajt/znak 16 True lub false Liczby cakowite od 0 do 255 Liczby cakowite od -32768 do 32767 Liczby cakowite +/-2000000000 Liczby o okrelonej liczbie cyfr po przecinku Liczby dziesitne do 7 cyfr znaczcych Liczby dziesitne do 14 cyfr znaczcych Liczby dziesitne reprezentujce czas i godzin Wartoci tekstowe Wartoci dowolnego typu

3.Zasig zmiennej Zmienn moemy zadeklarowa jako prywatn, czyli widoczn tylko w bloku (wybranej formie/modlue), w ktrym j zadeklarowano , zmenne publiczn, dostpn z kadego miejsca w programie lub zmienne tymczasowe. Aby zadeklarowa zmienn prywatn na samym pocztku musimy napisa Private, jeli jest to zmienna publiczna to Public, dla zmiennej tymczasowej bdzie to Dim Znajc ta wszystkie zasady moemy przystpi do deklaracji. Ma to posta: Private liczba As Integer Public znaki As String Dim tymczasowa As String Zmienne Prywatne i Publicze deklarujemy zaraz przy samej grze kodu, zmienne tymczasowe deklarujemy w prodecurach/funkcjach/zdarzeniach, gdy podczas opuszczenia zdarzenia zmienne tego ulegaj wyadowaniu z pamici. Private Zmienna As Integer Private Sub Form_Load() Dim Zmienna2 As Integer Zmienna2 = 8 Zmienna = 6 + Zmienna2 End Sub Zmienna2 zadeklarowana w zdarzeniu Form_Load zniknie z pamici po wykonaniu zdarzenia, natomiast Zmienna zadeklarowana przez Private "nazewntrz" procedur bdzie stale dostpna dla programu. 4.Prefixy zmiennych. Istnieje jeszcze co takiego, jak prefixy zmiennych. Mona je stosowa dodajc bezporednio do nazw zmiennych zamiast As typ. Oto prefixy:

7

Typ Integer Long Single Double String

Prefix % & ! # $

Currency @

Byte, Boolean, Date, Variant nie posiadaj prefixw Wynikaoby z tego, e zamiast zapisu: Dim kolor_oczu As String moemy napisa: Dim kolor_oczu$ Nie polecam jednak tego sposobu, ze wzgldu na to, e wielu pocztkujcym moe sprawi trudnoci, w odgadywaniu typw, a poza tym kod zostaje wzbogacony o tzw. 'krzaczki'. Mimo tego jest to efektowne i nauczenie si takiego deklarowania zmiennych moe zaoszczdzi znaczne iloci czasu. Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (2)

4. Staehttp://visual.basic.kaem.forall.pl/ Stae, powiedzmy s to specyficzne odmiany zmiennych, ktrych warto moemy okreli tylko raz i to przy deklaracji. W zamian jednak nie musimy deklarowa ich typu. Do deklaracji staych uywamy sowa Const. Dla staych take istnieje moliwo opisu zakresu widocznoci. Np.: Private Const WIEK = 15 Public Const IMI = 'Marcin' Zwyko si pisa zmienne maymi, a stae duymi literami. Poprawia to czytelno kodu.

5. Waciwoci formyhttp://visual.basic.kaem.forall.pl/Appearance Appearance BackColor Okrela, czy forma ma by trjwymiarowa, czy paska Kolor ta formy 0-Flat paska 1- trjwymiarowa

8

BorderStyle

Styl formy (obramowanie)

0- None- brak obramowania, paska tytuu, przyciskw sterujcych. Stosowane w oknach komunikatw.

Caption FillColor FillStyle

Tekst na pasku tytuowym formy Kolor wypenienia formy Styl wypeniania figur na formie 0-Solid- peny 1-Transparent- przezroczysty 2-Horizontal Line- linie poziome 3-Vertical Line- linie poziome 4-Upward Diagonal- linie skone w praw stron 5-Downward Diagonal- linie skone w lew stron 6-Cross- linie pionowe i poziome skrzyowane (poczenie 2 i 3) 7-Diagonal Cross- linie skone z prawej i lewej strony skrzyowane (poczenie 4 i 5) True- niewidoczne False- widoczne

FontTransparent Okrela widoczno ta pod napisami i obrazkami na formie ForeColor Palette Picture Kolor ta pod tekstem i obrazkami Okrela obrazek z kolorami jakie maj by wywietlane Obrazek wywietlany w oknie formy jako to

Behavior AutoRedraw

Odwieanie okna

True- okno jest odwieane False-okno nie jest odwieane

DrawMode DrawStyle DrawWidth Enabled HasDC PaletteMode RightToLeft Visible

Tryb rysowania po formie Styl rysowania po formie Wielko pdzla do rysowania po formie Okrela czy okno mona uaktyni klikajc na True- mona nie False- nie mona Czy forma posiada uchwyt Rodzaj palety Wywietlanie liter wspak Okrela widoczno formy True- wywietlaj wspak False- wywietlaj normalnie True- forma jest widoczna False- forma nie jest widoczna

OLEDropMode Tryb przecigania metod OLE

9

Misc Name ControlBox HelpContextID Icon KeyPreview MaxButton MDIChild MinButton MouseIcon

Okrela nazw kontrolki Wywietlanie przyciskw minimalizuj, maksymalizuj, zamknij Numer identyfikacyjny obiektu przypisany do pliku pomocy Ikona wywietlana na uchwycie okna Okrela, czy forma ma przechwytywa wszystkie znaki z klawiatury Okrela, czy przycisk maksymalizacji ma by dostepny Mwi kompilatorowi, czy forma jest wyswietlana jako okno potomne Okrela dostpno przycisku minimalizuj Okrela plik z ksztatem kursora wywietlanego po najechaniu na okno formy (widoczne, gdy MousePointer jest ustawione na 99) Zmienia ksztat kursora na jeden ze standardowych Windows lub zdefiniowany przez MouseIcon 0-Default- domylny 1-Arrow- strzaka 2-Cross- krzyyk 3-taki jak przy wprowadzaniu tekstu w Wordzie. 4-Icon- ??? 5-Size- jak przy przenoszeniu obiektw 6... 99 - zdefiniowany przez MouseICon True- przechwytuj False- nie przechwytuj True- s widoczne False- nie s dostpne

MousePointer

NegotiateMenus Wywietlanie menu ShowInTaskbar Dostpno na pasku zada Windows Tag WindowState Zbiornik przechowujcy dane Okrela wielko okna po uruchomieniu 0-okno normalnej wiekoci 1-okno zminimalizowane 2-okno zmaksymalizowane

Position Height Left Moveable

Wysoko okna Odlego okna od lewej strony ekranu Mwi, czy mona przemieci okno, przecigajc za pasek tytuowy True- mona False- nie mona

StartUpPosition Okrela pooenie okna, po uruchomieniu programu Top Width Okrela odlego okna od gry ekranu Szeroko okna

10

Scale ScaleHeight Liczba jednostek wysokoci okna (jednostk ustawia ScaleMode) ScaleLeft ScaleMode ScaleTop Liczba jednostek odlegoci od lewej krawdzi okna Ustala aktualn jednostk Liczba jednostek od gry ekranu

ScaleWidth Szeroko okna wyraana jednostkami ustalonymi za pomoc ScaleMode

6. Msgboxhttp://visual.basic.kaem.forall.pl/Msgbox jest funkcj wywietlajc komunikat, jej zastosowanie wyglda tak a = Msgbox("Komunikat",przyciski+ikona,"Tytu") Wywietli to nam okienko o nazwie Tytu i o treci Komunikat Spord przyciskw i ikon moemy wybra : VbCritical - ikona krytyczna VbQuestion - znak zapytania VbExclamation - ty ostrzegawczy trjkt VbInformation - ikona informacji VbSystemModal - maa ikona systemowa VbOKonly - tylko przycisk ok VbOKCancel - przyciski ok. i anuluj VbAbortRetryIgnore - przyciski przerwij, ponw i ignoruj VbYesNoCancel - przyciski tak nie anuluj VbYesNo = przyciski tak nie VbRetryCancel przyciski ponw, anuluj Wymagany jest tylko 1 parametr, czyli tre komunikatu, pozostaych parametrw nie musimy podawa. a = Msgbox("Witaj") Jeeli nie chcemy pniej sprawdzi jak opcje z komunikatu wybra uytkownik lub nie musimy tego robi nie trzeba podawa zmiennej ktra przechowa wynik, mona to zrobi w ten sposb: Msgbox "Witaj" Przykadowy komunikat wyglda by tak : a = Msgbox("Witaj uytkowniku",VbOKonly,"Powitanie") Mona te czy przyciski i ikony znakiem + a = Msgbox("Podoba ci si program",VbYesNo + VbInformation,"Pytanie") Zmienna a przechowuje nam kliknity przycisk, oto ich numery : 1 - ok

11

2 3 4 5 6 7

-

anuluj przerwij ponw ignoruj tak nie

Moemy wic sprawdzi jak uytkownik odpowiedzia na nasze pytanie. Musisz jednak doj do lekcji If.. Then Rnica midzy wywietlaniem funkcji z rezultatem oraz bez jest nastpujca: - gdy chcemy uzyska z funkcji jak warto piszemy: Wartosc = Funkcja("Parametr1","Paramater2",...) - gdy nie potrzebujmy uzyska wartoci: Funkcja "Parametr1","Paramter2",.... Paramtery oddzielamy przecinkami, jeeli chcemy pomin jaki paramter zostawiamy poprostu puste miejsce i piszemy sam przecinek: Funkcja "Paramter1", ,"Paramter3" Funkcja , , ,"Paramter4" Niektre parametry s obowizkowe, niektrych nie musimy podawa, wszystko zaley od funkcji. Visual basic informuje o parametrach ktre nie s wymagane, pokazuje je w nawiasie kwadratowym:

Na obrazku mozna zobaczy e dla funkcji MsgBox tylko 1 parametr jest wymagany, reszta nie jest obowizkowa Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (1)

7. Przyciskihttp://visual.basic.kaem.forall.pl/ Aby umieci przycisk (CommandButton) na formie wystarczy go narysowa w wybranym miejscu. Nastpnie jeli chcemy ustali kod ktry ma si pokaza po klikniciu przycisku klikamy w niego dwukrotnie (w przycisk na formie oczywicie). Pojawi nam si : Private Sub Command1_Click() End Sub Umieszczanie elementw na formie polega na:

12

1. wybraniu elementu (kliknicie go), jeeli nie jestemy pewni czy wybralimy dobry element zatrzymajmy na nim na chwile kursor a pojawi nam si jego nazwa

2. nastpnie zaznaczamy obszar na formie aby okreli rozmiar elementu (niektre elementy nie mog mie dowolnych rozmiarw), robimy to zwyczajnie klikajc myszk i przecigajc ni tworzc wybrany ksztat

3. puszczamy przycisk myszki i na naszej formie pojawia si obiekt o standardowej nazwie (zazwyczaj nazwa elementu + numer)

4. aby przej do standardowego zdarzenia dla obiektu naley go dwukrotnie klikn (czasem niektre dodadkowe waciwoci s dostpne przez kliknicie prawym myszy na obiekt i wybranie Proporties)

Moemy w rodek wpisa dowolne polecenie lub wiele polece, na przykad MsgBox Private Sub Command1_Click() a = Msgbox("Klike mnie",,"Informacja") End Sub Po klikniciu pojawi si komunikat:

13

Najwaniejszymi waciwociami dla przycisku s : Caption - tekst na naszym przycisku Enabled - ustala czy obiekt jest aktywny Picture - obrazek na przycisku ToolTipText - napis pojawiajcy si po najechaniu Font - czcionka napisu na przycisku Sprbujcie poeksperymentowa z innymi waciwociami wiele ich powtarza si z innymi obiektami wic bezsensem byo by ich powtarzanie. Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (1)

8. Waciwoci obiektwhttp://visual.basic.kaem.forall.pl/ Kady obiekt ma swoje rne waciwoci. Moemy je zmienia w okienku Properties. Okienko Properties:

Gwn zalet waciwoci (nie wszystkich) jest to e mona je zmienia w trakcie dziaania programu.

14

Najwaniejsz waciwoci jest Name czyli nazwa naszego obiektu. Umiemy na formie przycisk i zmiemy mu waciwo name na Przycisk. Waciwoci obiektw moemy take zmienia w trakcie dziaania programu robimy to stosujc przypisanie: Nazwaobiektu.Waciwo = co Przykadowo naszemu przyciskowi o Name = Przycisk zmienimy napis tak : Przycisk.Caption = "Nowy napis na przycisku" Dla przykadu umiemy na formie dwa przyciski, niech ich nazwy bd niezmienione (Command1 i Command2). Drugiemu przyciskowi ustawmy waciwo Enabled = Flase i napiszmy taki oto kod : Private Sub Command1_Click() Command2.Enabled = True Command1.Enabled = False End Sub Private Sub Command2_Click() Command1.Enabled = True Command2.Enabled = False End Sub Po klikniciu w przycisk 1 robi si on nieaktywny, a przycisk 2 robi si aktywny. Moemy zmienia waciwoci dla kadego obiektu. Moemy te zmienia waciwoci obiektw znajdujcych si na innej formie : Forma.Obiekt.Waciwo = NowaWaciwo Waciwoci mona wybra z rozwijanej listy (jeli przypadkiem zapomnimy dokadnej nazwy waciwoci)

Lista pojawia si w momencie wpisania kropki. Standardowe waciwoci : Left - pooenie obiektu z lewej strony Top - pooenie obiektu od gry Width - szeroko obiektu Height - wysoko obiektu Enabled - jeli True to obiekt jest aktywny Aligment - wyrwnanie Visible - jeli True to obiekt jest widoczny Visual Basic okrela pooenie obietkw i ich rozmiary w Twipsach, a nie Pikselach. Moemy to zmieni we waciwociach formy ScaleMode. Moemy te nauczy si przelicza piksele na twpisy i odwrotnie.

15

Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (1)

9. Labelhttp://visual.basic.kaem.forall.pl/Label jest kontrolk wywietlajc tekst. Waniejsze waciwoci : Caption - wywietlany tekst BackStyle - to (0 - przeroczyste, 1 - normalne) Font - rodzaj i wielko czcionki Alignment - pozycja tekstu (0 - do lewej, 1 - do prawej, 2 - tekst wyrodkowany)

10. Pole tekstowehttp://visual.basic.kaem.forall.pl/Pole tekstowe (TextBox) to pole ktre pozwala wpisywa uytkownikowi tekst.

Waniejsze waciwoci : Text - przechowyje wpisany tekst MultiLine - jeeli true to jest to pole wielowierszowe PasswordChar - moemy tu okreli znak maskowania. nie wida wtedy wpisanego tekstu tylko nasz znak Przykad : Na fomie umieszczamy przycisk (Command1) i pole tekstowe (Text1). Obok pola ustawiamy label o treci wpisz swoje imie. Teraz klikamy dwa razy na przycisk i piszemy : Private Sub Command1_Click() MsgBox "witaj " & Text1.Text End Sub Gdy ustawimy MultiLine = True przydao by te doda suwaki, suy do tego parametr Scrollbars, ustawiamy go na warto 1/2/3 (suwak poziomy/suwak pionowy/oba suwaki).

16

Aby samemu przej do nowej lini w polu tekstowym naley uy kombinacji znakw Chr(13) i Chr(10) Text1.Text = "Pierwsza linia" & Chr(13) & chr(10) & "Druga linia" Kombinacja tych znakw jest przypisana do staej vbCrLf, uywanie tego jest szybsze: Text1.Text = "Pierwsza linia" & vbCrLf & "Druga linia" & vbCrLf & "Trzecia linia"

11. CheckBoxhttp://visual.basic.kaem.forall.pl/ Checkbox jest polem do zaznaczania (zachaczania), najczciej uywany do wyboru opcji przez uytkownika Waniejsze waciwoci : Caption - tekst przy kwadracie Value - zaznaczenie: 0 - brak zaznaczenia 1 - zaznaczony 2 - zaznaczony i niekatywny

12. OptionButtonhttp://visual.basic.kaem.forall.pl/ Option jest elementem prawie identycznym do ChceckBox, rnic jest tylko to, e umieszczajc wiele obiektw OptionButton tylko jeden moe by zaznaczony.

17

Jeeli chcemy na jednej formie ustawi wicej ni jeden "supek" OptionButton-w tak aby dao si wybra jeden element z pierwszego supka i jeden z drugiego, musimy uoy OptionButtony w osobnych warstwach (np. w PictureBoxie lub Frame)

13. Suwakihttp://visual.basic.kaem.forall.pl/ Waniejsze waciwoci : Min - najmniejsza warto suwaka Max - najwiksza warto SmallChange - o ile miejsc ma by przesunity suwak po klikniciu w strzake LargeChange - o ile miejsc ma by przesunity suwak przy duej zmianie Value - przechowuje aktualn warto suwaka pomidzy Min a Max Przykad : Ustaw na formie suwak (przypisz mu name na Suwak) i label. Ustaw suwakowi : Min = 0 Max = 100 SmallChange = 1 LargeChange = 5 Kliknij dwukrotnie na suwak i wpisz : Label1.Caption = Suwak.Value Dziki temu Label1 bdzie na bieco wywietla warto suwaka. Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (1)

14. ComboBoxhttp://visual.basic.kaem.forall.pl/ ComboBox to rozwijana lista, waciwie pole tekstowe do ktrego moemy i pisa i wybra co z listy. Waniejsze waciwoci : Text - tekst przy comboboxie List - lista elementw do wyboru, moemy je dopisywa we waciwociach lub uywajc

18

polecenia AddItem (Combo1.AddItem "tekst"), wicej o AddItem poczytasz przy ListBox Style - moemy ustawi je na 0 (standardowa), 1 czyli sam tekst i 2 czyli element musi by wybrany Elementy : Ilo elementw jest przechowywana w parametrze ListCount, chc przypisa do jakiej zmiennej ilo elementw wystarczy napisa: Ile = Combo1.ListCount Wybrany element wywoujemy poprzez polecenie Combo1.List(NumerElementu), elementy liczone s od 0: Element2 = Combo1.List(1) Jeeli chcemy si dowiedzie jaki element zosta wybrany przez uytkownika wystarczy uy zmiennej przechowujcej numer zaznaczonego elementu, czyli ListIndex. Chcc wywoa zaznaczony element naley wic napisa: Zaznaczony = Combo1.List(Combo1.ListIndex)

15. Imagehttp://visual.basic.kaem.forall.pl/ Image to zwyczajne pole obrazka, klikajc na waciwo Picture moemy wybra dowolny obrazek. Obrazki moemy te zmienia w trakcie dziaania programu : Image1.Picture = LoadPicture("plik.obrazka.bmp") Moemy take adowa do obrazka Image1 obrazek z innego pola Obrazka Image1.Picture = Image2.Picture Obrazki zapisujemy przez procedure 'SavePicture Obrazek,cieka', niestety format zapisywania tak metod to .bmp SavePicture Image1.Picture, "C:/obrazek.bmp"

16. Shape & Linehttp://visual.basic.kaem.forall.pl/ Shape pozwala nam rysowa figury geometryczne, z waciwoci Shape moemy wybra rodzaj figury, s to : 0 1 2 3 4 5 prostokt kwadrat elipsa koo prostokt o zaokrglonych bokach kwadrat o zaokrglonych bokach

19

Line rysuje prost linie

17. Operacje na stringachhttp://visual.basic.kaem.forall.pl/ LCase Funkcja zamienia wszystkie due litery w tekcie na mae tekst = "TeKst z duymI lIteRAmi" tekst = LCase(tekst) tekst po obrbce bdzie wyglda : "tekst z duymi literami" UCase Ta funkcja za zamienia mae litery na due tekst = "Jaki napis" tekst = UCase(tekst) Teraz nasz tekst to "JAKI NAPIS" Left Funkcja wycina wybran ilo liter od lewej strony wybranego napisu tekst = "Testowy wpis" tekst = Left(tekst,4) Da nam : "Test" Right Funkcja dziaa tak samo jak powysza tyle e wycina znaki od prawej strony tekst = "Nasz napis" tekst = Right(tekst,3) Da nam "pis" Mid To ju bardzo zaawansowana funkcja wycinajca tekst, struktura : Mid(tekst,start,ile). Funkcja wycina tekst ze zmiennej tekst, zaczynajc od miejsca start tyle znakw ile zadeklarujemy w ile. tekst = "Styl nad style" tekst = Mid(tekst,3,6) Znak startowy to y i wycina sze znakw czyli zwrci nam "yl nad" Chr Zastanawialicie si jak wywietli na komunikacie Msgbox tekst w postaci : "Witaj ! W moim nowym programie" Do tego posuy nam funkcja Chr, wywietla ona znaki z tablicy ASCII (jest to tablica zawierajca znaki klawiatury, kady z tych znakw ma swj numer). a = Msgbox(chr(34) & "Witaj ! W moim nowym programie" & chr(34)) chr(34) zwrci nam znak " ktrego normalnie nie moglibymy wywietli Asc Asc zwraca nam numer klawisza a = Msgbox(Asc(".")) Powinien si wywietli komunikat 46, gdy jest to numer kropki z tablicy ascii Trim Usuwa boczne spacje z napisu : napis = Trim(" Tekst ")

20

Otrzymamy "Tekst" Gdy chcemy uci spacje tylko z lewej lub prawej strony uywamy odpowiednio LTrim lub RTrim Replace Kolejna wana funkcja, uycie jej wyglda nastpujco : tekst = Replace(tekst,szukane,naco), zamienia to wszystkie szukane sowa no sowo naco, przykad : tekst = "To jest testowy tekst" tekst = Replace(tekst,"jest","mia by") Teraz nasz tekst wyglda tak : "To mia by testowy tekst". Zamienilimy napis "jest" na "mia by". Len Zwraca nam ilo znakw w tekcie tekst = "Visual" ile = Len(tekst) Zwrci nam liczb 6 bo napis Visual ma 6 znakw InStr Dziki temu moemy dowiedzie si gdzie w danym tekcie ley dana litera/cig znakw, wyglda to tak : InStr(start,tekst,litera). Start to miejsce od ktrej litery chcemy szuka. Przykad : tekst = "koc" pozycja = InStr(1,tekst,"c") Zwrci nam pozycje litery czyli 3. Gdy chcemy znale kolejne c to musieli bymy napisa InStr(4,tekst,"c"), tyle e w wyrazie nie ma drugiego c i funkcja zwrci nam 0. Val Val zamienia tekst na liczb (tylko do rozmiaru Long) Dim Tekst As String Dim Liczba As Long Tekst = "-2390938" Liczba = Val(Tekst) Like Jest to dosy trudne polecenie, sprawdza ono poprawno znakw, zacznijmy od 1 litery: litera = "C" pop = litera Like "C" C to C wic warto true pop = litera Like "[A-Z]" Sprawdza czy C jest w przedziale od A do Z, jest czyli te true pop = litera Like "[0-9]" Sprawdza czy C jest cyfr, nie jest czyli pop przyjmie warto false pop = litera Like "#" Sprawdza czy C jest znakiem, czyli True Przedziay sprawdzania mog by dowolne np. [d-k], [4-9]. Teraz zajmijmy si wyrazami: wyraz = "Test" pop = wyraz Like "T*" Da nam True, poniewa pierwszy znak to T i wystpuje po nim dowolna ilo znakw (*)

21

pop = wyraz Like "T" Teraz otrzymamy False, gdy aby byo True musiaa by by tylko 1 litera pop = wyraz Like "T*t" True, gdy pierwsze K, potem dowolna ilo znakw i na kocu t pop = wyraz Like "K#S" False, # rni si od * tym, e jest dla jednego znaku, tak wic wyraz musiaby by trzyliterowy pop = wyraz Like "[A-Z][a-z][a-z][a-z]" True, pierwsza litera dua od A do Z, potem maa, maa, maa pop = wyraz Like "*[m-t]t" Take True, bo na pocztku x znakw, potem sprawdza czy s jest w przedziale od m do t i na kocu t. Dziki tej funkcji moemy sprawdzi poprawno wypenienia pl przez uytkownika, sprawdzajc np. czy uytkownik poda prawidowo kod pocztowy powinnimy uy czyok = Text1.Text Like "[0-9][0-9]-[0-9][0-9][0-9]"

18. Funkcje matematycznehttp://visual.basic.kaem.forall.pl/ Jest kilka funkcji oferowanych przez Visual Basic do operacji na liczbach. Kada z nich zwraca jak warto i jej wywoanie ma posta: Zmienna = funkcja(parametr) Oto one: Int(liczba) Abs(liczba) Sgn(liczba) Fix(liczba) Sqr(liczba) Log(liczba) Exp(liczba) Sin(kt) Cos(kt) Rnd

Zwraca cz cakowit liczby dziesitnej Zwraca warto bezwzgldna z liczby Daje w wyniku 1 dla liczby dodatniej, -1 dla ujemnej, 0 dla 0 Zwraca cz cakowit Zwraca pierwiastek kwadratowy Zwraca logarytm naturalny z liczby Zwraca liczb e podniesion da potgi liczba Zwraca sinus kta w radianach Zwraca cosinus kta w radianach Zwraca liczb losow z przedziau 0 do 1

Round(liczba,mpp) Zaokrgla nasz liczb, mpp to ilo miejsc po przecinku Przykadowe wywoanie funkcji : a = Sin(90) Od teraz nasza zmienna a to warto sinusa z kta 90 stopni. Wypadao by napisa o Rnd co wicej. Rnd zwraca losow liczb z przedziau od 0 do 1 w postaci uamkowej do dalekiego miejsca po przecinku (np. 0.7612347912379). Chcc wic wylosowa liczbe w przedziale od 0 do 100 moemy napisa :

22

liczba = Rnd * 100 Aby efekt losowania by wikszy moemy uy funkcji losowania i zaokrglania. Randomize liczba = Round(Rnd * 100) Gdybymy nie uyli Randomize to program losowaby zawsze te same liczby z kolei. Przykadowo po pierwszym wczeniu : 40,15,78,12,26, po drugim : 40,15,78,12,26 itd.. Randomize po prostu temu zapobiega. Aby wylosowa liczb z wybranego przedziau liczbowego naley poprostu zastosowa wzr: liczba = Round(Rnd * (Maks - Min) + Min) Wylosowanie liczby z przedziau od 70 do 100: liczba = Round(Rnd * (100-70) + 70) Albo prociej wykonujc odrazu odejmowanie i opuszczajc nawias: liczba = Round(Rnd * 30 + 70)

19. Instrukcje warunkowehttp://visual.basic.kaem.forall.pl/ Instrukcje warunkowe su do sterowania prac programu. Jest kilka typw warunkw. Oto pierwszy z nich: 1.Znaki porwniania: = rwno > < wiksze ni mniejsze ni

>= wiksze lub rwne 15) Then b = 15 Else b = 14 EndIf Warunek nie musi si skada tylko z jednego czonu. Mona je czy operatorami logicznymi, np: If ((Wiek > 15) AND (Imie = "Jan")) Then b=2 Else b=1 End If Inn moliwoci oferowan przez instrukcj If jest jej zagniedenie. Ma to posta: If (wiek > 15) Then b = 15 Else If (imie "George") Then c=1 Else c=0 EndIf b = 14 EndIf Przykad : Ustawmy na formie pole tekstowe (Text1, warto Text = 0) i jeden przycisk (Command1), moemy te da label z napisem wpisz w pole swj wiek Po klikniciu w przycisk piszemy If (Text1.Text < 20) Then Msgbox("Jeste jeszcze mody") End If If (Text1.Text > 19) And (Text1.Text < 50) Then Msgbox("Jeste w rednim wieku") End If If (Text1.Text > 49) Then Msgbox("Modziecze lata masz ju za sob") End If Mona te to uproci (skrci) If (Text1.Text < 20) Then Msgbox("Jeste jeszcze mody") If (Text1.Text > 19) And (Text1.Text < 50) Then Msgbox("Jeste w rednim wieku")

24

If (Text1.Text > 49) Then Msgbox("Modziecze lata masz ju za sob") Napisanie tego powyszymi dwoma sposobami niejest zbyt poprawne, program najpierw sprawdzi jeden warunek i jeeli si zgadza to wywietli komunikat, potem drugi warunek i trzeci. To a 3 sprawdzenia za kadym razem. Prociej mona to napisa na opisanym troch dalej Case lub stosujc ElseIf (Inaczej Jeeli) If Text1.Text < 20 Then ' 1 MsgBox ("Jeste jeszcze mody") ' 2 ElseIf Text1.Text > 19 And Text1.Text < 50 Then ' 3 MsgBox ("jeste w rednim wieku") ' 4 Else ' 5 MsgBox ("Modziecze lata masz ju za sob") ' 6 End If 1. 2. 3. 4. 5. 6. jeeli Text1.Text jest mniejszy od 20 to wywietl komunikat inaczej jeeli Text1.Text jest wikszy ni 19 i mniejszy ni 50 to wywietl komunikat jeszcze w innym przypadku wywietl komunikat

ElseIf mona oczywicie uywa obojtn ilo razy Teraz gdy zgodzi si jaki z warunkw program nie sprawdza ju kolejnych tylko opuszcza cae If 3. Operatory logiczne Gwnymi operatorami ktrych si uywa s: AND - I OR - lub NOT - Nieprawda (zaprzeczenie) XOR - (tylko jeden warunek ma si zgadza) If A = 6 AND B = 7 Then - warunek jest speniony jeeli A = 6 i B = 7 If A = 6 OR B = 7 Then - warunek jest speniony jeeli A = 6 lub B = 7 lub A = 6 i B = 7 If A = 6 XOR B = 7 Then - warunek jest speniony jeeli A = 6 i B nie jest rwne 7 lub gdy B = 7 i A nie jest rwne 6 If NOT A = 6 Then - warunek jest speniony gdy A nie jest rwne 6 (NOT dodajemy zawsze na pocztku warunkw) czc operatory logiczne mona otrzyma ciekawe zestawienia, np: If NOT A = 6 XOR B = 7 Then - ten warunek jest speniony tylko wtedy gdy A = 6 i B = 7 lub wtedy gdy A 6 i B 7, gdy jeden warunek si zgadza (albo A, albo B) to warunek nie jest speniony.

25

4.Case Instrukcja Case suy do szybkiego sprawdzania jednej wartoci z wieloma dostpnymi. Oczywici moliwe jest stosowanie drabinki If...Else....If..... ale niepotrzebnie to komplikuje program. Posta Case jest nastpujca: Select Case wyraenie Case test1 Instrukcje1 Case test2 Instrukcje2 ............... Case Else Instrukcjen End Select W kadym Case nastpuje sprawdzenie warunku. Jeli wynikiem jest True, to nastpuje wykonanie instrukcji pod tym wyraeniem. Jeli warunek zwraca False (jest nieprawdziwy) to program przechodzi do sprawdzenia nastpnego bez wykonywania instrukcji. Jeli wszystkie sprawdzenia bd nieprawdziwe, to zostanie wykonana instrukcja po Case Else. Czon ten jest jednak nie obowizkowy i nie musi by stosowany. I oczywicie may przykadzik: Select Case wiek Case 7 a=1 Exit Case sqr(11) a=2 Exit Case 2 To 10 a=3 Exit Case "A" To "Z" a=4 Exit Case "15" a=5 Exit Case wiek > 6 a=6 Exit Case Else a=7 End Select Wyraeniem testowym moe by: liczba lub wyraenie liczbowe (np.: 7, sqr(10)) cigiem znakw lub wyraeniem (np.: "Tak", nazwa) przedziaem wartoci (np.: 2 To 6, "A" To "Z") porwnaniem (np.:ls > 6, ls < "M") Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (1)

26

20. Ptlehttp://visual.basic.kaem.forall.pl/ 1.Ptle Ptle pozwalaj nam unikn niepotrzebnych powtrze kodu, przez co program staje si mniejszy, bardziej zwizy i czsto szybszy. Jest kilka rodzaji ptli. Aby zrozumie ich dziaanie, naley wczeniej zapoznac si z warunkami. Przedstawi je po kolei wszystkie i krtko opisz: 2.Ptla For Pierwsz ptl, ktr poznamy jest for. Jest ona najprostsza w dziaaniu i wymaga jednej zmiennej. Jej skadnia jest nastpujca: For zmienna = pocz To kon Step krok Instrukcje Next zmienna Po sowie For nastpuje przyporzdkowanie pocztkowej wartoci zmiennej wczeniej zadeklarowanej. Ptla od tej wanie wartoci rozpocznie dziaanie. Kon oznacza warto zmiennej przy ktrej ptla zakoczy powtarzanie. Step okrela o ile zmienna bdzie zmienia swoj warto po kadym wywoaniu zawartych w niej instrukcji. Jeli nie ma tego parametru standardowo przyjmowana jest warto 1. Wyraenie Next zmienna zmienia warto zmiennej o t podan w Step i pokazuje programowi gdzie kocz si instrukcje do powtrzenia. May przykad: Dim koniec As Byte Dim i As Byte For i = 0 To 9 Step 1 MsgBox i Next i Spowoduje to 10-krotne wywietlenie okienka z wartoci i (od 0 do 9) 3.Do Ptli Do jest pi. S jej rne odmiany, rnice si na pierwszy rzut oka niewiele od siebie. Ich moliwoci te s podobne i znajomo nawet jednej z nich moe zastpi pozostae pi, ale warto si zaprzyjani z nimi wszystkimi. a) Pierwsza z nich ma posta: Do While (warunek) Instrukcje Loop Instrukcje s powtarzane tak dugo, jak warunek jest prawdziwy. Jeli nie jest speniony na pocztku, to ptla nie jest wykonywana ani razu. b) Druga to: Do Instrukcje Loop While (warunek)

27

Ptla jest wykonywana do momentu, gdy warunek jest faszywy. Zawsze jest wykonywana przynajmniej jeden raz. c) Trzecia: Do Until (warunek) Instrukcje Loop Ptla jest wykonywana do czasu spenienia warunku. Jeli warunek jest prawdziwy przy pierwszym wywoaniu, to ptla nie jest wykonywana ani razu. d) Czwarta: Do Instrukcje Loop Until Instrukcje s wywoywane do momentu spenienia warunku. Zawsze jest wykonywana przynajmniej jeden raz. e) Pita, ostatnia: Do Instrukcje Loop Jest wykonywana do czasu natrafienia na instrukcj Exit lub nacinicia klawiszy CTRL+BREAK. Przykad (ja zawsze stosuje tylko For i Do While (t wanie opisze)) : a=0 Do While (a < 20) a=a+1 Msgbox("Ptla dziaa " & a & " raz") Loop 1 2 3 4 5 linijka linijka linijka linijka linijka a przyjmuje warto 0 powtarzaj zawsze gdy a jest mniejsze od 20 zwiksz a o 1 wywietl komunikat o numerze powtrzenia koniec deklaracji ptli

Ptla za kadym razem zwiksza warto a o 1 gdy a jest mniejsze od 20 to ptla si powtarza, gdy natomiast a ju nie jest mniejsze od 20 to ptla koczy swoj dziaalno. Funkcja liczca silnie za pomoc ptli: Private Function Silnia(Ile As Byte) Dim Start As Byte Dim Wartosc As Double Wartosc = 1 Start = 1 Do While Start < Ile Start = Start + 1

28

Wartosc = Wartosc * Start Loop Silnia = Wartosc End Function Tak wic wywoanie funkcji Wartosc = Silnia(8) zwrci nam warto 40320 (bo 1*2*3*4*5*6*7*8 = 40320, kade mnoenie oprcz pierwszego dokonuje si za kadym razem gdy ptla si powtarza)). Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (1)

21. Proceduryhttp://visual.basic.kaem.forall.pl/ Procedura jest to obszar kodu programu odpowiedzialny za wykonanie okrelonych zada. Standardowo w VB procedury wygldaj tak : Private Sub Command1_Click() End Sub Commadn1_Click to nazwa procedury, potem jest miejsce na jej polecenia i End Sub jako jej zakoczenie. Procedury mog mie te swoje zmienne : Private Sub Command1_Click(Index As Integer) End Sub Istnieje take moliwo tworzenia wasnych procedur z wasnymi parametrami : Private Sub Komunikat(Tekst As String) MsgBox Tekst End Sub Teraz nasz procedure wywoujemy tak : Komunikat "Testowy komunikat" Nasze procedury mog by publiczne (dla caego projektu programu) i prywatne (tylko dla tego form co je deklarujemy) Private Sub Komunikat(Tekst As String) MsgBox Tekst End Sub Prywatna procedura tylko dla naszego form Public Sub Komunikat(Tekst As String) MsgBox Tekst End Sub

29

Procedura publiczna dla wszystkich form

22. Funkcjehttp://visual.basic.kaem.forall.pl/ Funkcje tym rni si od procedur e pozwalaj zwrci rezultat. Deklaracja przykadowej funkcji wyglda nastpujco: Private Function Funkcja(Parametry) As Typ End Function W parametrach okrelamy zmienne razem z ich typami, jako Typ kocowy okrelamy zmiennej jaka zostanie zwrcona przez funkcje. Przykad pokae jak zrobi funkcje dodajc dwie liczby: Private Function Dodaj(Liczba1 As Integer, Liczba2 As Integer) As Integer Dodaj = Liczba1 + Liczba2 End Function Nastpnie funkcje wywouje si w taki prosty sposb: Wynik = Dodaj(16,4) Funkcja zwrci nam liczb 20, mona atwo zauway e zmienn w funkcji ktra ma okrela wynik jest jej nazwa, tak wic jeli w funkcji o nazwie Napraw chcemy poda wynik powinno to wyglda tak Function Napraw(Co As String) As String Napraw = Tocomazwrcifunkcja End Function Oczywicie mona zwaraca zmienne w postaci tablicy, dziki temu mona zwrci kilka zmiennych. Przykad funkcji liczcej redni trzech liczb: Function Srednia(Li1 As Long, Li2 As Long, Li3 As Long) As Long Dim Razem As Long Wynik = Li1 + li2 + Li3 Srednia = Wynik / 3 End Function

23. Tablicehttp://visual.basic.kaem.forall.pl/ 1.Co to jest tablica? Tablica fachowo jest to wydzielona cz pamici, ktrej wielko okrela typ tej tablicy oraz iloci elementw. Wyobramy sobie, e chcemy zadeklarowa kilka zmiennych, ktre bd zawiera imiona osb. Bd one tego samego typu i zawarto te bdzie podobna. Zamiast deklarowa kad zmienn z osobna, moemy zadeklarowa tablice o elementach rnicych si tylko indeksem.

30

2.Deklarowanie tablic Tablice deklarujemy tak jak normalne zmienne, ale do jej nazwy dodajemy liczb elementw umieszczon w nawiasie. Elementy liczone s od zera, chyba e pokaemy Visualowi od ktrej liczby naley zacz numeracj. Tabele take obejmuje definiowanie jej typw oraz zakres widocznoci. Przykad: Dim Tablica(11) As Integer deklaruje tablice 12 elementw o indeksach od 0 do 11. Jeli wczeniej napiszemy Option Base 2 to tablica bdzie zawieraa 10 elementw o indeksach od 2 do 11. Innym sposobem jest wpisanie w nawias zakresu tablicy: Dim Tablica(1982 To 2002) As Integer Bdzie to tablica o indeksach liczonych od 1982 do 2001. Odwoanie do tablicy jest takie same jak dla normalnej zmiennej. 3.Uywanie tablic Zadeklarujmy tablice z 5 elementami Dim Tablica(4) As Integer Teraz przypiszemy kademu elementowi z tablicy jak liczbe : Tablica(0) Tablica(1) Tablica(2) Tablica(3) Tablica(4) = = = = = 6 4 3 9 1

Chccy wywoa wybrany element z tablicy piszemy : Msgbox(Tablica(2)) Dostaniemy komunikat "3" 4.Co to jest macierz? W najprostszym tumaczeniu macierz jest to wielowymiarowa tablice. Tablica jest jednowymiarowa, "paska". Okrelamy w niej tylko szeroko: Macierz dwuwymiarowy ma natomiast okrelon wysoko i szeroko: 5.Deklaracja macierzy Jest bardzo podobna do deklaracji tablicy. W nawiasie podajemy liczb elementw poszczeglnych wymiarw: Dim Macierz (1 To 10, 25 To 28) I sposb odwoania si to:

31

A = Macierz (5,26) 6.Tablice dynamiczne Opisane tu zagadnienia dotycz te macierzy. Wyobramy sobie, e bdzie nam potrzebna tablica, ale jeszcze nie wiemy jakiego rozmiaru (liczby elementw). Moliwe jest wtedy jej zadeklarowanie bez podawania rozmiaru: Dim Tablica() As Integer Teraz aby ustawi rozmiar dla tablicy uywamy polecenia ReDim: ReDim Tablica(20) Rozmiar moemy zmienia w dowolnym momecie Dim Tablica() As String ReDim Tablica(20) ReDim Tablica(50) ReDim Tablica(2) Pod koniec tablica bdzie miaa 3 elementy (0,1,2) Kada zmiana rozmiaru tablicy kasuje wszystkie wartoci jakie tablica zawieraa. Aby zachowa wartoci naley dodatkowo uy parametru Preserve: ReDim Preserve Tablica(2)

24. Moduyhttp://visual.basic.kaem.forall.pl Moduy pozwalaj na tworzenie procedur/funkcji oraz deklarowanie zmiennych ktre bd mogy sta si dostpne dla caego projektu (rnych okien formularzy) oraz oczywicie dla samego moduu. Modu do projektu dodajemy przez polecenie 'Project > Add Module', po dodaniu moduu jest on dostpny w menu projektu:

Aby wybrana procedura/funkcja/zmienna zadeklarowana w module bya dostpna dla caego projektu wystarczy zadeklarowa j jako Public: Public Function Dodaj(A As Integer, B As Integer) As Integer Dodaj = A + B End Function

32

Od tej pory w kadym naszym Formie lub module module moemy korzysta z wybranej funkcji. Mona jeli si chce deklarowa wybrane elementy jako Public w formach, one take bd dostpne dla caego projektu, jednak nie jest to moliwe dla wszystkich elemenentw (np. w Formie nie da si zapisa funkcji BitBlt jako Public, co wic jeli chcielibymy jej uywa w innym formie ? Musielbymy j deklarowa jeszcze raz, takie rozwizanie jest mao efektywne). Co jeszcze daj nam moduy(mona ich doda dowoln ilo) ? Przedewszyskim moliwo napisania bardziej przejrzystego kodu. Mona wic stworzy sobie 3 moduy, jeden nazwa 'Funkcje Graficzne', drugi 'Funkcje Matematyczne', trzeci 'Inne'. A nastpnie w kadym module wpisa odpowiednie funkcje. W ten sposb nie bd one zamiecay gwnych Form naszego projektu, ktry bdzie od tej pory bardzo czytelny dla innych i przedewszystkim dla nas samych. Tworzenie funkcji/procedur/zmiennych dla moduw jako Private ma sens tylko wtedy, gdy wybrane zmienne/funkcje/procedury nie wychodz poza obrb moduu czyli s uywane tylko przez modu, przykad: Private Function Dodaj(A As Integer, B As Integer) As Integer Dodaj = A + B End Function Public Function Dodaj4(A As Integer, B As Integer, C As Integer, D As Integer) As Integer Dodaj4 = Dodaj(A, B) + Dodaj(C, D) End Function Funkcja Dodaj jest dostpna tylko dla wybranego moduu, natomiast Funkcja Dodaj4 jest publiczna czyli dostpna dla wszystkich form i moduw.

25. Formahttp://visual.basic.kaem.forall.pl/ Co to za program ktry ma tylko jedno okienko ? Teraz nauczymy si dodawa okienka i midzy nimi zarzdza. Okienko dodajemy z opcji Project => Add Form. Teraz nasze nowe okienko ma nazwe Form2, moemy to oczywicie zmieni, ale na razie zostawimy Form2. Teraz procedury formw : Load Co - aduje nam form do pamiciu Co.Show - pokazuje zaadowane form Ustawmy na form1 przyciski i wpiszmy mu po klikniciu : Private Sub Command1_Click() Load Form2 Form2.Show End Sub Po uruchomieniu programu i klikniciu przycisku pojawi si drugie okienko. Co.Hide - ukrywa forme

33

Unload Co - wycza forme

26. ListBoxhttp://visual.basic.kaem.forall.pl/ Obiekt ListBox jest elementem przechowujcym dane tekstowe w postaci listy, z moliwoci ich sortowania i ukadania. Waciwoci jakie tu dochodz to : MultiSelect: 0 - brak zaznaczenia wielu elementw 1 - zaznaczenie wielu elementw przez kliknicie 2 - zaznaczenie wielu elementw przez przeciganie Sorted: True - lista jest automatycznie sortowana False - lista nie jest segregowana Style: 1 - jest to standardowy rodzaj listy 2 - rodzaj listy z polami checkbox Aby doda jaki element do naszej listy uywamy polecenia : List1.AddItem "dodawany tekst" Moemy take wybra miejsce w ktrym ma si doda nasz tekst. List1.AddItem "napis",0 Zero to tutaj miejsce (linijka) w ktrej ma by dodany nasz tekst. Obiekty z naszej listy usuwamy poleceniem : List1.RemoveItem 0 Usuwa to wybran linie z listy, oczywicie 1 linia ma warto 0, druga to 1 itd.. Jeeli chcemy usun nie istniejc linie program wyzuci bd. Tak samo stanie si jeli chcemy doda element w zbyt dalekie miejsce. Mona temu zapobiec stosujc zmienn przechowujc ilo elementw w licie. If List1.ListCount > -1 Then List1.RemoveItem 0 End If List1.ListCount to wanie ilo naszych elementw. Ca list moemy wyczyci poleceniem : List1.Clear Teraz czas na przechwytywanie zaznaczonego elementu. Jest to banalne, pomy na form Label i Liste, dodajmy do listy z 4 elementy, kliknijmy na ni dwukrotnie i napiszmy : Private Sub List1_Click()

34

Label1.Caption = List1.Text End Sub List1.Text przechowuje tre zaznaczonego elementu. Kolejn rzecz jest zmienna przechowujca ktry element zosta zaznaczony. Private Sub List1_Click() Label1.Caption = List1.ListIndex End Sub Jeeli aden element listy nie jest zaznaczony to List1.ListIndex przechowuje warto -1. Moemy take sami (bez zaznaczenia przez uytkownika) wywoa tekst wybranego elementu. List1.List(0) Wywietli nam tekst pierwszego elementu. Dla lepszego zrozumienia may przykadzik : Na formie umieszczamy List1, Label1, Label2, Command1, Command2, Command3 i Text1. Poniszy kod zostanie wyjaniony liniami : 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Private Sub Form_Load() Command1.Caption = "usu" Command2.Caption = "dodaj" Command3.Caption = "odwierz" List1.AddItem ("Visual") List1.AddItem ("Basic") List1.AddItem ("Test") Label1.Caption = "Elementw : " & List1.ListCount End Sub Private Sub Command1_Click() If (List1.ListIndex > -1) Then List1.RemoveItem (List1.ListIndex) End If End Sub Private Sub Command2_Click() If Text1.Text "" Then List1.AddItem Text1.Text End If End Sub Private Sub Command3_Click() Label1.Caption = "Elementw : " & List1.ListCount End Sub Private Sub List1_Click() Label2.Caption = List1.Text End Sub 5,6,7 - dodaj do listy 3 elementy ("Visual", "Basic", "Test") 8 - wywietla na Label1 ilo elementw listy 10 - jeeli klike w przycisk 1 11 - i jest jaki zaznaczony element na licie to 12 - usu z listy zaznaczony element 15 - jeeli klike w drugi przycisk 16 - i pole tekstowe nie jest puste to 17 - dodaj do listy element o teksie z pola Text1 20 - jeeli klike w trzeci przycisk to 21 - odwie Label1 i wpisz w nim aktualn liczb elementw

Linia Linia Linia Linia Linia Linia Linia Linia Linia Linia

35

Linia 23 - jeeli klike w list to Linia 24 - wypisz kliknity tekst w Label2

27. DriveListBox, DirListBox, FileListBoxhttp://visual.basic.kaem.forall.pl/ Obsuga tych kontrolek jest bardzo prosta, su one do listowania plikw i folderw. Umiemy po prostu te trzy elementy na formie i wczmy program. Mona ju atwo porusza si po folderach i plikach. Kady z tych elementw posiada waciwo o aktualnej ciece. S to : Dla DriveListBox : Drive1.Drive Dla DirListBox : Dir1.Path Dla FilelistBox : File.Path Dziki temu moemy zgra ze sob kad z tych kontrolek. Klikamy na Drive1 (Drive1_Change()) i piszemy Dir1.Path = Drive1.Drive Oznacza to, e po zmianie dysku (Drive1) program ma uaktualni list folderw (Dir1). Jeszcze tylko zapobieganie bdowi podczas gdy wybrany hdd/cd /a/... s puste, uyjemy tu wyczenie bdw (poczytasz o tym w dziale obsuga bdw). On Error Resume Next Dir1.Path = Drive1.Drive Zgrajmy te wybr folderw z list plikw, kliknijmy na Dir1 i wystukajmy : File1.Path = Dir1.Path Aby w FileListBox wywietli tylko pliki podanego typu musimy zmieni waciwo Pattern z *.* na np. *.jpg. Pliki z FileListBox mona zaznaczy i uzyska cakowit ciek do naszego zaznaczonego pliku. Private Sub File1_Click() Msgbox File1.Path & "\" & File1.FileName End Sub File1.Path to cieka do pliku, a File1.FileName to nazwa pliku wraz z rozszerzeniem. Po uruchomieniu programu i sprawdzeniu cieek dla plikw okazuje si, e pliki z katalogw dyskowych maj przy sobie dwa backslashe (np. : C:\\autoexec.bat). Uywajc poznanej wczeniej funkcji Len moemy temu zapobiec : Private Sub File1_Click() bslash = "\" If Len(File1.Path) < 4 Then bslash = "" MsgBox File1.Path & bslash & File1.FileName End Sub Teraz program sprawdza czy plik znajduje si w katalogu dyskowym (bezporednio w C:\, D:\...), jeeli ten plik tam jest to backslash zostaje usunity.

36

Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (1)

28. Timerhttp://visual.basic.kaem.forall.pl/ Pord komponentw znajduje si dotyczcy tej lekcji element (Timer), suy on do wywoywania rnych czynnoci w wyznaczonych przez nas odstpach czasu. Odstpy te s wyraane w milisekundach (1 sekunda = 1000 milisekund). Aby nasz timer zacz co robi musimy mu ustawi czas we waciwoci Interval, ustawmy przykadowo 5 sekund. Dwukrotnie klikajc w nasz timer ustawiamy akcje, stwrzmy wszystko by wygldao tak: Private Sub Timer1_Timer() MsgBox ("???") End Sub Program powinien co 5 sekund wywietla komunikat "???". W kolejnym przykadzie umiemy na formie label i timer, timerowi ustawiamy Interval na 1000, klikamy w niego i piszemy : Public A As Integer Private Sub Timer1_Timer() A=A+1 Label1.Caption = "Czas wczenia programu (w sekundach) : " & A End Sub Aby wyczy lub wczy nasz timer nadajemy mu Enabled odpowiednio na Flase lub True

29. ListViewhttp://visual.basic.kaem.forall.pl/ ListView jest obiektem dodatkowym, aby mc go uywa musimy z Komponentw (Ctrl+T) wybra Microsoft Windows Common Controls 5.0 (SP2). Uywajc jej wypado by te docza do naszego .exe odpowiedni plik .ocx (comctl32.ocx) 1. Oglnie ListView pozwala na wywietlanie listy w 4 rnych trybach (jak na obrazku)

37

Tryb wywietlania elementw wybieramy przez waciwo .View przypisujc jej jcyfre od 1 do 4 Elementem ktry wyrnia ListView jest atwa obsuga oraz moliwo dodania do dowolnego typu listy obrazkw. Aby doda wybrany element do listy naley uy prostego polecenia: ListView1.ListItems.Add Index,Klucz,Tekst,Obrazek,Ikona Pola Index (pozycja w ktrej chcemy doda tekst), Klucz, Obrazek oraz Ikona nie s polami obowizkowymi do dodania, najprostrze dodanie elementu mona wic zapisa w taki sposb: ListView1.ListItems.Add , , "Tekst" Pozycje z listy moemy atwo usun stosujc: ListView1.ListItems.Remove Index Index jest pozycj naszego elementu w licie. Liste czycimy przez: ListView1.ListItems.Clear Wana jest te dla nas liczba elementw z listy: ListView1.ListItems.Count numer oraz tekst zaznaczonego elementu: ListView1.SelectedItem.Index ListView1.SelectedItem.Text oraz tekst dowolnego obiektu:

38

MsgBox ListView1.ListItems(Index).Text 2. Dodawanie obrazkw Jeeli chcemy doda obrazki do naszej listy bdziemy potrzebowali uy obiektu ImageList (jest take w Microsoft Windows Common Controls 5.0 (SP2)). Stawiamy ten element na naszej formie, klikamy na niego prawym przyciskiem myszki i wybieramy 'Properties'. Teraz wybieramy rozmiar obrazkw (przykadowo wybierzmy 16x16 aby obrazki pasoway do 2,3 i 4 sposobu wywietlania listy)

W zakadce Image moemy doda dowoln ilo obrazkw

Kady dodany przez nas obrazek posiada odpowiedni numer (Index), ktry bdziemy potem wykorzystywali przy ListView. Teraz jedyne co naley zrobi to przypisa ImageList do ListView, mae ikony (16x16) przypisujemy przez SmallIcons, due przez samo Icons:

39

ListView1.SmallIcons = ImageList1 Gdy nasze mae ikony s ju przypisane mona ich uywa: ListView1.ListItems.Add , , "Tekst 1", , 2 ListView1.ListItems.Add , , "Tekst 2", , 1 ListView1.ListItems.Add , , "Tekst 3", , 1

3. Typ 4 - lvwReport Ten typ wywietlania listy jest nieco bardziej skomplikowany jednak pozwala na o wiele wicej. Uywajc go przedewszystkim naley zadeklarowa ilo kolumn, tekst na nich oraz ich szeroko. ListView1.ColumnHeaders.Add Index, Key, Text, Szerokosc, PozycjaTekstu Dodanie 3 kolumn wygldao by mniej wicej tak: ListView1.ColumnHeaders.Add , , "Nazwa", 3000 ListView1.ColumnHeaders.Add , , "Info", 1000 ListView1.ColumnHeaders.Add , , "Rozmiar", 1000, 1 Rozmiar wynosi 3000,1000,1000 poniewa uyem ScaleMode = 1 i podaem go w Twipsach, PozycjaTekstu moe przyjmowa 3 wartoci 0 - do lewej strony 1 - do prawej strony 2 - wyrodkowane Elementy dodajemy w taki sam sposb, jednak jeeli chcemy uzupeni kolejne komrki listy naley zrobi to troche inaczej. Naley przypisa do zmiennej komrke do ktrego chcemy co doda: Set Komorka = ListView1.ListItems.Add(, , "Tekst 1", , 2) Komorka.SubItems(1) = "A" Komorka.SubItems(2) = "B"

40

Wycignicie elementw z takiej listy jest ju o wiele prostsze, pierwszy element pobieramy w normalny sposb: ListView1.SelectedItem.Text Elementy z nastpnych kolumn w sposb nastpujcy: ListView1.SelectedItem.SubItems(Index) W przypadku gdy chcemy pobra informacje z innego ni zaznaczonego elementu postpujemy analogicznie: A = ListView1.ListItems(Index).Text B = ListView1.ListItems(Index).SubItems(Index2) Index to numer elementu, Index2 to index kolumny. Warto jeszcze zwrci uwage na to e uytkownik moe po dwu/trzy krotnym klikniciu na wybrany element edytowa go

Decyduje o tym waciwo LabelWrap, aby wyczy uytkownikowi tak moliwo wystarczy ustawi ListView1.LabelWrap = False Moemu take sami wczy edycje zaznaczonego elementu przez ListView1.StartLabelEdit 4. Zdarzenia i metody Zdarzenia: AfterLabelEdit(Cancel As Integer, NewString As String) - moemy dziki temu spradzi jak uytkownik zedytowa wybrane pole, NewString to nowa nazwa wpisana przez uytkownika, gdy chcemy pobra pierwotn nazwe wybieramy poprostu nazwe

41

edytowanej kolumny (w tym zdarzeniu ma jeszcze star warto) ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader) zdarzenie zachodzi po klikniciu w wybran kolumne (w 4 typie wywietlania listy) mona dziki temu uzyska tekst z kliknitej kolumny a co za tym idzie jej index. Jeeli nadamy kolumn przy ich tworzeniu wartoci Key bdziemy mogli stworzy sortowanie listy wedug klucza (numeru kolumny) w ktr kliknelimy Metody: ListView1.FindItem - pozwala zwrci tekst wiersza po jego nazwie, mona uywa gdy ne wiemy jaki index ma wybrane przez nas pole ListView1.GetFirstVisible - zwraca tekst z pierwszego widocznego wiersza Waciwoci: ListView1.MultiSelect - ustawione na true pozwala uytkonikowi zaznaczy wicej ni jeden obiekt na licie. Wywietlenie ListView1.ListItems.Selected.Text wywietli tylko ostatnio zaznaczony element. eby sprawdzi jakie obiekty s zaznaczone naley uy ptli ktra sprawdza pokoleji jaki obiekt jest zaznaczony Dim A As Long Do While A < ListView1.ListItems.Count A=A+1 Sprawdz = ListView1.ListItems(A).Selected If Sprawdz = True Then MsgBox "Zaznaczony: " & ListView1.ListItems(A).Text Loop ListView1.ListItems(A).Selected przyjmuje True lub False w zalenoci czy obiekt o indeksie A jest zaznaczony lub nie ListView1.StartLabelEdit - pozwala na edycje wybranego pola w wybranym przez nas momencie. W przypadku kliknicia w button lub innego zdarzenia odbierajcego fokus naley najpierw zwrci fokus dla ListView: Private Sub Command1_Click() ListView1.SetFocus ListView1.StartLabelEdit End Sub 5. Poprawiamy zaznaczanie elementu w lvwReport Uywajc wywietlania listy typu lvwReport mona odrazu zauway e zaznaczanie elementw nie wyglda w taki sposb jakbymy tego chcieli, kliknicie w tekst przy innej kolumnie, lub po prawej obok tekstu ktry chcemy zaznaczy nie dziaa poprawnie. Wiersz jest zaznaczany tylko wtedy gdy klikniemy na tekst/obrazek z pierwszej kolumny. Wypdao by to poprawi. Standardowo szeroko wiersza w polu listy powinna wynoi 17 pikseli. Musimy uy zdarzenia ListView1_MouseUp zwraca nam ono pozycje kliknicia myszy w twipsach. Dziki temu moemy sprawdzi gdzie klikn uytkownik i ktre pole zaznaczy. Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) y = (y / 15 - (y / 15 Mod 17)) / 17 ListView1.ListItems(y).Selected = True End Sub

42

y obliczamy przez podzielenie y przez 15 ( zamieniamy twipsy na pixele, nastpnie odejmujemy reszte z dzielenia przez 17 i cao dzielimy przez 17. Otrzymamy dziki temu liczbe cakowit ktra informuje nas o numerze elementu ktry zosta kliknity. Mona take zrobi zaznaczanie elementw dodajc MouseDown, bdzie to wygldao efektywniej. Opisany powyej kod musi zosta poprawiony, nie bdzie on dziaa prawidowo jeeli klikniemy w miejscu np. 6 elementu a w licie bdzie ich tylko 4, pod obliczeniem y dopisujemy: If ListView1.ListItems.Count >= y Then ListView1.ListItems(y).Selected = True End If Kod powinien dziaa poprawnie... jednak tak nie jest, nie zostao jeszcze uwzgldnione to, ile wierszy jest uwzgldnione. Pozycja y nie zwrci nam indexu wiersza tylko jedno z miejsc z listy na ktre kliknelimy, a co jeeli pewna cz elementw bdzie niewodoczna (lista bdzie przewinita suwakiem w d) ? W takim wypadku zaznaczony element nie bdzie prawidowy, trzeba napisa do tego poprawke uwzgldniajc przewinite kolumny: Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) y = (y / 15 - (y / 15 Mod 17)) / 17 Nazwa = ListView1.GetFirstVisible Dim A As Long Do While A < ListView1.ListItems.Count A=A+1 If Nazwa = ListView1.ListItems(A).Text Then GoTo Koniec Loop Koniec: y=y+A-1 If ListView1.ListItems.Count >= y Then ListView1.ListItems(y).Selected = True End If End Sub Oczywicie to nie ma mniejszego sensu gdy wartoci z ListItems nie s pozycjami kluczami (powtarza si np. dwa razy ten sam tekst). Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (3)

30. TreeViewhttp://visual.basic.kaem.forall.pl/ TreeView pozwala wywietla list obiektw w postaci drzewa:

43

Aby mc korzysta z tego obiektu naley z komponentw (Ctrl+T) wybra 'Microsoft Windows Common Controls 5.0 (SP2)

Obiekty dodajemy do drzewa przez funkcje Nodes TreeView1.Nodes.Add [Relacja],[TypRelacji],[Klucz],[WywietlanyTekst],[Obrazek],[ZaznaczonyObrazek] Dodanie kilku obiektw: TreeView1.Nodes.Add TreeView1.Nodes.Add TreeView1.Nodes.Add TreeView1.Nodes.Add , , , , , , , , , , , , "Tekst "Tekst "Tekst "Tekst 1" 2" 3" 4"

Dodanie pod obiektw do listy jest proste, po pierwsze musimy nada jaki Klucz obiektowi matce: TreeView1.Nodes.Add , , "Matka", "Tekst 1" Teraz aby doda pod obiekt ktry bdzie rozwiniciem Matki naley uy Relacji jako klucza i poda typ relacji: TreeView1.Nodes.Add "Matka", tvwChild, , "Tekst 2" TreeView1.Nodes.Add TreeView1.Nodes.Add TreeView1.Nodes.Add TreeView1.Nodes.Add , , "Matka", "Tekst 1" "Matka", tvwChild, , "Tekst 2" "Matka", tvwChild, , "Tekst 3" "Matka", tvwChild, , "Tekst 4"

Kady z pod elementw take moe by matk innych elementw, wystarczy nada mu klucz TreeView1.Nodes.Add TreeView1.Nodes.Add TreeView1.Nodes.Add TreeView1.Nodes.Add , , "Matka", "Tekst 1" "Matka", tvwChild, , "Tekst 2" "Matka", tvwChild, "TezJestemMatka", "Tekst 3" "Matka", tvwChild, , "Tekst 4"

44

TreeView1.Nodes.Add "TezJestemMatka", tvwChild, , "Tekst 3.1" TreeView1.Nodes.Add "TezJestemMatka", tvwChild, , "Tekst 3.2"

Elementy z listy s standardowo 'zwinite' aby rozwin list naley uy EnsureVisible TreeView1.Nodes.Add , , "Matka", "Tekst 1" TreeView1.Nodes.Add "Matka", tvwChild, , "Tekst 2" TreeView1.Nodes.Add "Matka", tvwChild, "TezJestemMatka", "Tekst 3" TreeView1.Nodes.Add "Matka", tvwChild, , "Tekst 4" TreeView1.Nodes.Add "TezJestemMatka", tvwChild, "PokazMnie", "Tekst 3.1" TreeView1.Nodes.Add "TezJestemMatka", tvwChild, , "Tekst 3.2" TreeView1.Nodes("PokazMnie").EnsureVisible Opcje: TreeView1.Nodes.Remove (Index) - usuwa wybran pozycje z drzewa o wybranym Indeksie lub kluczu: TreeView1.Nodes.Remove (4) - usunie 4 element z listy TreeView1.Nodes.Remove ("TezJestemMatka") - usunie element o kluczu 'TezJestemMatka' TreeView1.Nodes.Clear - czyci cae drzewo TreeView1.SelectedItem.Text - przechowuje tekst zaznaczonego elementu Obrazki Obrazki dodajemy na prawie identycznej zasadzie jak do obiektu ListView. Najpierw umiemy na formie obiekt ImageList

Teraz kliknijmy na ImageList1 prawym myszki i wybierzmy Properties. W zakadce General ustawmy wielko obrazkw na 16x16, w Images dodajmy kilka przygotowanych przez nas obrazkw

45

Aby obrazki byy powizane z TreeView trzeba uy przyporzdkowania: TreeView1.ImageList = ImageList1 Gdy przyporzdkowanie jest poprawne mona uywa indeksw obrazkw z ImageList w miejsca [Obrazek],[ZaznaczonyObrazek] podczas dodawania elementw TreeView1.Nodes.Add [Relacja],[TypRelacji],[Klucz],[WywietlanyTekst],[Obrazek],[ZaznaczonyObrazek] Przykad: TreeView1.ImageList = ImageList1 TreeView1.Nodes.Add , , "glowne", "Ustawienia", 1 TreeView1.Nodes.Add "glowne", tvwChild, , "Opcje tekstu", 2 TreeView1.Nodes.Add "glowne", tvwChild, , "Format", 2 TreeView1.Nodes.Add "glowne", tvwChild, , "Widok", 2 TreeView1.Nodes.Add "glowne", tvwChild, "rozne", "Rne", 1 TreeView1.Nodes.Add "rozne", tvwChild, , "Czas", 2 TreeView1.Nodes.Add "rozne", tvwChild, "pokaz", "Haso", 3 TreeView1.Nodes("pokaz").EnsureVisible

46

31. Dostp do plikwhttp://visual.basic.kaem.forall.pl/ W Visual Basic-u operacje takie jak zapisywanie informacji do pliku, odczytywanie ich i dopisywanie to klika prociutkich polece. Plik moemy otwrzy na 3 sposoby : Input - odczytanie Append - dopisywanie do pliku Output - nadpisywanie lub w przypadku nie istnienia pliku tworzenie go, a w przypadku istnienia kasuje jego zawarto Aby zdefiniowa programowi kry plik ma by edytowany i w jaki sposb naley posuy si procedur Open. Open plik For Typ As #liczba Plik to cieka dostpu do pliku, np. : "C:\aaa.txt" Typ to jeden z trzech typw dostpu do pliku. Liczba to numer pliku, jest nam to potrzebne gdy chcemy edytowa kilka plikw na raz. Przykad : Open "C:\aaa.txt" For Output As #1 Tym poleceniem otworzymy plik aaa.txt i ustawimy go do pisania w nim tekstu. Kiedy chcemy otworzy nastpny plik to musimy albo uy jako liczby #1, albo zamkn uprzednio otwarty plik, zamykamy go poleceniem Close. Open "C:\aaa.txt" For Output As #1 Close #1 Poleceniem Print wpisujemy do pliku nasz tekst, moemy to robi tylko w przypadku otwarcia pliku jako Append i Output : Open "C:\aaa.txt" For Output As #1 Print #1,"Tekst wpisany do pliku" Close #1 Chcc teraz odczyta tekst z pliku musimy otworzy go jako Input i uy polecenia Line Input : Open "C:\aaa.txt" For Input As #1 Line Input #1, a Close #1 Teraz nasza zmienna a zawiera pierwsz linijke z pliku, czyli "Tekst wpisany do pliku !". Oczywist spraw jest fakt, e moemy dodawa duo linijek do pliku : Open "C:\aaa.txt" For Output As #1 Print #1,"1 Linijka" Print #1,"2 Linijka" Print #1,"3 Linijka" Close #1 Warto zauway e zapisywanie danych do pliku za pomoc Print automatycznie przechodzi do nowej lini w pliku. Jeeli chcemy aby program nie przechodzi do nowej lini

47

naley na kocu linijki z procedur Print postawi rednik Open "C:\aaa.txt" For Output As #1 Print #1,"To wszystko "; Print #1,"bdzie w "; Print #1,"jednej lini !"; Close #1 To samo tyczy si odczytywania z pliku. Moemy te zapisywa (Write) wiele wyrae do jednej lini a nastpnie je odczywyta (Input), zapis wyglda tak : Open "C:\aaa.txt" For Output As #1 Write #1,"Imie","Nazwisko","Fach" Write #1,"Henryk","Sienkiewicz","Pisarz" Close #1 Natomiast odczyt tak : Open "C:\aaa.txt" For Input As #1 Input #1,a,b,c Input #1,d,e,f Close #1 Nasze zmienne a, b, c, d, e, f przechowuj kolejne dane z pliku, daje to due moliwoci podczas robienia i zapisywania baz danych, moemy uy tutaj take dwuwymiarowych tablic. Czasem zdarza si, e chcemy odczyta jaki plik, ale nie wiemy ile ma linijek. Tutaj stosujemy funkcj EOF ktra zwraca 2 wartoci, True jeli plik nie ma ju wicej linijek do odczytania i Flase gdy plik nie jest jeszcze odczytany do koca. Aby byo atwiej przyswoi t funkcje przykadzik. Umiemy na formie ListBox, stwrzmy jaki plik w C:\ i wpiszmy do niego troche bzdur (tak z 5 - 10 linijek). Teraz napiszemy program ktry odczytuje linijki z tego pliku i wpisuje je do pola listy : 1. 2. 3. 4. 5. 6. 7. 8. Private Sub Form_Load() Open "C:\aaa.txt" For Input As #1 Do While EOF(1) = False Line Input #1, a List1.AddItem a Loop Close #1 End Sub 2 3 4 5 6 7 otwiera plik aaa.txt do odczytu jako 1 powtarzaj ptle dopki koniec z pliku 1 jest faszem odczytaj linie z pliku dodaj odczytan linie do listy Koniec ptli Zamknij plik 1

Linia Linia Linia Linia Linia Linia

32. Operacje na plikachhttp://visual.basic.kaem.forall.pl/ Umiemy ju zapisywa i odczytywa tekst z plikw, teraz nauczymy si te pliki przenosi kopiowa, zmienia nazwy, poznamy te operacje na katalogach.

48

Kill Usuwa plik, w przypadku, gdy plik nie istnieje zwrci nam bd. Kill "C:\aaa.txt" Usunie plik aaa.txt Kill "C:\aaa\*.*" Usunie wszystkie pliki z katalogu aaa (zostawi jednak foldery) Name Name "C:\aaa.txt" As "C:\bbb.txt" Zmieni nazwe naszego pliku na bbb.txt Name "C:\aaa.txt" As "C:\aaa\aaa.txt" Przeniesie nasz plik do folderu aaa FileCopy Kopiuje nasz plik FileCopy "C:\aaa.txt", "C:\aaa\bbb.txt" FileLen Sprawdza wielko pliku w bajtach. Bajty = FileLen("C:\aaa.txt")

33. Operacje na katalogachhttp://visual.basic.kaem.forall.pl/ RmDir Usuwa wybrany katalog RmDir "C:\aaa\" MkDir Tworzy nam katalog MkDir "C:\aaa\" Name Name "C:\aaa\" As "C:\bbb\"

49

Zmieni nazw folderu z aaa na bbb, zachowujc wszystkie pliki wewntrz

34. Atrybuty plikw i folderwhttp://visual.basic.kaem.forall.pl/ Atrybuty dla plikw i folderw najlepiej pobiera przez Funkcje uzyskiwania tych atrybutw naley zadeklarowa: Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long Private Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long Pniej aby uzyka atrybut pliku naley uy zadeklarowanej funkcji GetFileAttributes: Atrybuty = GetFileAttributes("AdresFolderuLubPliku") Aby ustawi wybrany atrybut naley uy drugiej funkcji: SetFileAttributes "PlikLubFolder",Atrybuty Warto atrybutw to warto liczbowa, skada si z nastpujcych wartoci: 1 - tylko do odczytu 2 - ukryty 4 - systemowy 16 - katalog 32 - archiwalny 128 - brak atrybutw 160 - tymczasowy Gdy chcemy uzyska warto mieszan poprostu dodajemy wybrane przez nas wartoci atrybutw, przykadowo dla pliku ktry ma by systemowy i ukryty naleao by da atrybut o wartoci 6 (2 + 4), dla ukrytego folderu ktry jest tylko do odczytu warto 19 (2 + 16 + 1). Identycznie ma si pobieranie atrybutw, naley sprawdzi z jakich liczb skada si pobrany przez nas atrybut. Dim Atrybuty As Byte Atrybuty = GetFileAttributes("C:/") If Atrybuty > 159 Then MsgBox "Tymczasowy" Atrybuty = Atrybuty - 160 End If If Atrybuty > 127 Then MsgBox "Brak Atrybutw" Atrybuty = Atrybuty - 128 End If

50

If Atrybuty > 31 Then MsgBox "Archiwalny" Atrybuty = Atrybuty - 32 End If If Atrybuty > 15 Then MsgBox "Katalog" Atrybuty = Atrybuty - 16 End If If Atrybuty > 3 Then MsgBox "Systemowy" Atrybuty = Atrybuty - 4 End If If Atrybuty > 1 Then MsgBox "Ukryty" Atrybuty = Atrybuty - 2 End If If Atrybuty > 0 Then MsgBox "Tylko do odczytu" End If Oczywicie lepiej byo by to zrobi na instrukcji Case jednak pokazanie tego na If pozwoli atwiej to zrozumie.

35. Spis plikw i katalogwhttp://visual.basic.kaem.forall.pl/ W tym dziale opisze jak wycign za pomoc API nazwy plikw oraz katalogw z wybranego katalogu. Jest to o wiele szybszy sposb ni wyciganie nazw plikw i folderw z umieszczonych na formie kontrolek FileListBox i DirListBox. Majc doczynienia z API musimy zadeklarowa pewne procedury oraz typy zmiennych: Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA Atrybuty As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME RozmiarNaHDD As Long Rozmiar As Long dwReserved0 As Long dwReserved1 As Long Nazwa As String * 260 cAlternate As String * 14 End Type

51

Private WFD As WIN32_FIND_DATA Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal FindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Po takim zadeklarowaniu mona ju korzysta z dwch nowych funkcji: FindFirstFile, oraz FindNextFile. Pierwsza funkcja znajduje 1 plik w wybranym katalogu i tworzy co w rodzaju 'uchwytu' dla drugiej funkcji. Druga funkcja wyszukuje kolejne pliki pobierajc 'uchwyt' z funkcji poprzedniej. Wykorzystanie jest proste: Uchwyt = FindFirstFile("C:\*", WFD) Od tej pory zmienna WFD zawiera rne wartoci o pierwszym pliku/folderze z wybranego folderu. Do najwaniejszych wasnoci nale: WFD.Nazwa WFD.Rozmiar WFD.RozmiarNaHDD WFD.Atrybuty eby okreli czy pobrany przez nas plik/folder jest odpowiednio plikiem lub folderem musimy sprawdzi to sprawdzajc jego atrybuty. ( WFD.Atrybuty ), opisane jest to w poprzedniej lekcji. Chc uzyska nastpny element(y) uywamy drugiej funkcji, tym razem nie musimy ju przypisywa jej wyniku do uchwytu, jednak przydaa by si zmienna zwracajca czy istniej jakie pliki/foldery w wybranym katalogu czy nie: Istnieja = FindNextFile(Uchwyt, WFD) Aby pobra informacje o wszystkich plikach z wybranego katalogu naleao by wic stworzy ptla ktra powtarza si dopki istnieje warto 'Istnieja'. Dim Uchwyt As Long Dim Istnieja As Long Istnieja = 1 Uchwyt = FindFirstFile("C:\*", WFD) Do While Istnieja MsgBox WFD.Nazwa Istnieja = FindNextFile(Uchwyt, WFD) Loop Kod powyszej funkcji wywietli wszystkie elementy z katalogu C:\. Oprcz WFD.Nazwa moemy take wywietli inne opisane wczeniej waciwoci pliku/katalogu. Na stronie kursu: http://visual.basic.kaem.forall.pl/ Mona znale przykady do tej lekcji (3)

52

36. Obsuga bdwhttp://visual.basic.kaem.forall.pl/ Czsto zdarza si, e w programie wystpuje jaki bd, po bdzie program zawiesza si i wycza. Bdom mona jednak zapobiega (raczej naprawia w trakcie dziaania programu). Aby usun wyczenie komunikatu po bdzie piszemy w jakiej procedurze: On Error Resume Next Polecenie to wycza bdy i po wystpieniu jakiego program dziaa dalej. Moemy take dowiedzie si jaki bd wystpi i jemu zapobiec, pokae to na przykadzie z bdem dzielenia przez 0 : On Error Resume Next A=6/0 If Err.Number > 0 Then GoTo Blad If Err.Number = 0 Then GoTo Bez Blad: MsgBox ("Wystpi bd : " & Err.Number) Exit Sub Bez: MsgBox ("Ok. nie ma bdu") Zmienna Err.Number przechowuje numer bdu, natomiast zmienna Err.Description jego komunikat, gdy numer ma warto 0 to bdu nie ma, analizujc to gdy jest bd program idzie to miejsca Blad:, potem wywietla komunikat i funkcj Exit Sub zamyka procedur. Gdy bdu za nie ma to program przechodzi do miejsca Bez: pomijajc Exit Sub. Dzielenie przez 0 to bd nr. 11, stwrzmy na formie pole TextBox (nazwa domylna Text1), pole Command (Command1), kliknijmy w przycisk i wpiszmy co takiego : On Error Resume Next A = 6 / Text1.Text If Err.Number > 0 Then GoTo Blad If Err.Number = 0 Then GoTo Bez Blad: If Err.Number = 11 Then MsgBox ("Bd dzielenia przez 0") Else: MsgBox ("Wystpi nieznany bd : " & Err.Number) End If Exit Sub Bez: MsgBox ("Ok. nie ma bdu") Wpiszmy teraz w pole tekstowe 0 i kliknijmy przycisk, powinno nam wyskoczy " Bd dzielenia przez 0 ", wpiszmy teraz np. 1, powinno by "Ok. nie ma bdu". Teraz wpiszmy jak liter np. a. Dostaniemy komunikat "Wystpi nieznany bd : 13". Jest to bd dzielenia przez znak, moemy na niego te zrobi komunikat : If Err.Number = 13 Then Msgbox("Wpisz w pole cyfr") Zawarto bdu czycimy przez Err.Clear. On Error Goto Miejsce Jest to bardziej zaawansowana obsuga bdw, pozwala na prostsze reagowanie na bdy. Program po napotkaniu na bd przenosi nas do odpowiedniego miejsca w kodzie,

53

wyglda to tak: On Error Goto WystapilBlad: Wynik = 6 / "C" ... dlasze dziaania Exit Sub WystapilBlad: Msgbox "Wystapil blad nr " & Err.Number & ": " & Err.Description Mona w ten sposb obsuy pare bdw za jednym razem, uycie Exit Sub powoduje e program koczy procedure, inaczej msgbox zawsze byby wywietlany (nawet gdyby bd nie isntnia).

37. Schowek Windowshttp://visual.basic.kaem.forall.pl/ C, schowek Windows moe zapamita 1 tekst i 1 obrazek (tak mi si wydaje i tak jest w vb). Schowek jest oglny i przechowuje rne teksty i grafik z innych programw. Sowo kluczowe to Clipboard, ma ono oczywicie rne atrybuty, o nich poniej. Gdy chcemy przesa tekst do schowka piszemy : Clipboard.SetText Zmienna Teraz w schowku mamy ju tekst w postaci naszej zmiennej, gdy chcemy natomiast wywoa ten tekst to : Zmienna = Clipboard.GetText Czyszczenie Schowka (Grafiki i tekstu) : Clipboard.Clear Grafika : Dodawanie do schowka grafiki : Clipboard.SetData = ZmiennaObrazek Pobieranie grafiki ze schowka : ZmiennaObrazek = Clipboard.GetData Teraz niewielki przykad, na formie umieszczamy image1 i button. Klikamy dwukrotnie na button i piszemy : Image1.Picture = Clipboard.GetData Teraz uruchommy super edytor graficzny paint, narysujmy co zaznaczmy i skopiujmy. Jeli wszystko jest ok, to po klikniciu w programie buttonu powinien w image1 pojawi si obrazek. Przykad: W przykadzie pokazane jest jak za pomoc timera przechwyci tekst ze schowka i

54

automatycznie uy go w programie jeeli spenia nasze wymogi. Ustawmy na formie Timer o Interval = 500 i napiszmy dla niego zdarzenie: Private Sub Timer1_Timer() If Len(Clipboard.GetText) > 6 Then If Mid(Clipboard.GetText, 1, 7) = "http://" Then MsgBox "w schowku jest link, teraz mona go wykorzysta :)" Timer1.Enabled = False End If End If End Sub W przykadzie jeeli tekst w schowku ma dugo wiksz ni 6 znakw i jeeli pierwszymi znakami s 'http://' to zachodzi zdarzenie (w tym wypadku tylko wywietlenie komunikatu ale moe by to naprzykad czenie z wybran witryn internetow).

38. Klawiszehttp://visual.basic.kaem.forall.pl/ Teraz opisze jak obsugiwa klawisze, wczmy kod rdowy jakiego okienka, z pierwszej listy (tej nad kodem) naley wybra "Form" a z drugiej zdarzenie "KeyDown", teraz nasz program reaguje na wciskanie klawiszy. Zmienna przechowujca numer klawisza to zmienna KeyCode, eby sprawdzi numery klawiszy moemy napisa : Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) a = MsgBox("Numer klawisza : " & KeyCode & ", Odpowiednik : " & Chr(KeyCode)) End Sub Wczmy program i wcinijmy dowolny klawisz. Przykadowe klawisze to np. : 13 - Enter, 27 - Escape, 8 - Backspace. Teraz dodajmy na form label1, sprawdmy numery klawiszy dla strzaki w lewo (powinno by 37) i w prawo (a tu 39), nastpnie zmiemy procedur na : Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode = 37) Then Label1.Left = Label1.Left - 100 ' Jeeli klawisz to strzaka w lewo to przesu label1 o 100 w lewo If (KeyCode = 39) Then Label1.Left = Label1.Left + 100 ' Jeeli klawisz to strzaka w prawo to przesu label1 o 100 w prawo End Sub Powinnimy teraz strzakami w lewo i prawo sterowa labelem. Funkcja ta nie dziaa jednak gdy na formie mamy obiekt z focusem (focus to aktywno (obiekty te to np.button, text itp)). Naley wtedy doda zdarzenia KeyDown tym obiektom, zmusza to jednak do dodawania naszej procedury do kadego obiektu. Dodajmy jeden command i zmiemy kod na : Public Sub Klawisz(KeyCode As Integer) ' Nasza funkcja ktra sprawdza klawisze If (KeyCode = 37) Then Label1.Left = Label1.Left - 100 If (KeyCode = 39) Then Label1.Left = Label1.Left + 100 End Sub

55

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer) Klawisz (KeyCode) ' Jeeli wciniesz klawisz to przeka go do funkcji Klawisz() End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Klawisz (KeyCode) ' Jeeli wciniesz klawisz to przeka go do funkcji Klawisz() End Sub Teraz program reaguje na klawisze nawet jak ma obiekt z fokusem, rozwizanie to ma jednak jedn wad, mianowicie nie reaguje na klawisze zdarze (enter itp), gdy te klawisze s przypisane obiektom z fokusem. Aby dziaay klawisze enter musimy niestety nie wstawia tych obiektw. Zamiast porwnywa klawisze do ich numerw to moemy je porwna je do kodu klawiszy z visual basic-a : do numeru : if(KeyCode=13) Then... do kodu vb : If(KeyCode=vbKeyReturn) Then... Pozwala to na atwiejsze zapamitanie klawiszy i nie trzeba ich sprawdza za kadym razem : Tabela kodu klawiszy vb : vbKeyA - klawisz A vbKeyB - klawisz B ... vbKeyZ - klawisz Z vbKey0 - klawisz 0 vbKey1 - klawisz 1 ... vbKey9 - klawisz 9 vbKeyF1 - klawisz F1 vbKeyF2 - klawisz F2 ... vbKeyF12 - klawisz F12 reszta klawiszy to ich angielska nazwa : vbKey + nazwa, przykady : vbKeyUp - strzaka w gre vbKeyDelete - klawisz Delete vbKeySpace - spacja Moemy take sprawdza czy s wcinite kombinacje klawiszy, naley stosowa do tego specjalne maski (dla shifta, ctrla i alta), przeanalizuj skrypt (na formie ma by tylko label1) : Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) ShiftDown = (Shift And vbShiftMask) > 0 ' Definiujemy maske shifta CtrlDown = (Shift And vbCtrlMask) > 0 ' ctrla AltDown = (Shift And vbAltMask) > 0

56

' alta Maski = "" If (ShiftDown = True) Then Maski = "SHIFT + " ' jeeli shift jest trzymany to dodaj to do maski ("Maska" jest tutaj zwyk zmienn tekstow) If (CtrlDown = True) Then Maski = Maski & "CTRL + " ' sprawd ctrla i go dodaj gdy wcinity If (AltDown = True) Then Maski = Maski & "ALT + " ' sprawd altaa i go dodaj gdy wcinity Label1.Caption = Maski End Sub

39. Shellhttp://visual.basic.kaem.forall.pl/ Funkcja shell pozwala nam uruchomi dowolny program (*.exe) z poziomu naszego programu. Oprcz plikw exe istnieje moliwo wykonywania plikw z innymi rozszerzeniami za pomoc skojarzonych z nimi aplikacji. Sposb wywoania funkcji shell jest nastpujcy: Shell(cieka_do_programu, typ _okna) Gdzie: cieka_do_programu to..... cieka do uruchamianego programu Typ_okna to parametr nieobowizkowy okrelajcy rodzaj okna,w ktrym zostanie program uruchomiony Dostpne typy: Litera VbHide VbNormalFocus VbMinimizedFocus VbMaximizedFocus VbNormalNoFocus

Warto Opis 0 1 2 3 4 Okno jest ukryte i ma focus Okno ma normalny rozmiar i posiada focus Okno jest wywietlane jako ikona w pasku Start i ma focus Okno jest zamksymalizowane i posiada focus Okno ma normaln wielko i biece okno posiada focus Okna jest zminimalizowane i biece okno posiada focus

VbMinimizedNoFocus 6

Przykad wywoania Kalkulatora w zminimalizowanym oknie bez focusu: Shell ("C:\Windows\calc.exe",6) Shell oferuje te dla uytkownikw systemw serii Win9x przyjazny programik o nazwie Start. Za jego pomoc moemy nie tylko uruchamia pliki exe, ale te: - dowolny plik skojarzony z jak aplikacj, np.: Shell "Plik.exe C:\readme.txt"

57

Spowoduje otwarcie pliku readme.txt za pomoc powiedzmy notatnika (programu skojarzonego z Plik .exe)

40. Rejestrhttp://visual.basic.kaem.forall.pl/ Chyba kady wie, co to jest rejestr. Wic nie ma sensu tego tumaczy. Stanadrdowo Visual Basic pozwala na operacje tylko w obrbie klucza HKEY_CURRENT_USER\Software\VB and VBA Program Settings. Nie mona schodzi poniej tego klucza, chyba e uywamy funkcji API. Opisane tu funkcje nie powinny zaszkodzi naszemu rejestrowi, w przypadku jakiej awarii: DeleteSettings - usuwa klucz wraz z jego zawartoci SaveSettings - aktualizuje lub dodaje klucz GetAllSettings - zwraca list kluczy i ich wartoci GetSettings - zwraca warto klucza Oto schemat klucza tworzonego przez SaveSettings: HKEY_CURRENT_USER\Softwatre\VB and VBA Program Settings\klucz_aplikacji\klucz_sesji\klucz Tworzenie klucza: SaveSetting "klucz_aplikacji", "klucz_sesji", "klucz", "warto" Pobieranie wartoci klucza: GetSetting "klucz_aplikacji", "klucz_sesji", "klucz", "wart_dom" Jego wywoanie nie rni si prawie od poprzedniego, oprcz pojawienia si wartoci domylnej wart_dom, zwracanej, gdy klucz nie istnieje. Np.: a = GetSetting "vircom", "program", "imie", "nie_ma" Spowoduje to zwrcenie wartoci Vircom, ale gdyby klucz nie istnia to "nie_ma" GetAllSettings Pobiera z klucza podrzdnego, wszystkie klucze i ich wartoci. Wywoanie ma posta: a = GetAllSettings "klucz_aplikacji", "klucz_sesji" I przykad: Text1.text = "" Dim Odczytane As Variant Dim x As Integer Odczytane = GetAllSettings("Kalendarz", "Dziadek") For x = 0 To UBound(Odczytane) Text1.Text = Text1.Text & Odczytane(x, 0) _ & vbTab & " =" & Odczytane(x, 1) & vbNewLine Next x DeleteSetting

58

Usuwa klucz i ewentualnie jego podwartoci. Wywoanie ma posta: DeleteSetting "klucz_aplikacji", "klucz_sesji", "klucz" Do rejestru moemy zapisywa wane informacje typu czy uytkownik jest zarejestrowany, ilo wcze programu itp.

41. Menuhttp://visual.basic.kaem.forall.pl/ W tym dziale opisze w jaki sposb stworzy menu typu Plik > Otwrz itp.. Cay proces jest dosy prosty. Klikamy raz na form, a potem z grnego menu (takiego jak wanie robimy) wybieramy opcj Tools > Menu Editor.... Ukazuje si nam okienko edycji. W pole Caption wpisujemy jak nazwe (w przykadzie "Plik") a w miejscu Name jak nazwe. Po klikniciu ok. na naszym programie bdzie ju co podobnego do menu. Aby doda kolejny Caption klikamy na insert i znowu wypeniamy pola Caprion i Name (Name musi by inne od poprzedniego Name chyba e ustawimy index-y, ale o indexach troszke pniej).

Chcc doda podmenu musimy klikn nastrzake w prawo, wtedy tworzymy podmenu, moemy take stworzy podmenu dla podmenu, aby to lepiej zajarzy spjrzcie na poniszy rysunek. Moemy take tworzy paski odstpu robimy to wpisuj w Caption -. To take pokazane jest na obrazku. Teraz aby zobaczy czy nasze menu dziaa kliknijmy ok., jeli wyskoczy jaki bd to najprawdopodobniej nie wypenilimy ktrego pola Name. Moemy doda do naszych opcji klawisz skrtu, robimy to wybieraj z listy Shortcut odpowiedni kombinacje klawiszy. Aby stworzy procedure dla kadego przycisku z menu naley po prostu w zamkn menu editor i klikn na wybran pozycje. Dla opcji z menu o Name m1 powinno wyglda to tak :

59

Private Sub m1_Click() End Sub Pomidzy tym wstawiamy nasze polecenia.

Gotowe menu powinno wyglda nastpujco:

Moe oczywicie tworzy zagniedone w sobie elementy (dowoln ilo razy)

60

Co da nam:

42. Pasek statusuhttp://visual.basic.kaem.forall.pl/ Aby doda do swojeko programu pasek statusu (taki pasek od dou programu) naley najpierw doda kontrolki "Microsoft Windows C