129
1 OSNOVE PROGRAMIRANJA OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji pripadajući modul forme (.frm) koji sadrži njen programski kod • Modul forme sadži event procedure - dijelovi koda koji će se izvršiti kao odgovor na određene događaje (za svaku kontrolu na formi postoji skup event procedura) • Moduli forme mogu sadržavati opće procedure koje će biti izvršene kao odgovor na poziv bilo koje event procedure

OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

Embed Size (px)

Citation preview

Page 1: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

1

OSNOVE PROGRAMIRANJAOSNOVE PROGRAMIRANJA

Struktura aplikacije Visual Basica

• Za svaku formu u aplikaciji postoji pripadajući modul forme(.frm) koji sadrži njen programski kod

• Modul forme sadži event procedure - dijelovi koda koji će se izvršiti kao odgovor na određene događaje (za svaku kontrolu naformi postoji skup event procedura)

• Moduli forme mogu sadržavati opće procedure koje će bitiizvršene kao odgovor na poziv bilo koje event procedure

Page 2: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

2

• Programski kod koji nije vezan uz određenu formu ili objekt možese nalaziti u drugom tipu modula, standardnom modulu (.bas) i sadrži samo programski kod

• Modul klase (.cls) koristi se kod stvaranja objekata koji mogu bitipozivani od procedura unutar aplikacije, sadrži i kod i podatke(može se shvatiti kao kontrola koja nema vidljivi dio)

Page 3: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

3

Način pisanja koda

Moduli koda:

• forme• standardni moduli• moduli klase

Svaki standardni modul, modul klase ili forme može sadržavati:

• Deklaracije - na razini svih vrsta modula mogu se postavitideklaracije konstanti, tipova, varijabli i dinamički povezanihbiblioteka (DLL-ova)

• Procedure (potprogrami). Sub, Function i Property procedure sadržavaju dijelove koda koji mogu biti izvršeni kao cjelina

Page 4: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

4

Moduli Forme (.frm)• Temelj su većine aplikacija u VB-u

• Mogu sadržavati event procedure, opće procedure, deklaracijevarijabli, konstanti i tipova i vanjskih procedura na razini forme

Standardni moduli (.bas)• Spremnici su procedura i deklaracija obično pozvanih od drugihmodula unutar aplikacije, mogu sadržavati opće deklaracije(dostupne cijeloj aplikaciji) ili deklaracije na razini modula zavarijable, konstante, tipove, vanjske ili opće deklaracije. Standardnimodul može biti korišten u više različitih aplikacija.

Page 5: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

5

Moduli klase (.cls)

• Temelj su objektno orjentiranog programiranja u Visual Basicu

• U modulima klase može se upisivati programski kod za stvaranjenovih objekata koji mogu imati vlastita svojstva (properties) i postupke (methods)

• Forme su samo moduli klase koji mogu imati kontrole postavljenena njih i mogu prikazivati prozor forme

Page 6: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

6

Korištenje kodnog prozora

Prozor u kojem ćete pisati većinu programskog koda.

Page 7: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

7

Automatsko završavanje koda

• Auto List Members opcija - kad u programski kod upišete imekontrole, pojavi se spuštajući popis svojstava dostupnih za tukontrolu

Page 8: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

8

• Auto quick info - automatska brza pomoć prikazuje sintaksunaredbi i funkcija

Page 9: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

9

• Bookmarks (zabilješke) mogu biti upotrebljene za označavanjelinija programskog koda tako da im se kasnije možete lako vratiti(u glavnom meniu Edit - Bookmarks)

Page 10: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

10

Temelji kodiranja

• Lomljenje jedne linije u više linija - korištenjem oznake zanastavak linije ( _) razmak i podvučena linija. Iza oznake zanastavak linije ne smije se nalaziti komentar u istoj liniji

Data1.RecordSource = _"SELECT * FROM Titles, Publishers" _& "WHERE Publishers.PubId = Titles.PubID" _& "AND Publishers.State = 'CA'"

• Spajanje naredbi u jednoj liniji - u jednu liniju se može postavitidvije ili više naredbi korištenjem dvotočke

Text1.Text = "Hello" : Red = 255 : Text1.BackColor = _Red

Page 11: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

11

• Dodavanje komentara u kod - simbol ' označava da se riječi kojese nalaze iza njega zanemare

' This is a comment beginning at the left edge of the' screen.Text1.Text = "Hi!" ' Place friendly greeting in text

' box.

Page 12: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

12

Razumijevanje sustava brojeva

• Ponekad je osim decimalnih prikladno koristiti i heksadecimalne(s bazom 16) i oktalne brojeve (s bazom 8)

• Visual Basic prikazuje heksadecimalne brojeve s prefiksom &H a oktalne s prefiksom &O.

• Heksadecimalni sustav koristi se za postavljanje boja ekrana i kontrola.

Page 13: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

13

Uobičajeni načini nazivanja u Visual Basicu(procedura, varijabli, konstanti...)

• moraju počinjati slovom

• ne mogu sadržavati točku ili oznaku tipa podatka (posebni znakoviza određivanje tipa podatka)

• ne smiju biti dulji od 255 znakova, imena kontrola, formi, klasa i modula ne smiju biti dulji od 40 znakova

• ne smiju biti ista kao i ograničene ključne riječi

Page 14: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

14

Uvod u varijable, konstante i tipove podataka

Varijable

• Koriste za privremenu pohranu podataka tijekom rada aplikacije

• Imaju ime i tip podatka

• Varijabla se može shvatiti kao oznaka mjesta u memoriji zanepoznatu vrijednost

Page 15: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

15

Deklariranje varijabli

• Deklarirati varijablu znači unaprijed reći aplikaciji o njoj.

• Varijable deklariramo naredbom Dim pridodajući joj imevarijable

Dim imevarijable [As tip]

• Varijable deklarirane unutar procedure naredbom Dim postojesamo dok se izvodi ta procedura

• Vrijednost varijable u proceduri je lokalna za tu proceduru, tj. nemožete pročitati varijablu jedne procedure iz druge procedure (ovosvojstvo omogućava korištenje istog imena varijabli u različitimprocedurama)

Page 16: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

16

Pravila za dodjeljivanje imena varijablama:

• moraju počinjati slovom

• ne mogu sadržavati točku ili oznaku tipa podatka (posebni znakoviza određivanje tipa podatka)

• ne smiju biti dulji od 255 znakova

• mora biti jedinstveno u svom opsegu (području u kojem varijablamože biti pozivana - proceduri, modulu ili sl.)

Page 17: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

17

Još o varijablama:

•Neobavezan uvjet As tip dopušta deklariranje tipa podataka iliobjekta.

• Tipovi podataka određuju vrstu informacije koju će varijablačuvati.

• Varijable osim tipova podataka (String, Integer, Currency...) mogusadržavati i objekte Visual Basica i drugih aplikacija (Object, Form, Text Box...)

Page 18: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

18

Postoje i drugi načini deklariranja varijabli:

• deklariranje varijable u odjeljku Declarations forme, standardnogmodula ili modula klase čini varijablu dostupnom svimprocedurama u modulu

• deklariranje varijable korištenjem ključne riječi Public čini jedostupnom cijeloj aplikaciji

• deklariranje lokalne varijable korištenjem ključne riječi Staticčuva vrijednost varijable dok program ne završi

Page 19: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

19

Implicitna i eksplicitna deklaracija varijabli

Implicitna deklaracija

• Ne morate deklarirati varijablu prije korištenja. Visual Basic automatski kreira varijablu tog imena.

• Zgodan ali opasan način jer pogrešno napisanu varijablu VB smatra kao novu

Function SafeSqr(num)TempVal = Abs(num)SafeSqr = Sqr(TemVal)End Function

Page 20: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

20

Eksplicitna deklaracija• VB zahtijeva eksplicitnu deklaraciju varijabli

• VB upozorava kad otkrije ime koje nije izričito određeno kaovarijabla

• To se postiže tako da se u Declarations odjeljak klase, forme ilistandardnog modula postavi izraz

Option Explicit

ili se u izborniku Tools-Options-Editor potvrdi kućica za izborRequire Variable DeclarationFunction SafeSqr(num)

Dim TempValTempVal = Abs(num)SafeSqr = Sqr(TemVal)

End Function

VB bi u ovom primjeruprikazao poruku pogreške zanepravilno napisano imevarijable

Page 21: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

21

Razumijevanje područja varijabliPodručje varijable određuje koji dijelovi vašeg programskog kodaće biti svjesni njenog postojanja

područje privatne (private) javne (public)Procedura Varijable su privatne za proceduru u

kojoj se pojavljujuNeprimjenjivo. Ne možete odreditijavnu varijablu unutar procedure

Modul Varijable su privatne za modul ukojem se pojavljuju

Varijable su dostupne svimmodulima

Varijable unutar procedure:

• lokalne varijable prepoznatljive samo unutar procedure u kojoj se nalaze

• deklariraju se sa Dim (postoje dok se izvršava procedura) ili Static(postoje cijelo vrijeme rada aplikacije)

• može se koristiti isto ime za lokalnu varijablu unutar više procedura

Page 22: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

22

Varijable unutar modula

• dostupne svim procedurama unutar modula• deklariraju se sa Private ili Dim u Declarations odjeljku modulana vrhu programskog koda modula

Private intTemp As Integer

Varijable za sve module

• da bi varijable na razini modula učinili dostupnima ostalimmodulima upotrebljava se riječ Public za deklariranje varijable

Public intTemp As Integer

Page 23: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

23

Napredne teme o varijablama

Javne protiv lokalnih varijabli

Mogu postojati varijable istog imena u različitim područjima, npr:javnu varijabla imena Temp, i lokalnu varijablu unutar procedure imena Temp

• Pozivanje varijable Temp unutar procedure će pristupiti lokalnojvarijabli, a pozivanje varijable Temp izvan procedure će pristupitijavnoj varijabli.

• Javna varijabla na razini modula može biti pozvana iz procedure određivanjem te varijable s imenom modula.

Page 24: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

24

Public Temp As Integer

Sub Test()Dim Temp As IntegerTemp = 2 ' Temp has a value of 2.MsgBox Form1.Temp ' Form1.Temp has a value of 1.End Sub

Private Sub Form_Load()Temp = 1 ' Set Form1.Temp to 1.End Sub

Private Sub Command1_Click()TestEnd Sub

Općenito kad varijable imaju isto ime ali različito područjedjelovanja, lokalnija varijabla uvijek zasjenjuje (prije joj se pristupa) manje lokalnu varijablu.

Page 25: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

25

Zasjenjivanje svojstava forme i kontrola

Unutar modula forme, lokalne varijable koje imaju isto ime kao i kontrola na formi, zasjenjuju te kontrole:

Private Sub Form_Click()Dim Text1,BackColor‘ Pretpostavimo da postoji i kontrola‘ na formi nazvana Text1.Text1 = “Variable” ‘ Varijabla zasjenjuje kontrolu.Me.Text1 = “Control” ‘ Morate ozna čiti s Me za

‘ pristup kontroli.Text1.Top = 0 ‘ Ovo će izazvati pogrešku!Me.Text1.Top = 0 ‘ Morate ozna čiti s Me za

‘ pristup kontroliBackColor = 0 ‘ Varijabla zasjenjuje kontrolu.Me.BackColor = 0 ‘ Morate ozna čiti s Me za pristup

‘ svojstvu kontrole.End Sub

Page 26: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

26

Korištenje varijabli i procedura istog imena

• Varijabla u modulu ne može imati isto ime kao i bilo kojaprocedura ili tip postavljen u modulu, ali može imati isto imekao i javna procedura, tip ili varijabla iz drugog modula

• U tom slučaju kad se pristupa varijabli iz drugog modula onamora biti označena imenom modula

• Bolje je u modulima forme koristiti imena varijabli drugačijaod imena kontrola na toj formi

Page 27: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

27

Statičke varijable

Osim područja djelovanja varijable imaju i vrijeme trajanja(vrijeme tijekom kojeg zadržavaju svoju vrijednost). � Javne varijable i varijable na razini modula - čuvaju se cijelo vrijemetrajanja aplikacije

� Lokalne varijable deklarirane sa Dim postoje samo za vrijeme izvođenjaprocedura u kojoj su deklarirane

� Statičke varijable su lokalne varijable deklarirane sa neredbom Static ali zarazliku od onih deklariranih sa Dim čuvaju vrijednost za čitavo vrijemetrajanja aplikacije

Function RunningTotal(num)Static ApplesSoldApplesSold = ApplesSold + numRunningTotal = ApplesSold

End Function

Page 28: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

28

• Isti rezultat mogli ste dobiti i deklariranjem varijable ApplesSoldna razini modula, ali u tom slučaju pošto je to javno dostupnavarijabla na razini modula postoji opasnost da joj ostale procedure mogu pristupiti i promijeniti vrijednost

• Kako bi sve lokalne varijable u proceduri učinili statičkim, postavite naredbu Static na početak poglavlja procedure, pa će svelokalne varijable u proceduri biti statičke bez obzira da li će bitideklarirane sa Static, Dim ili Private.

Static Function RunningTotal(num)

Page 29: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

29

KonstanteKonstanta je smisleno ime koje zauzima mjesto broja ili teksta koji se nećemijenjati, a koristi se radi poboljšanja čitljivosti koda i radi lakšegodržavanja.

Postoje dvije vrste konstanti:

• Ugrađene ili sistemski određene konstante dane od aplikacija i kontrola(popisane su u bibliotekama objekata VB i VBA u Object browseru i počinjusa prefiksom vb)

• Simbolične ili korisnički određene konstante se postavljaju korištenjemnaredbe Const

• Može se desiti da dvije biblioteke objekata imaju istoimene konstanterazličitih vrijednosti, pa da bi se izbjegla greška poziv konstante se možeodrediti slijedećom sintaksom:

[imebiblioteke.][imemodula.]imekonstante

Page 30: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

30

Stvaranje vlastitih konstanti

• Pravila za dodjeljivanje imena su ista kao i za varijable

[Public|Private] Const constantname[As type] = expression

• Expression - sastoji od broja ili teksta te operatora, te u njemu nemožete koristiti pozive funkcija.

Const conPi = 3.14159265358979Public Const conMaxPlanets As Integer = 9Const conReleaseDate = #1/1/95#Public Const conVersion = "07.10.A"Const conCodeName = "Enigma”

• Možete čak i odrediti konstante pozivom prethodno određenihkonstanti:

Const conPi2 = conPi * 2

Page 31: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

31

• Za područje korisnički određenih konstanti vrijede ista pravilakao i za varijable

Page 32: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

32

Tipovi podataka

• Osim imena, varijable imaju i tip podatka koji određuje kakav podatak možebiti pohranjen u nju

• Tip podatka varijable određuje kako će u računalnoj memoriji biti posloženibitovi koji sadrže podatak.

• Ako ne odredite tip podatka varijabla će biti određena tipom podatka Variant.

• Variant može sadržavati puno različitih tipova podataka u različitimsituacijama.

• Bolje je ako znate da će varijabla uvijek sadržavati podatke određenog tipadodijeliti tip varijabli.

• Osim varijablama tipovi podataka dodjeljuju se i argumentima funkcija, matricama ...

Page 33: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

33

Private I As IntegerDim Amt As DoubleStatic YourName As String

Public BillsPaid As Currency

U liniji Declarations odjeljka može biti više definicija

Private I As Integer, Amt As DoublePrivate YourName As String, BillsPaid As Currency

Private Test, Amount, J As Integer

Page 34: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

34

Brojčani tip podatka

• Integer (cijeli broj) - 16 bita (2 bajta) - %

• Long (dugi cijeli broj) - 32 bita (4 bajta) - &

- za varijable sa decimalnim dijelom:

• Single (jednostruka preciznost pomičnog zareza) -32 bita (4 bajta) - !

• Double (dvostruka preciznost pomičnog zareza) - 64 bita (8 bajta) - #

• Currency (valuta - do 4 znamenke desno od decimalnog zareza i petnaest znamenki lijevo) - precizan tip podatka s nepomičnim zarezom -64 bita (8 bajta) - @

Page 35: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

35

• Single i Double - veći opseg od Currency ali manja preciznost

• Single i Double mogu biti izraženi kao:

mmmEeee (za Single), npr. 3.402823E+38 (3.402823*1038)

mmmDeee (za Double), npr. 1.79769313486232D+308 (1.797*10308)

gdje mmm predstavlja mantisu a eee eksponent (potenciju broja 10).

Page 36: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

36

Tip podatka Byte

• Ako varijabla sadrži binarne podatke, odredite je kao matricu tipaByte

• Opseg tipa Byte (0-255)

• U memoriji zauzima 8 bita (1 bajt)

Page 37: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

37

Tip podatka String

• Varijabla koja uvijek sadržava tekst, a nikad brojčanu vrijednostdefinira se tipom String

• On je u pravilu promjenljive duljine, a može se definirati i string stalne duljine sintaksom

String * veličina

Dim Ime As String * 50 ‘ string koji će uvijek biti dug‘ 50 karaktera,

‘ ako mu dodijelimo manje, on će sadržavati‘ razmake, ako mu dodijelimo više, Visual Basic će‘ odbaciti višak

Page 38: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

38

Razmjena stringova i brojeva

Moguće je dodijeliti string brojčanoj vrijednosti, i brojčanu vrijednostvarijabli stringa:

Private Sub Command1_Click()

Dim intX As IntegerDim strY As StringstrY = "100.23"intX = strY ‘ Proslje đivanje stringa broj čanoj varijabli.List1.AddItem Cos(strY) ‘ Ispisuje kosinus broja u

‘ stringu u okvir s popisom.strY = Cos(strY) ‘ Proslje đuje kosinus u

‘ varijablu stringaText1.Text = strY ‘ Varijabla stringa se ispisuje

‘ u text box-u

End Sub

Page 39: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

39

• Visual Basic će automatski prilagoditi varijable prikladnom tipupodatka

• Treba biti oprezan kod razmjene stringova i brojeva, prosljeđivanjevrijednosti koja nije brojčana u string u ovom primjeru uzrokovat ćepojavu pogreške tijekom izvođenja.

Page 40: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

40

Tip podatka Boolean

• Varijabla koja će sadržavati točno/netočno, da/ne, uključeno/isključeno informaciju

• Default vrijednost Boolean tipa je False

• U memoriji zauzima 16 bita (2 bajta)

Page 41: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

41

Tip podatka Date

• Dodjeljuje se varijablama koje sadrže datum

• Kad se ostali brojčani tipovi podataka pretvaraju u tip Date, vrijednosti lijevo od decimalne točke predstavljaju podatak datuma, dok vrijednosti s desne strane decimalne točke predstavljaju vrijeme

• U memoriji zauzima 64 bita (8 bajta)

Page 42: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

42

Tip podatka Object

• Spremaju se u memoriji kao 32-bitne adrese koje označuju objekte unutarvaše ili neke druge aplikacije

• Varijabla definirana kao Object kasnije može biti određena naredbom Set tako da pokazuje na bilo koji postojeći objekt prepoznat od aplikacije

Dim objDb As ObjectSet objDb = OpenDatabase(“c:\Vb6\Biblio.mdb”)

• Umjesto varijable tipa Object bolje je koristiti određene klase (kaoTextBox umjesto Control ili Database umjesto Object)

• Kad radite s objektima drugih aplikacija, umjesto korištenja tipa Variant iliopćenitog tipa Object, odredite objekte onako kako su ispisani u popisuklasa unutar Object Browsera

Page 43: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

43

Tip podatka Variant• Varijabla tipa Variant je sposobna spremiti sve sistemski određene tipovepodataka, a Visual Basic izvodi sve potrebne pretvorbe

Dim NekaVrijednost ‘ podrazumijevano VariantNekaVrijednost = “17” ‘ NekaVrijednost sdržava “17”

‘ (dvoslovni string)NekaVrijednost = NekaVrijednost – 15‘ NekaVrijednost sad sadrži broj čanu vrijednost 2.NekaVrijednost = “U” & NekaVrijednost ‘ NekaVrijednostsad sadrži “U2” (dvoslovni string)

Iako možete izvoditi ovakve radnje na varijablama tipa Variant bez puno brige o tipu podatka koji sadrže, postoje neke zamke koje bi trebalo zaobići:

• Kod izvođenja aritmetičkih operacija na varijablama tipa variant, ona mora sadržavati neku brojčanu vrijednost

• Ako spajate stringove umjesto operatora + upotrijebite operator &

Page 44: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

44

Tip Variant može sadržavati i tri posebne vrijednosti: Empty, Null i Error:

• Empty - varijabla tipa variant ima vrijednost Empty prije nego joj se nekavrijednost doda

If IsEmpty(Z) Then Z=0

• Null - se obično koristi u aplikacijama baza podataka za ukazivanje na nepoznati ili nepostojeći podatak. Vrijednost Null ima neke jedinstvene osobine:

• Izrazi koji uključuju vrijednost Null uvijek će kao rezultat dati vrijednost Null

• Prosljeđivanje Null-a, varianta koji sadrži Null ili izraza koji rezultira sa Null, kao argument većini funkcija, uzrokuje rezultatom funkcije Null

• Null se širi kroz ugrađene funkcije koje vraćaju podatke tipa Variant

Page 45: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

45

Z=Null

If IsNull(X) And IsNull(Y) ThenZ = Null

ElseZ = 0

End If

Vrijednost Null može se dodijeliti samo varijabli tipa Variant. Kao rezultat bilo koje Function procedure možete dobiti vrijednost Null ako je rezultat spremljen u varijabli tipa Variant

• Error - posebna vrijednost koja se u varijabli tipa Variant koristi zaukazivanje na stanje pogreške koja se pojavila u proceduri štoomogućava poduzimanje postupaka temeljenih na vrijednostipogreške

Page 46: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

46

Pretvaranje tipova podataka

Funkcija pretvaranja Pretvara izraz u tipCbool BooleanCbyte ByteCcur CurrencyCdate DateCDbl DoubleCint IntegerCLng LongCSng SingleCStr StringCvar VariantCVErr Error

Vrijednosti koje prosljeđujete funkcijama za pretvorbu moraju bitiispravne za tip podatka u koji će biti pretvorene ili će se pojavitipogreška

Page 47: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

47

Uvod u procedure

• Aplikacija u Visual basicu sastoji se od manjih logičkih dijelovanazvanih procedurama (potprogramima)

• Dvije su velike prednosti programiranja s procedurama:

• dopuštaju razbijanje aplikacija u zasebne logičke cjeline

• mogu se upotrijebiti kao blokovi za izgradnju drugih aplikacija

Vrste procedura:

• Sub procedure - ne vraćaju vrijednost• Function procedure - vraćaju vrijednost• Property procedure - vraćaju i dodjeljuju vrijednosti i postavljajupokazivače prema objektima

Page 48: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

48

Sub procedure

• Sub procedura je dio programskog koda koji se izvršava kaoodgovor na događaj

[Private|Public][Static]Sub imeprocedure (argumenti)izraziEnd Sub

• Sub procedure mogu biti postavljeni u standardnim modulima, modulima klase i modulima forme.

• Sub procedure su u pravilu tipa Public u svim modulima što značida mogu biti pozvani bilo gdje iz aplikacije.

Page 49: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

49

Dva su tipa Sub procedura:

• opće procedure (general procedures)

• procedure događaja (event procedures)

Page 50: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

50

Opće procedure (general procedures)

• Kazuju aplikaciji kako izvršiti određeni zadatak.

• Kad se jednom odredi opća procedura, nju mora pozvati aplikacija

• Kreiraju se zbog moguće potrebe izvođenja iste akcije u različitimprocedurama događaja (event procedurama)

• Dobra strategija programiranja je postavljanje zajedničkih izraza u odvojenu proceduru (opću proceduru) te omogućavanjeprocedurama događaja da ih pozivaju

Page 51: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

51

Procedure događaja (event procedures)

Kad objekt u Visual Basicu prepozna pojavljivanje događaja, automatski poziva proceduru događaja s imenom jednakom događaju

• ime procedure događaja kontrole sastoji se od imenakontrole, podvlake (_), i imena događajacmdPlay_Click

• ime procedure događaja forme sastoji se od riječi Form, podvlake i imena događajaForm_ClickMDIForm_Load (za MDI formu)

• Visual Basic sam automatski kreira predloške za event procedure tako da se u okviru s popisom objekata odabere objekt, a zatim se u okviru s popisom procedura za taj objekt odabere procedura.

Page 52: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

52

Function procedure

• Visual Basic sadrži ugrađene ili stvarne funkcije kao što su Sqr, Cosili Chr

• Za pisanje vlastite procedure tipa Function možete upotrijebitinaredbu Function

[PrivateđPublic][Static]Function procedurename (arguments) [As type]statementsEnd Function

• Function procedure su odvojene procedure koje mogu prihvatitiargumente, izvršiti niz izraza i promijeniti vrijednost njenihargumenata

• Function procedure mogu vratiti neku vrijednost proceduri iz koje supozvani

Page 53: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

53

• Funkciju pozivate postavljanjem imena Function procedure s argumentima na desnu stranu veće naredbe ili izraza( povratnavrijednost=funkcija() )

• Function procedure imaju tipove podataka kao i varijable. Tako jeodređen i tip povratne vrijednosti

• Vrijednost vraćate dodjeljujući je samom imenu Function procedure (imepotprograma)

Function Hypotenuse (A As Integer, B As Integer) As StringHypotenuse = Sqr( A ^ 2 + B ^ 2)

End Function

Page 54: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

54

Rad s procedurama

Pozivanje Sub procedure

• Ne možete je pozvati korištenjem njenog imena unutar izraza

• Poziv Sub procedure je samostalni izraz

• Sub procedura ne vraća vrijednost u svom imenu kao funkcija, alisubprocedure mogu mijenjati vrijednosti bilo koje varijable koja imje proslijeđena

Dva su načina pozivanja Sub procedure:

Call MyProc (FirstArgument, SecondArgument)MyProc FirstArgument, SecondArgument

Page 55: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

55

Pozivanje Function procedure

‘ All of the following statements would call a‘ function named ToDec

Print 10 * ToDecX = ToDecIf ToDec = 10 Then Debug.Print "Out of Range"X = AnotherFunction(10 * ToDec)

Također je moguće pozvati funkciju na isti način kao i Sub proceduru:

Call Year(Now)Year Now

Page 56: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

56

Pozivanje procedura u drugim modulima

• Procedure u formama (moraju pokazivati na modul forme u kojem se nalazi procedura)

Call Form1.SomeSub(arguments)

• Procedure u modulima klase. Pozivanje procedure u moduluklase zahtijeva da poziv procedure bude označen varijablom kojapokazuje na pojavu klase. DemoClass je pojava klase Class1.

Dim DemoClass as New Class1DemoClass.SomeSub

• Za razliku od forme ime klase ne smije biti korišteno kaopokazivač kod poziva procedure iz te klase.

• Pojava klase mora prvo biti određena kao varijabla objekta (u ovom slučaju DemoClass), pa onda pozvana imenom varijable.

Page 57: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

57

• Procedure u standardnim modulima

• Ako je ime procedure jedinstveno, u poziv ne morate uključiti i ime modula, poziv unutar ili izvan modula će uvijek ukazivati na tu jedinstvenu proceduru

• Ako dva ili više modula sadrže procedure istog imena, treba ih označiti s imenom modula

Modul2.ObicnoIme(argumenti)

Page 58: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

58

Prosljeđivanje argumenata procedurama

• Programski kod u proceduri obično treba neku informaciju o stanjuaplikacije kako bi obavila svoj posao.

• Takva informacija se obično sastoji od varijabli koje se prosljeđujuproceduri kad je se poziva.

• Kad se varijabla prosljeđuje proceduri ona se naziva argument

• Ako se drukčije ne navede, argumenti su tipa Variant, a mogu biti i bilo kojeg drugog tipa

Page 59: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

59

Prosljeđivanje argumenata s vrijednošću (By Value)

• Kad se argument proslijedi s vrijednošću, prosljeđuje se samokopija varijable

• Ako joj procedura promijeni vrijednost, promjena utječe samo nakopiju a ne na samu varijablu

• Koristimo ByVal kako bi ukazali na argument kojem je dodijeljenavrijednost.

Sub PostAccounts(ByVal intAcctNum as Integer).. ' Ovdje postavite izraze.

End Sub

Page 60: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

60

Prosljeđivanje argumenta upućivanjem (By Reference)

• Prosljeđivanje argumenta upućivanjem daje proceduri pristupstvarnom sadržaju varijable na položaju njezine memorijske adrese

• Kao rezultat, vrijednost varijable može biti trajno promijenjena odprocedure kojoj je proslijeđena

• Ovaj način prosljeđivanja je standardni način u Visual Basicu

• Ako definirate tip podatka argumenta proslijeđenog upućivanjem, u argument morate staviti vrijednost takvog tipa

• Ovo načelo možete zaobići tako da proslijedite izraz umjesto podatkakao argument

Page 61: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

61

Sub PozivPotprograma()

Dim intX As IntegerintX = 12 * 3Napisi(intX)

End Sub

Sub Napisi(Traka As String)

MsgBox Traka ‘ Vrijednost varijable Traka je string‘“36”.

End Sub

Page 62: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

62

Korištenje neobaveznih argumenata

• Argumente procedure možete odrediti kao neobaveznepostavljanjem naredbe Optional u popisu argumenata

• Ako odredite neobavezan argument, slijedeći argumenti u popisuargumenata također moraju biti neobavezni i određeni naredbomOptional

Dim strName As StringDim strAddress As String

Sub ListText(Optional x As String, Optional y _As String)

List1.AddItem xList1.AddItem y

End Sub

Page 63: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

63

Private Sub Command1_Click()strName = "yourname"strAddress = 12345 ‘ Pribavljena su oba argumenta.Call ListText(strName, strAddress)

End Sub

Page 64: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

64

Slijedeći kod ne pribavlja sve neobavezne argumente:

Dim strName As StringDim varAddress As Variant

Sub ListText(x As String, Optional y As Variant)List1.AddItem xIf Not IsMissing(y) Then

List1.AddItem yEnd If

End Sub

Private Sub Command1_Click()strName = "yourname" ‘ Drugi argument nije

‘ pibavljenCall ListText(strName)

End Sub

Prethodni primjer pokazuje kako provjeriti nedostaje li nekineobavezni argument korištenjem funkcije IsMissing.

Page 65: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

65

Pribavljanje standarda za neobavezni argument

Također je moguće odrediti standardnu vrijednost za neobavezniargument, ako neobavezni argument ne bude proslijeđen proceduri:

Sub ListText(x As String, Optional y As Integer = 12345)List1.AddItem xList1.AddItem y

End Sub

Private Sub Command1_Click()strName = "yourname" ‘ Drugi argument nije

‘ pribavljenCall ListText(strName) ‘ Dodaje "yourname” i "12345"

End Sub

Page 66: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

66

Korištenje neodređenog broja argumenata

• Broj argumenata u pozivu procedure mora biti isti kao i u određivanjuprocedure• Korištenje naredbe ParamArray omogućuje vam da odredite kako ćeprocedura prihvatiti neodređen broj argumenata

Dim x As IntegerDim y As IntegerDim intSum As Integer

Sub Sum(ParamArray intNums())For Each x In intNums

y = y + xNext xintSum = y

End Sub

Private Sub Command1_Click()Sum 1, 3, 5, 7, 8List1.AddItem intSum

End Sub

Page 67: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

67

Stvaranje jednostavnijih izraza s imenovanimargumentima• Za većinu ugrađenih funkcija, izraza i postupaka Visual Basic pružamogućnost korištenja imenovanih argumenata kao prečica za pisanjevrijednosti argumenta

• S imenovanim argumentom možete pribaviti bilo koji ili sve argumente, bilo kojim redom, dodjelom vrijednosti imenovanom argumentu na slijedećinačin:

MojArgument:="Neka vrijednost”Function ListText(strName As String, Optional strAddress As _String)

List1.AddItem strNameList2.AddItem strAddress

End Sub

Private Sub Command1_Click()ListText strAddress:=”12345”, strName:="Your Name"

End Sub

Page 68: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

68

Uvod u strukturu kontrola

Strukture odluke

Procedure Visual Basica mogu ispitivati uvjete te ovisno o rezultatima ispitivanja, izvesti različite operacije.

Strukture odluke koje Visual Basic podržava uključuju:

• If...Then

• If...Then...Else

• Select Case

Page 69: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

69

If...Then

• Sintaksa s jednom linijom If uvjet Then izraz

• Sintaksa višelinijskog bloka If uvjet Thenizrazi

End If

• Uvjet Visual Basic tumači kao vrijednost True ili False

• Uvjet je obično usporedba ali može biti bilo koji izraz koji se tumači kao brojčana vrijednost

• Brojčana vrijednost nule jednaka je False, a svaka brojčanavrijednost različita od nule smatra se kao True

• Ako je uvjet jednak True, VB izvršava sve naredbe koje slijedenaredbu Then

Page 70: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

70

If...Then...Else

If...Then...Else blok se upotrebljava za određivanje nekolikoblokova izraza, od kojih će se izvršiti jedan:

If uvjet1 Then[blokizraza-1][ElseIf uvjet2 Then[blokizraza-2]] ...[Else[blokizraza-n]]End If

• Blok izraza koji počinje naredbom Else, će Visual Basic izršiti akoni jedan od uvjeta ne da rezultat True

• If...Then...ElseIf je samo poseban slučaj If...Then...Else

Page 71: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

71

Na primjer vaša aplikacija mogla bi izvesti različite akcije ovisno o tome koja je kontrola kliknuta.

Private Sub mnuCut_Click (Index As Integer)If Inde x = 0 Then ‘ Cut command.

CopyActiveControl ‘ Call general procedures.ClearActiveControl

ElseIf Inde x = 1 Then ‘ Copy command.CopyActiveControl

ElseIf Inde x = 2 Then ‘ Clear command.ClearActiveControl

Else ‘ Paste command.PasteActiveControl

End IfEnd Sub

Page 72: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

72

Select Case• Alternativa strukturi If...Then...Else, ali je programski kod čitljivijikad postoji više izbora

Select Case testexpression[Case expressionlist1

[statementblock-1]][Case expressionlist2

[statementblock-2]]...[Case Else

[statementblock-n]]

End Select

Page 73: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

73

Primjer:Private Sub mnuCut_Click (Index As Integer)

Select Case IndexCase 0 ' Cut command.

CopyActiveControl ' Call general procedures.ClearActiveControl

Case 1 ' Copy command.CopyActiveControl

Case 2 ' Clear command.ClearActiveControl

Case 3 ' Paste command.PasteActiveControl

Case ElsefrmFind.Show ' Show Find dialog box.

End SelectEnd Sub

• Izraz Select Case ocjenjuje izraz jednom na početku strukture dokstruktura If...Then...Else može ocijeniti različit izraz u svakomizrazu ElseIf

Page 74: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

74

Strukture petlje

• Strukture petlje omogućuju vam ponavljajuće izvođenje jedne iliviše linija programskog koda

• Strukture petlje koje VB podržava uključuju:

• Do...Loop

• For...Next

• For Each...Next

Page 75: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

75

Do...Loop

• Upotrijebite petlju tipa Do za izvođenje bloka izraze neodređenibroj puta.

• Postoji nekoliko varijacija izraza Do...Loop, ali svaka ocjenjujebrojčani uvjet kako bi odlučila hoće li nastaviti izvođenje.

• Kao i kod strukture If...Then, uvjet mora biti vrijednost ili izraz kojise može ocijeniti kao False (nula) ili True (različit od nule).

Do While uvjetizrazi ‘izrazi će se izvršavati sve dok uvjet ima vrijednost TrueLoop

• Ako uvjet ima vrijednost False (nula), preskaču se svi izrazi.

Page 76: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

76

• Ako uvjet ima vrijednost True (različit od nule), Visual Basic izvršava sve izraze i zatim se vraća na naredbu Do While te ponovnoprovjerava uvjet

• Naredbe se nikad ne izvode ako uvjet ima početnu vrijednost False.

Page 77: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

77

Function BrojiStringove (dugistring, cilj)

Dim položaj, broja čpoložaj = 1 ‘ InStr vra ća pol. prvog pojav. cilja

Do While InStr(položaj, dugistring, cilj)položaj = InStr(položaj, dugistring, cilj)+ 1broja č = broja č + 1Loop

BrojiStringove = broja čEnd Function

Ako ciljni string ne postoji u drugom stringu, funkcija InStr će imativrijednost 0, i petlja se neće izvršiti.

Page 78: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

78

• Ovakva varijacija garantira barem jedno izvođenje izraza:

DoizraziLoop While uvjet

• Dvije druge varijacije su slične prethodnim dvjema, osim što se petlja vrti sve dok je vrijednost uvjeta False, a ne True.

petlja nikad ili više puta petlja barem jednom

Do Until uvjet Doizrazi izraziLoop Loop Until uvjet

Page 79: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

79

For...Next

• Petlja For...Next je bolji izbor od Do...While kad znate da morateizvesti izraze određen broj puta

• Za razliku od petlje tipa Do...Loop, Petlja tipa For koristi varijablunazvanu brojač kojoj se vrijednost povećava ili smanjuje kod svakogponavljanja petlje

For brojač = početak To kraj [Step korak]izraziNext [brojač]

• Svi argumenti brojač, početak, kraj i korak su brojčani.

• Argument korak može biti pozitivan ili negativan.

Page 80: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

80

• Ako je korak pozitivan,početak mora biti manji ili jednak krajuili se izrazi unutar petlje neće izvršiti.

• Ako je korak negativan, početak mora biti veći ili jednak krajukako bi se izveo glavni dio petlje.

• Ako Step nije zadan, vrijednost koraka je 1.

Page 81: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

81

Private Sub Form_Click()Dim I As IntegerFor I = 0 To Screen.FontCountPrint Screen.Fonts(I)NextEnd Sub

Sub HightlightButton(MyControl As Variant)Dim i As IntegerFor i = 0 To frmVCR.Controls.Count – 1

If TypeOf frmVCR.Controls(i) Is Shape ThenIf frmVCR.Controls(i).Name = MyControl Then

frmVCR.Controls(i).Visible = TrueElse

frmVCR.Controls(i).Visible = FalseEnd If

End IfNextEnd Sub

Page 82: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

82

For Each...Next

• Petlja tipa For Each...Next je slična petlji tipa For...Next, aliponavlja grupu izraza za svaki element u kolekciji elemenata ili u matrici umjesto ponavljanja izraza određen broj puta

• Ovaj način je posebno koristan ako ne znate koliko se elemenatanalazi u kolekciji

For Each element In grupaizraziNext element

Page 83: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

83

Sub ListTableDefs()

Dim objDb As DatabaseDim MyTableDef As TableDef

Set objDb = OpenDatabase(“c:\vb\biblio.mdb” _, True, False)

For Each MyTableDef In objDb.TableDefs()List1.AddItem MyTableDef.Name

Next MyTableDef

End Sub

Page 84: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

84

Kod korištenja petlji tipa For Each...Next imajte na umusljedeća ograničenja:

• Za kolekcije, element može biti smo varijabla tipa Variant, općavarijabla tipa Object ili objekt ispisan u pretraživaču objekata.

• Za matrice, element može biti smo varijabla tipa Variant.

• Ne možete koristiti petlju tipa For Each...Next s matricamakorisničkog tipa jer varijabla tipa Variant ne može sadržavatikorisnički tip podatka.

Page 85: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

85

Rad s strukturama kontrola

Ugniježđene strukture kontrola

• Možete postaviti strukture kontrola unutar drugih struktura kontrola(kao blok If...Then unutar petlje tipa For...Next)

• Za strukturu kontrole koja je postavljena unutar druge strukturekontrole kaže se da je ugniježđena

• Strukture kontrola u Visual Basicu mogu biti ugniježđene u proizvoljnom broju razina

• Uobičajena je praksa uvući tijelo strukture ili petlje kako bi ugniježđene strukture odluka ili petlje bile čitljivije

Page 86: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

86

Private Sub Form_Click()

Dim EPismo, TPismo

For Each EPismo In Screen.Fonts()

For Each TPismo In Printer.Fonts()

If EPismo = TPismo Then

Print EPismo

End If

Next TPismo

Next EPismo

End Sub

• Prva naredba Next zatvara unutarnju petlju tipa For a posljednjanaredba Next zatvara vanjsku petlju tipa For

• Slično je i sa ugniježđenim petljama If...End If i Do Loop

Page 87: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

87

Izlaz iz strukturne kontrole• Naredba Exit omogućuje vam direktan izlaz iz petlji tipa For i Do, tepotprograma tipa Sub i Function.

• Sintaksa naredbe Exit je jednostavna; izraz Exit For može se pojavitikoliko je potrebno puta unutar petlje tipa For, a izraz Exit Do može se pojaviti koliko je potrebno puta unutar petlje tipa Do

For brojač = početak To kraj [Step korak][blokizraza][Exit For][blokizraza]Next [brojač[, brojač][,...]]

Do [{While | Until} uvjet][blokizraza][Exit Do][blokizraza]Loop

Page 88: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

88

Private Sub Form_Click()

Dim EPismo, TPismo

For Each EPismo In Screen.Fonts()

For Each TPismo In Printer.Fonts()

If EPismo = TPismo ThenPrint EPismoExit For ‘ Izlaz iz unutarnje petlje.End If

Next TPismo

Next EPismo

End Sub

• Efikasnija verzija dane funkcije će izaći iz petlje čim se pronađe prvozajedničko pismo

• Kao što pokazuje ovaj primjer, naredba Exit gotovo se uvijek pojavljujeunutar petlji tipa If ili Select Case ugniježđenih unutar druge petlje

Page 89: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

89

Izlaz iz potprograma tipa Sub ili Function

• Izraz Exit Sub se može pojaviti potreban broj puta, bilo gdje unutar tijelapotprograma tipa Sub (isto vrijedi i za Exit Function unutar potprograma tipaFunction)

• Izrazi Exit Sub i Exit Function su korisni kad je potprogram napravio sve što jetrebao i može se trenutno vratiti

‘ program ispisuje samo prvo pismo zajedni čko pisa ču i‘ ekranu koje na đePrivate Sub Form_Click()

Dim EPismo, TPismoFor Each EPismo In Screen.Fonts()

For Each TPismo In Printer.Fonts()If EPismo = TPismo Then

Print EPismoExit Sub ‘ Izlaz iz potprograma.

End IfNext TPismo

Next EPismoEnd Sub

Page 90: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

90

Matrice

• Matrice su nizovi varijabli koje imaju isto ime, ali koriste broj(indeks) koji ih razlikuje

• Matrice imaju donje i gornje granice.

• Svi elementi matrice imaju isti tip podatka.

• Možete odrediti matricu bilo kojeg osnovnog tipa podatka, uključujući i korisnički definirane tipove.

• Postoje dvije vrste matrica:

• matrice stalne veličine (uvijek ostaju iste veličine)

tri su načina definiranja matrice stalne veličine:

- Public za stvaranje javne matrice (u declarations sectionu modula)

Page 91: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

91

- Private za stvaranje matrice na području modula (u declarations sectionu modula)

- Private za stvaranje lokalne matrice (u proceduri)

• dinamičke matrice (veličina im se može mijenjati tijekom radaaplikacije)

Kod matrica varijabli (o kojima se sada govori) ne mogu se ubacivatini vaditi elementi iz sredine matrice za razliku od matrica kontrolakoje određujemo postavljanjem svojstva Index kontrole tijekomizrade aplikacije.

Page 92: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

92

Određivanje gornje i donje granice matrice

Gornja granica ne smije biti izvan opsega tipa podatka Long (od2,147,483,648 do 2,147,483,647).

Dim Broja č(14) As Integer ‘ 15 elemenata s‘ indeksima od 0 do 14

Dim Zbrojevi(20) As Double ‘ 21 element s indeksima‘ od 0 do 20

Standardna donja granica je 0 ako drukčije izričito ne navedemo, npr:

Dim Broja č(1 To 15) As IntegerDim Zbrojevi(100 To 120) As String

Page 93: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

93

Matrice koje sadrže druge matrice

Moguće je stvoriti matricu tipa Variant i napuniti je drugimmatricama drugačijeg tipa podatka.

Private Sub Command1_Click()Dim intX As Integer ‘ Definiranje varijable broja ča.‘ Definiranje i popunjavanje matrice s cijelim brojevima.Dim countersA(5) As IntegerFor intX = 0 To 4

countersA(intX) = 5Next intX‘ Definiranje i popunjavanje matrice sa stringovima.Dim countersB(5) As StringFor intX = 0 To 4

countersB(intX) = "hello”Next intXDim arrX(2) As Variant ‘ Definiranje nove matrice sa dva

‘ elementa

Page 94: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

94

arrX(1) = countersA() ‘ Popunjavanje ove matrice‘ sa prethodne dvije matrice.

arrX(2) = countersB()MsgBox arrX(1)(2) ‘ Prikaz članovaMsgBox arrX(2)(3)

End Sub

Page 95: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

95

Višedimenzionalne matrice

‘ dvodimenzionalna matrica veli čine 10 puta 10Static Matrica (9 , 9) As Double

‘ dvodimenzionalna matrica veli čine 10 puta 10 saizri čitim donjim granicamaStatic Matrica (1 To 10, 1 To 10) As Double

‘ trodimenzionalna matrica čiji ukupni broj elemenata

je umnožak 4*10*15=600Dim MultiD(3, 1 To 10, 1 To 15)

Page 96: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

96

Dinamičke matrice

• Dinamičke matrice su jedna od najelastičnijih i najprikladnijihosobina Visual Basica

• Imaju sposobnost promjene veličine tijekom rada - djelotvornije se iskorištava memorija

Kako stvoriti dinamičku matricu:

• Definirajte matricu jednim od prije navedenih načina dajući jojpraznu listu dimenzija

Dim DinMatrica()

• Postavite potreban broj elemenata naredbom ReDim

ReDim DinMatrica(X+1)

Page 97: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

97

• Naredba ReDim može se pojaviti samo unutar procedure

• Svaka naredba ReDim može mijenjati broj elemenata, kao i donje i gornje granice, svakoj dimenziji, ali broj dimenzija matrice ne možebiti promijenjen

ReDim DinMatrica(4 To 12)

• Granice dinamičke matrice mogu biti određene koristeći varijable:

ReDim DinMatrica(X, Y)

Page 98: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

98

Čuvanje sadržaja dinamičkih matrica

• Svaki put kad izvršite naredbu ReDim, sve vrijednosti trenutnospremljene u matrici su izgubljene

• Visual Basic postavlja sve vrijednosti matrice na Empty (u matricetipa Variant), nulu (u brojčane matrice), prazni string (u matricestringa) ili Nothing (u matrice objekata).

• Ako želite promijeniti veličinu matrice bez gubljenja podataka u njojkoristite naredbu ReDim zajedno s naredbom Preserve

ReDim Preserve DinMatrica(UBound(DinMatrica)+1)

• Korištenjem naredbe Preserve možete promijeniti samo gornjugranicu posljednje dimenzije u višedimenzionalnoj matrici

ReDim Preserve Matrica(10,UBound(Matrica,2)+1)

Page 99: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

99

Rad s objektima

Kod stvaranja aplikacije u Visual Basicu možete:

• Koristiti objekte koje pruža Visual Basic kao što su kontrole, formei objekti za pristup podacima

• Koristiti objekte drugih aplikacija

• Stvoriti vlastite objekte, i odrediti im pripadajuća svojstva i postupke

Page 100: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

100

Što je objekt?

• Objekt je kombinacija programskog koda i podataka koji mogu bitiobrađivani kao cjelina

• Objekt može biti dio aplikacije, kao kontrola ili forma. Cijelaaplikacija također može biti objekt

primjer objekta opisNaredbeni gumb Kontrole na formi, kao naredbeni gumb

i okviri, su objekti

Forma Svaka forma u projektu Visual Basicaje zaseban objekt

Baza podataka Baze podataka su objekti, i sadrže drugeobjekte, kao polja i indekse

Dijagram Dijagram u Microsoft Excelu je objekt.

Page 101: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

101

Otkud dolaze objekti?

• Svaki objekt u Visual Basicu je određen klasom• Odnos između klasa i objekata u Visual Basicu bi mogla pojasnitiova dva primjera:

• Kontrole u alatnom okviru Visual Basica predstavljaju klase. Objekt poznat kao kontrola ne postoji dok ga ne stvorite na formi. Kad stvorite kontrolu, stvorili ste kopiju primjera klase te kontrole. Taj primjer klase je objekt kojeg pozivate u svojoj aplikaciji.

• Forma s kojom radite za vrijeme stvaranja aplikacije je klasa. Kadse aplikacija izvodi, Visual Basic stvara objekt - primjer klaseforme.

Page 102: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

102

• Svi objekti stvaraju se kao jednake kopije njihove klase

• Jednom kad postoje kao samostalni objekti, njihova se svojstva mogumijenjati (na primjer, ako na formi kreirate tri naredbena gumba, svakinaredbeni gumb je primjer klase naredbenog gumba)

• Svaki objekt dijeli zajednički komplet svojstava i mogućnosti (svojstva, postupke i događaje), određenih klasom

Page 103: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

103

Što možete s objektima?

• Objekt pruža programski kod koji ne morate pisati

Visual Basic može kombinirati objekte iz drugih izvora

• Možete graditi korisnička rješenja kombinirajući najmoćnije osobineVisual Basica i aplikacija koje podržavaju automatizaciju

• Automatizacija je osobina komponentnog objektnog modela(Component Object Model, COM), industrijskog standarda kojeg koristiaplikacija za izlaganje objekata razvojnim alatima i drugim aplikacijama

• Osim ugrađenih kontrola Visual Basica, možete koristiti i objekte kojepružaju druge aplikacije (MSExcell Chart objekt, MSWord dokument, MSExcell radni list...)

Page 104: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

104

Osnove rada s objektima

• Objekti Visual Basica podržavaju svojstva, postupke i događaje

• Na primjer za objekt Radio, jedno od svojstava je Glasnoća pa bi u programskom kodu to ovako izgledalo:

Radio.Glasno ća = 3

• Na primjer za objekt Telefon jedan od postupaka je Zovi:

Telefon.Zovi 555111

• Na primjer, Radio bi mogao imati događaj “PromjenaGlasnoće” , Telefon bi morao imati događaj “Zvoni”

• Svojstvima mijenjamo karakteristike objekata, postuci su akcijekoje objekti mogu izvesti, a događaji su pokrenuti kad se promijenineki dio objekta

Page 105: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

105

Kontroliranje objekata njihovim svojstvima (properties)

• Neka svojstva mogu se odrediti tijekom stvaranja aplikacije (design time)

• Neka svojstva nisu dostupna tijekom stvaranja, pa zbog toga moratenapisati programski kod koji će ih odrediti tijekom rada aplikacije (run time)

• Svojstva koja možete postavljati i čitati tijekom rada aplikacije zovu se svojstva za čitanje i pisanje (read-write)

• Svojstva koja možete samo čitati tijekom rada zovu se svojstva samo začitanje (read-only)

Page 106: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

106

Postavljanje vrijednosti svojstava

• Vrijednosti svojstava postavljate kad želite promijeniti izgled iliponašanje objekta

• Za postavljanje vrijednosti u svojstvo, upotrijebite sljedeću sintaksu:

objekt.svojstvo = izraz

Text1.Top = 200 ‘ Postavljanje svojstva Top na 200‘ twips.

Text1.Visible = True ‘ Prikaz okvira s tekstom.Text1.Text = “pozdrav” ‘ Ispis “pozdrav” u okviru

‘ s tekstom.

Page 107: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

107

Čitanje vrijednosti svojstava

• Vrijednost svojstva čitate kad želite saznati stanje objekta prije nego štovaš programski kod izvrši određenu akciju

• Koristite sljedeću sintaksu za čitanje vrijednosti svojstva:

varijabla = objekt.svojstvo

• Vrijednost svojstva možete pročitati i u sklopu složenijeg izraza, bezdodjeljivanja vrijednosti svojstva varijabli

Private Sub cmdDodaj_Click()‘ [izrazi]optGumb(n).Top = optGumb(n – 1).Top + 400‘ [izrazi]End Sub

Page 108: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

108

Korištenje postupaka (methods) u kodu

• Kad postupak ne treba argumente, napist ćete programski kod koristećisljedeću sintaksu:objekt.postupak

Picture1.Refresh ‘ Forsira iscrtavanje kontrole.‘(postupak Refresh nema argumente i ne vra ća‘ vrijednost)

• Ako postupak traži više od jednog argumenta, argumente ćete razdvojitizarezima‘ Crtanje plavog kruga s polumjerom od 1200 twips.Forma1.Circle (1600, 1800), 1200, vbBlue

• Ako želite sačuvati vrijednost postupka, morate zatvoriti argumente u zagradeSlika = Clipboard.GetData (vbCFBitmap)

• Ako ne postoji povratna vrijednost, argumenti se zadaju bez zagradaList1.AddItem = “vaše ime” ‘ Dodaje tekst “vaše ime”

‘ u okvir s popisom.

Page 109: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

109

Povezanost objekata

Rad sa zbirkama objekata• Objekti zbirke imaju svoja vlastita svojstva i postupke

• Objektima u objektu zbirke pristupa se kao članovima zbirke

• Na primjer, zbirka kontrola Controls sadrži sve kontrole naodređenoj formi

• Zbirke možete koristiti za pojednostavljivanje programskog kodaako trebate obaviti jednu operaciju na svim objektima u zbirci

Dim MyControl As ControlFor Each MyControl In Form1.Controls‘ Dodavanje imena svake kontrole u okvir s popisom.List1.AddItem MyControl.NameNext MyControl

Page 110: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

110

Dodavanje svojstava i postupaka članovima zbirke

• Postoje dvije općenite tehnike koje možete koristiti za adresiranje članazbirke:

Controls(“List1”) ‘ preko imena članaControls!List1

Controls(3) ‘ preko rednog broja člana

• Kad jednom budete sposobni adresirati sve članove zbirno, ili pojedinečlanove osobno, možete im dodavati svojstva i postupke koristeći jedan odsljedeća dva pristupa:

Controls!List1.Top = 200 ‘ Postavljanje svojstva Top- ili - ‘ kontrole okvira s popisom na 200.DimMyControl As ControlFor Each MyControl In Form1.Controls()MyControl.Top = 200 ‘ Postavljanje svojstva Top svakogNext MyControl ‘ člana na 200.

Page 111: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

111

Objekti koji mogu sadržavati druge objekte• Prednost posjedovanja objekata kao spremnika za druge objekte je u tome dau vašem kodu možete pozvati spremnik kako bi razjasnili koji objekt želitekoristiti• Na primjer, forma obično sadržava jednu ili više kontrola

• Slika prikazuje dvije različite forme koje bi mogli imati u aplikaciji. Objeforme mogu imati okvir s popisom nazvan lstAcctNo. Možete točno odreditikoji okvir želite koristiti pozivanjem forme koja sadrži taj okvir s popisom:

frmReceivable.lstAcctNo.AddItem 1201- ili -frmPayable.lstAcctNo.AddItem 1201

Page 112: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

112

Opće zbirke u Visual BasicuU Visual Basicu postoje neki opći slučajevi gdje jedan objekt sadrži drugeobjekte.

zbirka opis

Forms Sadrži učitane forme.Controls Sadrži kontrole na formi.Printers Sadrži dostupne objekte tipa Printer.

Svojstvo ContainerSvojstvo Container možete upotrijebiti za promjenu spremnika objektaunutar forme. Sljedeće kontrole mogu sadržavati druge kontrole:

• Kontrola okvira (frame)• Kontrola okvira za sliku (picture box)• Kontrola alatne trake (toolbar, samo Professional i Enterprise verzije)

Page 113: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

113

Ovaj primjer prikazuje pomicanje naredbenog gumba naokolo po formi izspremnika u spremnik

Private Sub Form_Click()Static intX As IntegerSelect Case intXCase 0Set Command1.Container = Picture1Command1.Top = 0Command1.Left = 0Case 1Set Command1.Container = Frame1Command1.Top = 0Command1.Left = 0Case 2Set Command1.Container = Form1Command1.Top = 0Command1.Left = 0End SelectintX = intX + 1End Sub

Page 114: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

114

Stvaranje objekata

• Dvoklikom na kontrolu u alatnom okviru (najlakši način)

• Korištenjem programibilnosti Visual Basica za stvaranje objekatatijekom rada aplikacije:

• Možete stvoriti pozive objekta uz pomoć varijabli objekata.

• Možete stvoriti vlastite objekte “iz dijelova” s modulima klase.

• Možete stvoriti vlastite zbirke korištenjem objekta Collection.

Page 115: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

115

Korištenje varijabli objekata

Korištenje varijable objekta je slično korištenju uobičajene varijable, ali s jednim dodatnim korakom – dodjeljivanjem objekta varijabli:

• Prvo morate odrediti varijablu:

Dim varijabla As klasa

• Zatim joj možete dodijeliti objekt:

Set varijabla = objekt

Page 116: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

116

Deklariranje varijabli objekata

• Razlika kod deklariranja od ostalih varijabli je neobavezna ključna riječNew i argument klase

{Dim | ReDim | Static | Private | Public} varijabla As [New] klasa

Dim FormVar As New frmGlavna ‘ Odre đivanje varijable‘ objekta tipa frmGlavna.

Dim nekaForma As Form ‘ Op ća varijabla forme.

Dim nekiTekst As TextBox ‘ Može upu ćivati na bilo koji‘ okvir s tekstom (ali samo okvir s tekstom).

Dim nekaKontrola As Control ‘ op ća varijabla kontrole.

Page 117: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

117

• Možete odrediti varijablu forme koja upućuje na određenu formu u aplikaciji, ali ne možete odrediti varijablu kontrole koja će upućivati naodređenu kontrolu

• Unatoč tome, određenu kontrolu možete dodijeliti varijabli tog tipa

Dim objDemo As ListBox

Set objDemo = lstPrimjer

Page 118: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

118

Dodjela varijabli objekata

Objekt dodjeljujete varijabli objekta naredbom Set:

Set varijabla = objekt

If frmPrikazRa čuna!txtStanjeRa čuna.Tex t < 0 ThenfrmPrikazRa čuna!txtStanjeRa čuna.BackColor = 0frmPrikazRa čuna!txtStanjeRa čuna.ForeColor = 255End If

Gornji programski kod možete značajno skratiti korištenjem varijablekontrole:

Dim Bal As TextBoxSet Bal = frmPrikazRa čuna!txtStanjeRa čunaIf Bal.Tex t < 0 ThenBal.BackColor = 0Bal.ForeColor = 255End If

Page 119: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

119

Specifični i opći tipovi objekata

• Varijable specifičnih objekata moraju upućivati na jedan određen tip objekta ili klase

• Varijabla specifične forme može upućivati smo na jednu formu u aplikaciji(iako može upućivati i na jedan od puno primjera te forme)

• Varijabla specifične kontrole može upućivati na samo jedan određeni tip kontrole u vašoj aplikaciji, kao što je okvir s tekstom ili okvir s popisom

Private Sub Form_Click()Dim nekiTekst As TextBoxSet nekiTekst = Text1nekiTekst.Text = “pozdrav”End Sub

Page 120: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

120

• Varijable općih objekata mogu upućivati na jedan od puno specifičnihtipova objekata

• Varijabla opće forme, na primjer, može upućivati na bilo koju formu u aplikaciji; varijabla opće kontrole može upućivati na bilo koju kontrolu nabilo kojoj formi u aplikaciji

Private Sub Form_Click()Dim nekaKontrola As ControlSet nekaKontrola = Form1.Controls(3)nekaKontrola.Caption = “pozdrav”End Sub

Page 121: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

121

U Visual Basicu postoje tri tipa općeg objekta:

tip općeg objekta upućivanje na objekt

Form Bilo koja forma u aplikaciji (uključujući MDI djecu i MDI formu).

Control Bilo koja kontrola u vašoj aplikaciji.

Object Bilo koji objekt.

• Varijable općih objekata korisne su kad ne znate specifičan tip objekta nakoji će varijabla upućivati tijekom izvođenja aplikacije (npr. ako pišemouniverzalni program koji će raditi s bilo kojom formom u aplikaciji)

Page 122: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

122

Forme kao objekti• Forme su objekti koje mogu pozivati ostali moduli u vašoj aplikaciji i blisko su povezane s modulima klase

Dodavanje korisničkih postupaka i svojstava

• Za stvaranje novog postupka na formi, dodajte potprogram određenkorištenjem naredbe Public.‘ Korisni čki postupak na Form1Public Sub Broja čNovihPoslova().. ‘ <izrazi>.End Sub

• Potprogram BrojačNovihPoslova možete pozvati iz drugog modulakorištenjem ovog izraza:Form1.Broja čNovihPoslova

Page 123: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

123

• Stvaranje novog svojstva forme može biti jednostavno kao određivanjejavne varijable u modulu forme:

Public IDBroj As Integer

Vrijednost svojstva IDBroj možete postaviti i pročitati iz drugog modulakorištenjem ova dva izraza:

Form1.IDBroj = 3Text1.Text = Form1.IDBroj

• Za dodavanje korisničkih svojstava formi također možete upotrijebiti i potprograme tipa Property

Page 124: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

124

Korištenje ključne riječi New

• Upotrijebite ključnu riječ New za stvaranje novog objekta određenognjegovom klasom

• Riječ New može biti upotrijebljena za stvaranje primjera forme, klasaodređenih u modulima klase, te zbirki

Korištenje ključne riječi New s formama

• Svaka forma koju stvorite tijekom izrade aplikacije je klasa

• Ključna riječ New može se upotrijebiti za stvaranje novih primjera iz teklaseDim x As New Sample ‘ pokazati na primjeru

x.Show ‘Kako bi varijabla forme i primjer u čitane forme‘ bili stalni, upotrijebite varijable tipa Static ili‘ Public umjesto lokalne varijable.

Page 125: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

125

• Ključnu riječ New može koristiti i zajedno s naredbom Set što je brži i preporučljiviji postupak.

Dim f As Form1Set f = New Form1f.Caption = “pozdrav”f.Show

Korištenje ključne riječi New s ostalim objektima

• Ključna riječ New može se upotrijebiti za stvaranje zbirki i objekata izklasa koje ste odredili u modulima klase.

Public clsNovo As PokažiMiPrivate Sub Command1_Click()Set clsNovo = New PokažiMiclsNovo.PokažiFormu ‘ poziv podprograma sadržanog u

‘ modulu klaseEnd Sub

Page 126: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

126

• Potprogram PokažiFormu u modulu klase stvara novi primjer klase Form1, prikazuje formu, i zatim je smanjuje

Sub PokažiFormu()Dim frmNovo As New Form1frmNovo.ShowfrmNovo.WindowState = 1End Sub

Ne možete upotrijebiti New za stvaranje primjer koda koji nije dopuštenVarijable osnovnih tipova podataka Dim X As New IntegerVarijablu općeg tipa objekta Dim X As New ControlVarijablu bilo kojeg specifičnog tipa kontrole Dim X As New ListBoxVarijablu bilo koje specifične kontrole Dim X As New lstImena

Page 127: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

127

Oslobađanje pokazivača objekata

Svaki objekt koristi memoriju i sistemske izvore. Dobra je praksaprogramiranja osloboditi te izvore kad više ne koristite objekt.

• Upotrijebite naredbu Unload za izbacivanje forme ili kontrole izmemorije.

• Upotrijebite ključnu riječ Nothing za oslobađanje izvora korištenihvarijablom objekta. Dodijelite vrijednost Nothing varijabli objektanaredbom Statement.

Page 128: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

128

Prosljeđivanje objekata potprogramima

Private Sub Command1_Click()‘ Poziva potprogram Demo i proslje đuje mu formu.Demo Form1End Sub

Private Sub Demo(x As Form1)‘ Centrira formu na ekranu .x.Left = (Screen.Width – x.Width) / 2End Sub

• Također je moguće pozivanjem proslijediti objekt argumentu, te zatim, unutar potprograma, dodijeliti argument novom objektu . Potprogramdogađaja Form1_Click poziva potprogram UzmiSliku u drugoj formiForm2, i prosljeđuje mu prazni okvir za sliku.

Private Sub Form_Click()Form2.UzmiSliku Picture1End Sub

Page 129: OSNOVE PROGRAMIRANJA - marjan.fesb.hrmarjan.fesb.hr/~tihana/Programiranje1/poglavlje5.pdf1 OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica • Za svaku formu u aplikaciji postoji

129

Potprogram UzmiSliku u formi Form2 dodjeljuje praznom okviru za slikus forme Form1 svojstvo Picture okvira za sliku na formi Form2. (probati izaplikacije)

Private objX As PictureBox

Public Sub UzmiSliku(x As PictureBox)‘ Dodjeljuje varijabli objekta‘ proslije đen okvir za sliku.Set objX = x‘ Dodjeljuje okviru za sliku na Form1‘ vrijednost svojstva PictureobjX.Picture = Picture2.PictureEnd Sub