290
Laboratorijske vježbe: Osnove programiranja (Razvoj aplikacija u Microsoft Visual Basic® 6) Autor: Mr Bogdan Brkić

Osnove programiranja

  • Upload
    igor

  • View
    48

  • Download
    11

Embed Size (px)

DESCRIPTION

Naučite osnove programiarnja uz Visual Basic 6.0

Citation preview

Laboratorijske vjebe: Osnove programiranja (Razvoj aplikacija u Microsoft Visual Basic 6)Autor: Mr Bogdan Brki

BANJA LUKA COLLEGEBanja Luka

2010/2011

Sadraj

MODUL 1: Uvod u razvojno okruenje Visual Basic 6MODUL 2: KontroleMODUL 3: Kontrole svojstva, metode i dogaajiMODUL 4: MsgBox, InputBox, CommonDialog dijaloziMODUL 5: Forme, MDI, menijiMODUL 6: Tipovi podataka, promjenljive, nizovi i konstanteMODUL 7: Kontrola toka programaMODUL 8: Procedure i funkcijeMODUL 9: Forme, kontrole i kodiranje napredne tehnikeMODUL 10: Otklanjanje greaka i rukovanje grekamaMODUL 11: PonavljanjeMODUL 12: Povezivanje sa bazama podataka DAOMODUL 13: Povezivanje sa bazama podataka ADOMODUL 14: Kreiranje izvjetaja Data ReportMODUL 15: Kreiranje izvjetaja Crystal Reports

MODUL 1: Uvod u razvojno okruenje Visual Basic 6 Visual Basic je Windows integrisano vizuelno razvojno okruenje

Visual Basic je programski jezik

Visual Basic olakava osnovne zadatke u kreiranju Windows aplikacije

Kreiranje formi, dodavanje kontrola na formu i pisanje koda deava se u prijateljskom okruenju

Osnovne karakteristike Visual Basic Programa Visual Basic aplikacije odgovaraju na dogaaje Korisnik kontrolie aplikaciju

Svaki klik mia ili pritisak tipke na tastaturi rezultuje pokretanjem nekog dogaaja

Visual Basic je objektno orjentisan aplikaciju je mogue podijeliti u dijelove

pojedine dijelove je mogue nezavisno razvijati i testirati

Visual Basic je kompletan razvojni sistem za Windows aplikacije

Visual Basic aplikacije izgledaju i ponaaju se kao i svi ostali Windows programi

Visual Basic je skalabilan moe se proirivati ActiveX kontrolama i DLL bibliotekama

mogue je kreirati sopstvene ActiveX kontrole i DLL biblioteke ili ih preuzeti od drugih proizvoaa

Istorija Visual Basic-a Visual Basic 1.0 (1991) Visual Basic 2.0 (1992)

Visual Basic 3.0 (1993)

Visual Basic 4.0 (1995)

Visual Basic 5.0 (1997)

Visual Basic 6.0 (1998-podrka trajala do sredine 2005.)

Visual Basic .NET (2002.-)Derivati Visual Basic-a Visual Basic for Applications (VBA) VBScript StarOffice Basic Gambas

Razvoj Visual Basic aplikacije

Dizajniranje korisnikog interfejsa

Osnovna komponenta Visual Basic aplikacije je forma

Forma je prozor koji sadri objekte kontrole

Kontrole karakteriu: svojstva, dogaaji i metode Svojstva daju informacije o trenutnom stanju kontrole

Primjeri svojstava su: visina, irina, pozicija forme na ekranu, pozicija kontrole na formi, boja pozadine, ....

Dogaaji pruaju mogunost programeru da kontrolie tok programa

Primjeri: klik na dugme, pritisak tipke Enter u textbox-u, odabir vrijednosti sa padajue liste, pritisak na RadioButton ili CheckBox ...

Metode kontrola su procedure koje na unaprijed definisan nain mijenjaju svojstva kontrole

Mogu da primaju parametre

Primjer: pomjeranje dugmeta, brisanje svih vrijednosti iz padajue liste, ...

Pokretanjem Visual Basic integrisanog razvojnog okruenja uoavamo da se ono sastoji iz sledeih segmenata:

Glavni meni

Prozor forme

Kutija sa alatima (TOOLBOX)

Prozor projekata i komponenti projekta (PROJECT EXPLORER)

Prozor sa svojstvima formi i komponenti (PROPERTIES WINDOW)

Prikaz forme kako bi trebala izgledati kada se pokrene aplikacija (FORM LAYOUT WINDOW)

Trake sa alatima (TOOLBARS) sadre ikone koje omoguavaju brzo pozivanje opcija koje se nalaze na glavnom meniju

Najvaniji toolbar je Standard toolbar i sadri opcije (grafika prezentacija za svaku opciju je ikona) za:kreiranje novog projekta,

dodavanje nove forme,

meni editor,

otvaranje postojeeg projekta,

snimanje projekta i formi,

Cut, Copy, Paste, Find,

Undo, Redo,

pokretanje pauziranje i zaustavljanje izvoenja aplikacije,

prikazivanje Project Explorer-a,

prikazivanje Properties Window-a,

prikazivanje Toolbox-a,

prikazivanje Object Browser-a,

prikaz koordinata trenutno selektovane kontrole,

prikaz visine i irine trenutno selektovane koordinate ...

Dizajn korisnikog interfejsa podrazumijeva:postavljanje kontrola na formu

pozicioniranje kontrola na formi

promjenu svojstava kontrola

kreiranje sistema menija

Pisanje koda koji odgovara na dogaaje

Ukoliko ne bi postojali dogaaji program bi se linearno izvravao od poetka do kraja bez mogunosti interakcije sa korisnikom.

Dogaaji su unaprijed definisane procedure za svaku kontrolu ili formu.

Programer pie kod za dogaaj i time odreuje dalji tok izvravanja programa. Ipak, najee je korisnik taj koji izaziva pokretanje dogaaja.

Nije obavezno obraditi sve dogaaje. Neobraeni dogaaji ne proizvode nikakvu akciju.

Kod napisan za kontrolu forme egzistira kao dio same forme. Ako se forma koristi u drugoj aplikaciji svi dogaaji pisani za kontrole te forme e biti prisutni u toj aplikaciji.

Akcije korisnika koje proizvode dogaaje su:pritisak dugmeta na tastaturi,

pomjeranje mia,

pritisak dugmeta na miu (klik ili dvoklik)

Akcije korisnika proizvode vie dogaaja. Npr. klik mia na dugme moe da proizvede sledee dogaaje:MouseDown na pritisnutom dugmetu,

LostFocus na prethodno fokusiranoj kontroli,

GotFocus na pritisnutom dugmetu,

Click na pritisnutom dugmetu i

MouseUp na pritisnutom dugmetu

Programer u zavsinosti od toga kako eli da se izvrava njegova aplikacija obraje jedan ili vie dogaaja.

Kreiranje i pozivanje ostalih procedura

Pored koda koji obrauje dogaaje forme i dogaaje kontrola mogue je pisati i samostalan kod u obliku javnih modula.

Ovakvi moduli su sastavni dio Visual Basic projekta.

Kod ovakvih modula je dostupan u cijeloj aplikaciji.

Primjeri:

kod za irilino/latinino konvertovanje rijei,

kod za konvertovanje iz jednog brojnog sistema u drugi,

kod koji implementira poslovnu logiku aplikacije (kod za obraun poreza i doprinosa na lini dohodak koristi se i na formama i na tampama) ....

Testiranje i otklanjanje greaka

Greke u kodu mogu biti sintaksne ili logike.

Greke mogu da se pojave i usled pogrenog unosa podataka od strane korisnika (obraditi ulazne podatke).

Greke mogu da nastanu usled normalnih ili vanrednih promjena u radnom okruenju.

Primjeri:

aplikacija predvia da se arhiviranje nekih podataka vri iskljuivo na D: particiju diska ta ako sistem ima samo jednu particiju ili ako je D: drajv neki optiki medij ili ako korisnik nema pravo pristupa D: drajvu u svom radnom okruenju,

aplikacija se povezuje na bazu podataka koja je definisana parametrima unutar samog okruenja, pomou imena hosta i naziva baze podataka, ...

Ovakve greke treba predvidjeti, obraditi ih unutar koda i korisniku dati poruku o greci i uputiti ga na mogue rjeenje problema.

Kreiranje izvrne verzije programa

Kreiranjem projekta kreiraju se razliiti fajlovi. Ukoliko je projekat tipa Standard EXE kreiranjem projekta nastae sledei fajlovi:

VBP fajl koji sadri sve podatke o projektu (tip projekta, koje sve forme se nalaze u sastavu projekta, koja forma se prva otvara kada se pokrene aplikacija, kako e se zvati izvrni program, podaci o verziji programa, .....)

FRM fajl(ove) koji sadri podatke o svim kontrolama na formi, sva njihova svojstva kao i kod svih obraenih dogaaja

BAS fajl(ove) koji sadre ostali VB kod

Kreiranje izvrnog koda odnosno nae aplikacije podrazumijeva kompajliranje svih modula aplikacije i povezivanje objektnih fajlova u exe izvrni program.

Za izvravanje ovako kreiranih aplikacija neophodno je da korisnik na svom raunaru ima izvrni modul MSVBVM60.DLL. U njemu se nalazi jezgro koje ine osnovne klase, funkcije i procedure. Rezultat ovakvog pristupa je da se u exe verziji koja, u zavisnosti od namjene aplikacije, moe biti veoma male veliine nalazi kompajlirani kod nastao kreiranjem korisnikog interfejsa i pisanjem koda od strane korisnika. Sve ostalo to je potrebno za izvravanje aplikacije nalazi se u MSVBVM60.DLL fajlu.

VJEBE: Uvod u razvojno okruenje Visual Basic 6

Cilj vjebe

Uponzavanje studenata sa kreiranjem jednostavnih Standard EXE aplikacija u integrisanom razvojnom okruenju Visual Basic 6.

Tok vjebi

kreiranje projektapostavljanje kontrola na formu podeavanje svojstva kontrola

obrada dogaaja kontrola

testiranje i otklanjanje greaka

kreiranje izvrne aplikacijeVJEBA 1: Kreirati jednostavnu aplikaciju koja na glavnoj formi sadri jednu Label i jednu CommandButton kontrolu. Obraditi dogaaj Click dugmeta na nain da pritisak miem na dugme prouzrokuje da svojstvo Caption labele dobije vrijednost Hello World !!!

UPUTSTVO: Otvoriti novi projekat (FileNew ProjectStandard EXE).

U prozoru sa kontrolama kliknite na ikonu za dodavanje labele i prevucite odreeno podruje na formi da bi ste postavili Label kontrolu.

Kliknite na labelu i u Properties prozoru promijenite svojstvo Caption tako to ete obrisati tekst Label1.

Na isti nain dodajte i jednu CommandButton kontrolu . Selektujte kontrolu Command1 i u Properties prozoru promijenite Caption svojstvo dugmeta u Popuni labelu.Snimite projekat i formu pritiskom na ikonu koja se nalazi na standardnom Toolbar-u ili odabirom opcije FileSave Project. Visual Basic okruenje e Vas pitati za naziv forme i projekta. Prihvatite Project1 i Form1.Testirajte program tako to ete pritisnuti ikonu ili odabirom opcije Runstart ili pritiskom na tipku F5 na tastaturi. Jednostavna aplikacija koju smo napravili bie pokrenuta. Pritisnemo li dugme sa natpisom Popuni labelu nita se nee desiti. Prekinimo izvravanje programa i dodajmo kod za obradu Click dogaaja dugmeta.

Da bi smo napisali kod za obradu Click dogaaja dugmeta u razvojnom okruenju Visual Basic-a 6 pritisnimo dvoklikom na dugme koje smo prethodno postavili na formu. Otvorie se prozor sa zaglavljem i zavretkom procedure Command1_Click. Dopunite kod kao na sledeoj slici i ponovo pokrenite program.

Private Sub Command1_Click()

Label1.Caption = "Hello World !!!"

End Sub

MODUL 2: KontroleKontrole koje se mogu vidjeti u prozoru sa alatima (Toolbox) su, idui odozgo na dole, sledee:

Pointer (nije kontrola koja se moe postaviti na formu ve omoguava mod selekcije postavljenih kontrola na formi),

PictureBox,

Label,

TextBox,

Frame,

CommandButton,

CheckBox,

OptionButton,

ComboBox,

ListBox,

HScrollBar,

VScrollBar,

Timer,

DriveListBox,

DirListBox, FileListBox,

Shape,

Line,

Image,

Data i

OLE

Kontrolu na formu moemo postaviti na dva naina:

odabirom kontrole u ToolBox-u i prevlaenjem po formi ili

dvoklikom na kontrolu u ToolBox-u.

Svojstva (Property) kontrole mijenjamo odabirom svojstva u Properties prozoru Visual Basic-a i unosom vrijednosti u drugu kolonu odgovarajueg reda.

Kod za obradu dogaaja pie se u prozoru Code. Do njega dolazimo pritiskom na ikonu . Nakon toga sa lijevog padajueg menija biramo kontrolu iji dogaaj elimo programski obraditi, a sa desnog biramo dogaaj koji elimo obraditi. Nakon to se u podruiju za pisanje koda pojavi blok naredbi Private Sub / End Sub, unutar njega poinjemo sa pisanjem koda. Pisanje koda sastoji se od: pozivanja naredbi, procedura i funkcija Visual Basic-a, pozivanja procedura i funkcija koje je napisao programer,

dobijanja i postavljanja svojstva kontrola ,

pozivanja metoda kontrola i dr.

U narednim vjebama demostriraemo kako se kontrole postavljaju na formu, pokazaemo kako im se mijenjaju svojstva, te obraditi nekoliko dogaaja nekih kontrola.

VJEBE: Kontrole

Cilj vjebe

Uponzavanje studenata sa osnovnim kontrolama.

Tok vjebi

upoznavanje sa vanijim i ee koritenim kontrolama: Label, TextBox, frame, CommandButton, CheckBox, OptionButton, ComboBox, ListBox, HScrollBar, VScrollBar, Timer, DriveListBox, DirListBox, FileListBox, Shape, Line, Image, PictureBox

promjena osnovnih svojstava kontrolapisanje jednostavnog koda za obradu dogaajaVJEBA 2: Kreirati aplikaciju koja na glavnoj formi sadri tri Shape kontrole, Shape1, Shape2 i Shape3 i tri CommandButton kontrole. Postaviti svojstva FillColor kontrola Shape1, Shape2 i Shape3 na crvenu, utu i zelenu respektivno. Simulirati rad semafora tako da pritisak odreenog dugmeta izaziva paljenje jednog od svjetala. Koristiti FillStyle svojstvo Shape kontrola.

UPUTSTVO: Otvoriti novi projekat (FileNew ProjectStandard EXE).

U prozoru sa kontrolama kliknite na ikonu za dodavanje oblika i prevucite odreeno podruje na formi da bi ste postavili Shape kontrolu. Uinite to tri puta kako bi ste postavili tri kruga. Svakoj dodatoj kontroli promijenite svojstvo Shape u Circle, svojstvo FillColor u odgovarajuu boju a svojstvo FillStyle u Transparent.U prozoru sa kontrolama kliknite na ikonu za dodavanje dugmeta i prevucite odreeno podruje na formi da bi ste postavili CommandButton kontrolu. Uinite to tri puta i svakom dugmetu promijenite svojstvo Caption u Crveno, Zuto i Zeleno respektivno.

Kliknite na svako dugme dva puta i u prozoru za dodavanje koda unesite kod za obradu dogaaja Click kao na sledeem listingu:

Private Sub Command1_Click()

Shape1.FillStyle = 0

Shape2.FillStyle = 1

Shape3.FillStyle = 1

End Sub

Private Sub Command2_Click()

Shape1.FillStyle = 1

Shape2.FillStyle = 0

Shape3.FillStyle = 1

End Sub

Private Sub Command3_Click()

Shape1.FillStyle = 1

Shape2.FillStyle = 1

Shape3.FillStyle = 0

End Sub

Snimite projekat i formu pritiskom na ikonu koja se nalazi na standardnom Toolbar-u ili odabirom opcije FileSave Project. Visual Basic okruenje e Vas pitati za naziv forme i projekta. Prihvatite Project1 i Form1.

Testirajte program tako to ete pritisnuti ikonu ili odabirom opcije Runstart ili pritiskom na tipku F5 na tastaturi.

VJEBA 3: Kreirati aplikaciju koja na glavnoj formi sadri tri OptionButton kontrole i jednu Label kontrolu. Obraditi Click dogaaje OptionButton kontrola tako da se izborom bilo koje opcije svojstvo labele promijeni u Odabrali ste opciju: + naziv opcije.

UPUTSTVO: Otvoriti novi projekat (FileNew ProjectStandard EXE).

U prozoru sa kontrolama kliknite na ikonu za dodavanje opcionog dugmeta i prevucite odreeno podruje na formi da bi ste postavili OptionButton kontrolu. Uinite to tri puta kako bi ste postavili tri opcije. Svakoj dodatoj kontroli promijenite svojstvo Caption u Opcija jedan, Opcija dva i Opcija tri respektivno.

Postavite labelu na sredinu forme.

Dvoklikom na svaku OptionButton kontrolu otvara Vam se prozor za unos koda koji se izvrava kada se dogodi Click dogaaj. Za svaku opciju unesite kod kao na sledeem listingu.

Private Sub Option1_Click()

Label1.Caption = "Odabrali ste opciju: " + Option1.Caption

End Sub

Private Sub Option2_Click()

Label1.Caption = "Odabrali ste opciju: " + Option2.Caption

End Sub

Private Sub Option3_Click()

Label1.Caption = "Odabrali ste opciju: " + Option3.Caption

End Sub

Testirajte program tako to ete pritisnuti ikonu ili odabirom opcije Runstart ili pritiskom na tipku F5 na tastaturi.VJEBA 4: Kreirati aplikaciju koja na glavnoj formi sadri jednu ListBox, jednu ComboBox i dvije Label kontrole. Obraditi Click dogaaj ListBox i ComboBox kontrola tako da se selekcijom u listama u labelama ispisuje odabrane vrijednosti. Obratiti panju na grafiki prikaz (stil) labela.

UPUTSTVO: Otvoriti novi projekat (FileNew ProjectStandard EXE).

U prozoru sa kontrolama kliknite na ikonu za dodavanje liste vrijednosti i prevucite odreeno podruje na formi da bi ste postavili ListBox kontrolu. Popunite List svojstvo ove kontrole vrijednostima: Bosna i Hercegovina, Srbija, Hrvatska, Slovenija, Makedonija i Crna Gora.

U prozoru sa kontrolama kliknite na ikonu za dodavanje padajue liste vrijednosti i prevucite odreeno podruje na formi da bi ste postavili ComboBox kontrolu. Popunite List svojstvo ove kontrole vrijednostima: Osnove programiranja, Programiranje, Internet programiranje, Informacioni sistemi i Baze podataka.

Postavite dvije labele Label 1 i Label2 na formu.

Dvoklikom na ListBox i ComboBox kontrole otvara Vam se prozor za unos koda koji se izvrava kada se dogodi Click dogaaj. Za svaku opciju unesite kod kao na sledeem listingu.

Private Sub Combo1_Click()

Label2.Caption = Combo1.List(Combo1.ListIndex)

End Sub

Private Sub List1_Click()

Label1.Caption = List1.List(List1.ListIndex)

End Sub

Testirajte program tako to ete pritisnuti ikonu ili odabirom opcije Runstart ili pritiskom na tipku F5 na tastaturi.VJEBA 5: Kreirati jednostavnu aplikaciju koja na glavnoj formi sadri jednu DriveListBox i jednu DirListBox kontrolu. Obraditi Change dogaaj DriveListBox kontrole tako da se promjenom drajva u DriveListBox kontroli promijeni sadraj DirListBox kontrole.

UPUTSTVO: Otvoriti novi projekat (FileNew ProjectStandard EXE).

U prozoru sa kontrolama kliknite na ikonu za odabiranje drajva i prevucite odreeno podruje na formi da bi ste postavili DriveListBox kontrolu.U prozoru sa kontrolama kliknite na ikonu za odabiranje direktorijuma i prevucite odreeno podruje na formi da bi ste postavili DirListBox kontrolu.Dvoklikom na DriveListBox kontrolu otvara Vam se prozor za unos koda koji se izvrava kada se dogodi Change dogaaj. Unesite kod kao na sledeem listingu.

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Testirajte program tako to ete pritisnuti ikonu ili odabirom opcije Runstart ili pritiskom na tipku F5 na tastaturi.VJEBA 6: Projektu iz prethodne vjebe dodati jednu FileListBox kontrolu. Obraditi Change dogaaj kontrole DirListBox, tako da se promjenom foldera u FileListBox kontroli ispise lista svih fajlova iz selektovanog foldera.

UPUTSTVO: Otvoriti novi projekat (FileNew ProjectStandard EXE).

Kao i u prethodnoj vjebi dodajte po jednu DriveListBox i jednu DirListBox kontrolu.

Zatim u prozoru sa kontrolama kliknite na ikonu za odabiranje fajla i prevucite odreeno podruje na formi da bi ste postavili FileListBox kontrolu.Dvoklikom na DriveListBox i DirListBox kontrole otvara Vam se prozor za unos koda koji se izvrava kada se dogodi Change dogaaj. Unesite kod kao na sledeem listingu.

Private Sub Dir1_Change()

File1.Path = Dir1.Path

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Testirajte program tako to ete pritisnuti ikonu ili odabirom opcije Runstart ili pritiskom na tipku F5 na tastaturi.MODUL 3: Kontrole svojstva, metode i dogaajiLabel najee se koristi kao statini tekst iza kog slijedi TextBox kontrola.svojstvo Appearance - grafiki izgled kontrole0-Flat kontrola ima standardni okvir

1-3D kontrola ima trodimenzionalni okvir

(samo ako je svojstvo BorderStyle postavljeno na 1-FixedSingle)svojstvo BorderStyle - da li se iscrtava okvir oko kontrole0-None kontrola je bez okvira

1-Fixed single kontrola ima tip okvira zavisno od vrijednosti svojstva Appearance

svojstvo AutosizeTrue - veliina kontrole e biti prilagoena tekstu koji kontrola sadriFalse - inicijalno

svojstvo BackStyle - nain iscrtavanja kontrole na formi (ako se postavlja preko neke druge kontrole npr. slike)1-Opaque kontrola prekriva sadraj ispod sebe

0-Transparent kontrola je transparentna

svojstvo Caption - tekstualni sadraj kontroleHot-Key kombinacija se definie postavljanjem simbola & ispred slova koje je Hot-Key".Fokus se postavlja ne na labelu ve na prvu sledeu kontrolu. UseMnemonic svojstvo mora biti True.

svojstvo Alignment - poravnanje teksta

0-Left Justify1-Right Justify

2-Center

svojstvo WordWrap odreuje raspored teksta u labeli (AutoSize mora biti True)

dogaaj Click dogaa se kada korisnik miem klikne na kontroluTextBox omoguava unos i izmjenu teksta za vrijeme izvravanja programa.

svojstvo MultiLine odreuje da li se tekst prostire u jednoj (False) ili vie (True) linija

svojstvo ScrollBars trake za pomijeranje teksta (samo ako je MultiLine True)0-None

1-Horizontal

2-Vertical

3-Bothsvojstvo HideSelection da li e oznaeni tekst ostati markiran kada kontrola izgubi fokus (False) ili nee ostati markiran (True - podrazumijevano)svojstvo MaxLength odreuje maksimalan broj unijetih karakterasvojstva SelStart, SelLength, SelText omoguavaju selektovanje teksta i vraanje selektovanog sadraja

svojstvo PasswordChar sakrivanje ukucanog sadraja u TexBox kontrolu

svojstvo Locked zakljuavanje kontrole za bilo kakve izmjene

metoda SetFocus postavlja fokus na TextBox kontroludogaaj Click aktivira se kada korisnik klikne miem na kontrolu

dogaaj LostFocus aktivira se kada kontrola izgubi fokus

dogaaji KeyDown, KeyPress aktiviraju se prilikom pritiska na tipku tastature a razlikuju se po parametrima koje prihvataju- KeyCode i Shift odnosno KeyAsciiCommandButton vizuelni interfejs za pokretanje akcija; moe imati tekst ili sliku; u Click dogaaj piemo kod koji se izvrava pritiskom na dugme

svojstvo Caption

svojstvo Picture podrani formati su: bmp, ico, gif, jpg, wmf; samo ako je svojstvo Style postavljeno na 1-graphical

svojstva Default, Cancel definiu da li je dugme podrazumijevano za pritisak tipki entar i Esc; samo jedno dugme na formi moe imati svojstvo Cancel postavljeno na Truemetod SetFocusdogaaj ClickCheckBox kontrola sa tri stanja: ekirana, nije ekirana, nedefinisano stanje; ako ima ovakvih vie kontrola na formi one nisu iskljuivesvojstvo Style odreuje nain prikaza kontrole0 Standard

1 Graphical

svojstva Picture, DisabledPicture, DownPicture prikazuju sliku ako dugme nije pritisnuto, onemogueno ili ako je pritisnuto; samo ako svojstvo Style ima vrijednost Graphical

svojstvo Alignment pozicija kuice za ekiranje u odnosu na tekst

svojstvo Value vraa stanje kontrole

0-Unchecked1-Checked2-Grayedmetoda SetFocusdogaaj ClickOptionButton izbor meusobno iskljuivih opcijasvojstvo Value moe imati vrijednost True ili False u zavisnosti od toga da li je pritisnuta ili nijedogaaj ClickFrame kontrola koja grupie druge kontrole kontejner kontrola tipino za OptionButton kontrole tokom dizajniranja se sa pomijeranjem Frame kontrole pomijeraju i sve kontrole unutar Frame kontrole

svojstvo BorderStyle da li je okvir iscrtan (0-None) ili nije (1-Fixed Single)

svojstvo Appereance ako je BorderStyle 1 odreuje da li e okvir biti iscrtan trodimenzionalno ili ne

svojstvo Caption sadri tekst koji e se ispisati u vrhu Frame kontrole

ListBox izbor jedne ili vie vrijednosti iz listesvojstvo List lista vrijednosti koje se prikazuju

svojstvo ItemData lista vrijednosti koje se vraaju kao rezultat odabira

svojstvo Column odreuje da li se lista skroluje vertikalno (0) ili horizontalno tj u koliko kolonasvojstvo MultiSelect odreuje koliko i kako se mogu selektovati vrijednosti iz liste

0 None samo jedna opcija

1 Simple mogu izbor vie stavki; ponovnim klikom stavka se deselktuje

2 Extended selektovanje vie opcija pomou tipke Ctrlsvojstvo Selected pokazuje da li je opcija selektovana Lista.Selected(x)=True ili nije Lista.Selected(x)=false

svojstvo SelCount vraa broj selektovanih opcija u listi

svojstvo Sorted da li je lista sortirana ili nije

svojstvo Style standardna lista ili lista sa poljima za ekiranje

svojstvo ListIndex vraa ili postavlja indeks aktivne stavke u listi

svojstvo List vraa tesktualnu vrijednost iz liste

metoda Clear prazni listu

metoda AddItem dodaje opciju u listu

metoda RemoveItem brie opciju iz liste

dogaaji Click, DblClick, ComboBox izbor vrijednosti iz padajue liste; kombinacija TextBox i ListBox kontrola; nema MultiSelect a samim tim ni Selected i SelectCount; ostala svojstva vae kao i za ListBoxsvojstvo Style modovi koritenja ComboBox kontrole0 DropDown Combo mogu unos teksta i odabir sa liste

1 Simple Combo nema strelice za listu a izbor se vri tasterima gore/dole

2 DropDown List mogu izbor sa liste ali nije omoguen unos teksta

dogaaji Click, Change (samo ako je Style 0 ili 1)HScrollBar, VScrollBar horizontalni i vertikalni klizaisvojstva Min, Max, Value predstavljaju minimalnu,maksimalnu i trenutnu vrijednost

svojstva SmallChange i LargeChange reguliu korak pomijeranja klizaaTimer koristi se za izvravanje nekih akcija u jednakim vremenskim intervalima; nema grafiku reprezentaciju

svojstvo Interval vremenski interval u milisekundama nakon kog se izvrava niz instrukcija definisanih u Timer dogaaju

svojstvo Enabled pokazuje da li je tajmer aktivan tj da li e nakon svakih Interval milisekundi pokretati kod iz Timer dogaaja ili se nee nita deavati

dogaaj Timer kod koji e se izvravati svakih Interval milisekundi ako je svojstvo Enabled postavljeno na True

Image koristi se za prikazivanje gotovih slikasvojstvo Picture omoguava da se kontrlola povee sa slikom tj da se prikae slikaShape koristi se za crtanje geometrijskih oblikasvojstvo Shape odreuje oblik

0 - Rectangle (pravougaonik)

1 - Square (kvadrat)

2 - Oval (elipsa)

3 - Circle (krug)

4 - Rounded Rectangle (pravougaonik sa zaobljenim ivicama)

5 - Rounded Square (kvadrat sa zaobljenim ivicama)svojstvo BackStyle odreuje da li e pozadina biti vidljiva (1 Opaque) ili ne (0 Transparent)

svojstvo BacColor boja pozadine

svojstvo BorderStyle nain iscrtavanja geometrijskog oblika

0 - Transparent (okvir je providan, ne iscrtava se)

1 - Solid (puna linija)

2 - Dash (crtice)

3 - Dot (take)

4 - Dash-Dot (crta-taka)

5 - Dash-Dot-Dot (crta-taka-taka)

6 - InsideSolid (spoljna ivica okvira je istovremeno i spoljna ivica oblika)svojstvo FillColor boja ispune oblika

svojstvo FillStyle - odreuje da li e ispuna biti vidljiva (0 Solid) ili ne (1 Transparent)

Line koristi se za iscrtavanje linija

svojstva BorderColor, BorderStyle, BorderWidth slue za izbor boje, stil linije, debljinu linije

svojstva X1, X2, Y1 i Y2 odreuju poloaj linije na formi

PictureBox koristi se za prikazivanje slike (slino Image kontroli) i za crtanjeZa uitavanje slike tokom izvravanja programa koristi se LoadPicture funkcija Visual Basic-a.svojstvo Align - odreuje poziciju kontrole u odnosu na formu

0 - None (kontrola je bez poravnanja)

1 - Align Top (nalazi se na vrhu forme, irine iste kao forma)

2 - Align Bottom (na dnu forme)

3 - Align Left (sa leve strane)

4 - Align Right

svojstvo BackColor - ima uticaja samo prilikom crtanja po kontroli

svojstvo DrawStyle, DrawWidth kao i kod Shape kontrolesvojstvo ForeColor - boja koja se koristi prilikom crtanja ili ispisa tekstasvojstvo FontTransparent - da li je tekst ispisan na kontroli sa transparentnom pozadinom (True) ili ne (False).metoda Cls - koja brie sadraj PictureBox kontrole, ali samo elemente koji su nacrtani ili ispisani za vrijeme izvravanja programa; slike uitane za vrijeme izvravanja programa ili u dizajn reimu ostaju neizmijenjenemetoda PSet - crta taku na datoj koordinati i bojiobjekt.PSet (x, y), [color]

metoda Point readonly; vraa boju take na zadatoj koordinati u

PictureBox kontroli

metoda Line - crtanje linije, praznih i popunjenih okvira. Sintaksa je:

objekt.Line (x1, y1) - (x2, y2), [color], [B][F]

- (x1,y1) opcioni parametar koji oznaava koordinate poetka linije; ako se izostavi

podrazumevan poetak je poslednja posjeena koordinata (CurrentX i CurrentY)

- (x2,y2) obavezni parametri, oznaavaju koordinate kraja linije

- [color] isto znaenje kao kod PSet metode

- [B] opcioni parametar Block; oznaava da e umesto linije biti nacrtan

pravougaonik (ili kvadrat), ija je diagonala data linija; oblik e biti

popunjen bojom odreenom sa FillColor i tipom ispune odreenim sa

FillStyle svojstvima PictureBox-a

- [F] opcioni parametar, oznaava da e oblik biti popunjen istom bojom

kojom je nacrtan okvir oblika; obavezan parametar Bmetoda Circle - crta kruga ili elipsu

objekt.Circle (x, y), radius, [color, , aspect]

- (x,y) obavezan parametar koji predstavlja centar kruga ili elipse

- radius je obavezan parametar koji predstavlja prenik kruga

- [color] opcioni parametar, kao kod PSet metode

- aspect, opcioni parametar koji postavlja odnos visine i irine kruga; ako

se izostavi podrazumeva se da je njegova vrednost 1, ime se dobija krug; vrijednosti razliita od 1 discrtava elipsu

DriveListBox koristi se za prikazivanje i odabir drajvoa na raunaru

svojstvo Drive vraa trenutno aktivni drajv ove kontrole

svojstvo ListCount vraa broj stavki u listi

svojstvo ListIndex vraa indeks trenutno selektovane opcijesvojstvo List vraa naziv drajva oznaenim odgovarajuim indeksom

dogaaj ChangeDirListBox koristi se za prikazivanje liste direktorijuma

svojstvo Path vraa putanju trenutno selektovanog foldera

dogaaji Change, Click

FileListBox koristi se za prikazivanje liste fajlova otvorenog direktorijuma

svojstva Archive, Hidden, Normal, System, ReadOnly odreuju da li e fajlovi sa odreenim atributima biti prikazaniVJEBE: Kontrole svojstva, metode i dogaaji

Cilj vjebe

Upoznavanje studenata sa kontrolama koje se nalaze u ToolBox-u. Upoznavanje sa svojstvima, dogaajima i metodama, promjena svojstava, pisanje koda koji odgovara na dogaaje i pozivanje metoda.

Tok vjebi

promjena svojstava pisanje koda koji odgovara na dogaaje pozivanje metoda kontrola

VJEBA 7: Postaviti odgovarajue kontrole kao na sledeoj slici i demonstrirati prethodno dati teorijski dio za ovu vjebu za svaku kontrolu.

VJEBA 8: Postaviti jednu Label, dva CommandButton i jednu Timer kontrolu. Pritiskom na prvo dugme pokrenuti ispis vremena u labeli tj simulirati rad asovnika, a pritiskom na drugo dugme zaustaviti asovnik.

VJEBA 9: Postaviti po jednu Image, Shape, Line i Picture Box. Za razliita svojstva navedena u pripremi ove vjebe pokretati aplikaciju. Za kontrolu PictureBox postavii dugmad koja e imati sledee funkcionalnosti: postavljanje slike,

uitavanje druge slike,

brisanje povrine za crtanje,

iscrtavanje take i ispis boje take,

iscrtavanje pravougaonika,

iscrtavanje linije,

iscrtavanje elipse i

iscrtavanje kruga.

VJEBA 10: Na formu postaviti po jednu: DriveListBox, DirListBox i FileListBox kontrolu. Postaviti dugmad na formi iji e Click dogaaji pozivati MsgBox funkcije koje daju informacije o sledeim svojstvima kontrola: DriveListBox.Drive

DriveListBox.ListCount

DriveListBox.ListIndex

DriveListBox.List(3)

DirListbox.Path

kao i da omogui filtriranje FileListBox kontrole po atributima ili po ekstenziji.

VJEBA 11: Kombinovati vjebe 6 i 9. Na formu postaviti po jednu: DriveListBox, DirListBox, FileListBox, PictureBox. Obezbijediti:

da se promjenom drajva u DriveListBox kontroli promijeni spisak foldera u DirListBox kontroli, da se promjenom foldera DirListBox kontroli promijeni spisak fajlova u FileListBox kontroli i da se dvoklikom na fajl sa spiska fajlova u FileListBox kontroli u PictureBox kontroli prikae slika.FileListBox kontrolu filtrirati tako da prikazuje samo spisak fajlova sa ekstenzijama: bmp, gif i jpg.

UPUTSTVO:Private Sub Dir1_Change()

File1.Path = Dir1.Path

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Private Sub File1_DblClick()

Set Picture1.Picture = LoadPicture(Dir1.Path + "\" + File1.FileName)

End Sub

MODUL 4: MsgBox, InputBox, CommonDialog dijaloziInputBox

Prikazuje TextBox kontrolu u dijalogu, ime omoguava jednostavno prihvatanje podataka od korisnika programa. Programer je osloboen kreiranja forme za unos podataka, ali nema mogunost kontrolisanja formata unesenih podataka. InputBox( prompt [, title] [, default] )Prompt poruka kojom se korisnik upuuje ta se od njega oekuje da unese

Title tekst koji se ispisuje u vrhu dijaloga

Default inicijalna vrijednost dijaloga

InputBox funkcija vraa podatak tipa string.MsgBoxMsgBox funkcija omoguava programeru da tokom izvravanja programa korisniku vrati poruke.MsgBox( prompt [, buttons] [, title] )

Prompt tekst porukeButtons vrijednost koja definie nain prikaza porukeTitle tekst koji se ispisuje u vrhu dijaloga

Vrijednosti koje moe da vrati funkcija MsgBox date su u sledeoj tabeli:

CommonDialogCommonDialog kontrola omoguava koritenje Windows-ovih sistemskih dijaloga:

Open (otvara se metodom ShowOpen),

Save / Save As (otvara se metodom ShowSave),

Font (otvara se metodom ShowFont),

Color (otvara se metodom ShowColor), Printer (otvara se metodom ShowPrinter) i Help (otvara se metodom ShowHelp)

Vano svojstvo je CancelError (True / False). Ako je postavljeno na False nee doi do prikida u izvrenju programa ako korisnik pritisne Cancel dugme.Princip upotrebe CommonDialog kontrola je sledei:

postaviti CommonDialog kontrolu na formu,

tokom dizajniranja programa (kroz Properties prozor) ili programski u toku izvravanja programa postaviti svojstva CommonDialog kontrole,

pozvati dijalog i

ispitati da li je dolo do greke (provjeriti da li je Err.Number0)

Flags svojstvo slui za fino podeavanje CommonDialog kontrole. FileOpen dijalogKoristi se za izbor fajla sa diska. Otvara se metodom ShowOpen.DialogTitle svojstvo slui za postavljanje naslova dijaloga.

FileName vraa naziv fajla koji je korisnik odabrao.

Filter slui za postavljanje filtera pri izboru fajlova.

npr: CommonDialog1.Filter = "Tekst fajlovi|*.txt|Dokumenti|*.doc|Svi fajlovi|*.*"Flags slui za fino podeavanje dijaloga.

FileSave dijalogKoristi se za izbor fajla sa diska u koji e se vriti snimanje. Otvara se metodom ShowSave.

DialogTitle svojstvo slui za postavljanje naslova dijaloga.

FileName vraa naziv fajla koji je korisnik odabrao.

Filter slui za postavljanje filtera pri izboru fajlova.

npr: CommonDialog1.Filter = "Tekst fajlovi|*.txt|Dokumenti|*.doc|Svi fajlovi|*.*"DefaultExt sadri podrazumijevanu ekstenziju po predpostavkom da korisnik ne navede nikakvu ekstenziju.

Flags slui za fino podeavanje dijaloga. Npr. cdlOFNOverwritePrompt upozorava da fajl sa odabranim imenom ve postoji.

Font dijalogKoristi se za izbor fonta i njegovih atributa. Otvara se metodom ShowFont.

Svojstva: FontName, FontSize, FontBold, FontItalic, FontUnderline, FontStrikeout, Color, Flags slui za fino podeavanje dijaloga. Vie vrijednosti se odvaja kjunom rijei Or.

Color dijalogKoristi se za izbor boje. Otvara se metodom ShowColor.

Najvanije svojstvo je Color koje postavlja inicijalnu boju pri otvaranju dijaloga (uz Flags = cdlCCRGBInit) ili vraa odabranu boju.

Print dijalogKoristi se za pokretanje print setup dijaloga za podeavanje tampe ili za standardni print dijalog. Otvara se metodom ShowPrinter.

Min - minimalan broj strane koji se moe odtampati.Max maksimalan broj strane koji se moe odtampati.

FromPage poetna stranica.

ToPage poslednja stranica za tampu.

Flags fino podeavanje dijaloga npr:

CdlPDAllPages - izabrano tampanje svih strana (od Min do Max)

CdlPDPageNums - izabrano tampanje grupe strana (od FromPage do ToPage)

CdlPDSelection - izabrano tampanje selektovanog teksta

Help dijalogKoristi se za pokretanje sistema za pomo. Otvara se metodom ShowPrinter.

HelpFile naziv .hlp ili .chm fajla iz kog se pruaju informacije.

HelpCommand definie tip pomoi npr cdlHelpContents prikazuje sadraj tj. stablo pojmova u sistemu pomoi.

VJEBE: MsgBox, InputBox, CommonDialog dijalozi

Cilj vjebe

Upoznavanje studenata sa funkcijama InputBox, MsgBox kao i sa razliitim oblicima koritenja kontrole CommonDialog.

Tok vjebi

demostracija funkcija InputBox i MsgBox pozivanje Open, Save / Save As, Font, Color,Printer i Help dijaloga

VJEBA 12: Demonstrirati razne mogunosti poziva InputBox i MsgBox funkcija.

UPUTSTVO:Private Sub Command1_Click()

Dim Rezultat

Rezultat = InputBox("Unesite broj izmedju 1 i 3", "InputBox Demo", "2")

End Sub

Private Sub Command2_Click()

Dim Rezultat

Rezultat = MsgBox("vbOKOnly", vbOKOnly, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbOKCancel", vbOKCancel, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbAbortRetryIgnore", vbAbortRetryIgnore, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbYesNoCancel", vbYesNoCancel, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbYesNo", vbYesNo, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbRetryCancel", vbRetryCancel, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbCritical", vbCritical, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbQuestion", vbQuestion, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbExclamation", vbExclamation, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbInformation", vbInformation, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("Kombinacija: vbCritical + vbYesNoCancel", vbCritical + vbYesNoCancel, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("Kombinacija: vbQuestion + vbYesNoCancel", vbQuestion + vbYesNoCancel, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("Kombinacija: vbExclamation + vbYesNoCancel", vbExclamation + vbYesNoCancel, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("Kombinacija: vbInformation + vbYesNoCancel", vbInformation + vbYesNoCancel, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbYesNoCancel + vbDefaultButton1", vbYesNoCancel + vbDefaultButton1, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbYesNoCancel + vbDefaultButton2", vbYesNoCancel + vbDefaultButton2, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

Rezultat = MsgBox("vbYesNoCancel + vbDefaultButton3", vbYesNoCancel + vbDefaultButton3, "MsgBox Demo")

Form1.Caption = "Rezultat MsgBox funkcije je " + Trim(Str(Rezultat))

End Sub

VJEBA 13: Demonstrirati razne naine upotrebe CommonDialog kontrole. Postaviti jednu CommonDialog kontrolu i sedam dugmadi koja e u dogaaju Click imati kod za pozivanje CommonDialog kontrole u: Open, Save / Save As, Font, Color,Printer i Help reimu.

UPUTSTVO:Private Sub Command1_Click()

CommonDialog1.DialogTitle = "Otvori datoteku"

' CommonDialog1.Flags = cdlOFNFileMustExist & cdlOFNHelpButton

' CommonDialog1.Flags = &H1000 + &H10

CommonDialog1.Flags = 4112

CommonDialog1.Filter = "Word dokument(*.doc)|*.doc|Svi fajlovi(*.*)|*.*"

CommonDialog1.ShowOpen

If Err.Number 0 Then

MsgBox "Otkazan dijalog", vbInformation, "Open dijalog"

Err.Clear

Exit Sub

End If

MsgBox CommonDialog1.FileName, vbInformation, "Otvoren fajl"

End Sub

Private Sub Command2_Click()

CommonDialog1.DialogTitle = "Snimi fajl"

CommonDialog1.Flags = cdlOFNOverwritePrompt Or cdlOFNHideReadOnly

CommonDialog1.Filter = "Word dokument(*.doc)|*.doc|Svi fajlovi(*.*)|*.*"

CommonDialog1.ShowSave

If Err.Number 0 Then

MsgBox "Otkazan dijalog", vbInformation, "Save dijalog"

Err.Clear

Exit Sub

End If

MsgBox CommonDialog1.FileName, vbInformation, "Save file"

End Sub

Private Sub Command3_Click()

CommonDialog1.Flags = cdlCFForceFontExist Or cdlCFScreenFonts Or cdlCFTTOnly Or cdlCFEffects

CommonDialog1.FontName = Text1.FontName

CommonDialog1.FontSize = Text1.FontSize

CommonDialog1.FontBold = Text1.FontBold

CommonDialog1.FontItalic = Text1.FontItalic

CommonDialog1.FontUnderline = Text1.FontUnderline

CommonDialog1.FontStrikethru = Text1.FontStrikethru

CommonDialog1.Color = Text1.ForeColor

CommonDialog1.ShowFont

If Err.Number Then

Err.Clear

Exit Sub

End If

Text1.FontName = CommonDialog1.FontName

Text1.FontSize = CommonDialog1.FontSize

Text1.FontBold = CommonDialog1.FontBold

Text1.FontItalic = CommonDialog1.FontItalic

Text1.FontUnderline = CommonDialog1.FontUnderline

Text1.FontStrikethru = CommonDialog1.FontStrikethru

Text1.ForeColor = CommonDialog1.Color

End Sub

Private Sub Command4_Click()

CommonDialog1.Flags = cdlCCRGBInit

CommonDialog1.Color = Picture1.BackColor

CommonDialog1.ShowColor

If Err.Number Then

Err.Clear

Exit Sub

End If

Picture1.BackColor = CommonDialog1.Color

End Sub

Private Sub Command5_Click()

CommonDialog1.Flags = cdlPDPrintSetup Or cdlPDReturnDC

CommonDialog1.ShowPrinter

If Err.Number 0 Then

Err.Clear

Exit Sub

End If

End Sub

Private Sub Command6_Click()

CommonDialog1.Min = 1

CommonDialog1.Max = 10

CommonDialog1.FromPage = 2

CommonDialog1.ToPage = 4

CommonDialog1.ShowPrinter

If Err.Number 0 Then

Err.Clear

Exit Sub

End If

If CommonDialog1.Flags = cdlPDAllPages Then

MsgBox "Stampanje svih strana"

ElseIf CommonDialog1.Flags = cdlPDPageNums Then

MsgBox "Stampanje strana od " & CommonDialog1.FromPage & " do " & CommonDialog1.ToPage

ElseIf CommonDialog1.Flags = cdlPDSelection Then

MsgBox "Stampanje selekcije"

End If

End Sub

Private Sub Command7_Click()

CommonDialog1.HelpFile = "VBDEF98.chm"

CommonDialog1.HelpCommand = cdlHelpContents

CommonDialog1.ShowHelp

End Sub

MODUL 5: Forme, MDI, menijiFormeForma predstavlja osnovu za kreiranje grafikog korisnikog interfejsa (GUI).

Forma je kontejner za sve ostale komponente.Najznaajnija svojstva forme su:

Name jedinstveno ime preko kog se u kodu referie na formuBackColor - Boja pozadine formeBorderStyle - definie vrstu okvira i ponaanje forme. 0-None, forma je bez okvira

1-Fixed Single, okvir jednostruke debljine

2-Sizable, okvir koji omoguava izmjenu dimenzije forme (inicijalna vrijednost)

3-Fixed Dialog, forma ima fiksni okvir kome se ne mogu mijenjati dimenzije

4-Fixed ToolWindow, forma ima izgled toolbox-a, manji font se koristi za naslov forme i nije mogue mijenjati dimenzije forme 5-Sizable ToolWindow, isto kao 4 samo je mogue mijenjati dimenzije formeCaption tekst naslova forme

ControlBox da li kontrola ima (True) ili nema (False) control box

Icon ikona forme

MaxButton da li e se prikazati dugme za maksimalno uveavanje forme

MinButton da li e se prikazati dugme za minimizirenj forme

Moveable da li korisnik moe (True) ili ne moe (False) da pomijera formu

Picture postavljanje slike na formu

ShowInTaskBar da li e otvorena forma biti prikazana na TaskBar-u Windowsa

WindowState dimenzije forme prilikom otvaranja: 0-Normal, 1-Minimized, 2-Maximized

Neke od najee koritenh metoda forme su:

Show za prikazivanje forme

Hide uklanja formu sa ekrana ali je ne i iz memorije (sledei poziv Show metode je znatno bri jer je forma ve u memoriji)

Load uitava formu u memoriju ali je ne prikazuje na ekranu

Unload uklanja formu iz memorije (i logino sa ekrana ako je bila prikazana)Move koristi se za postavljanje svojstava Left, Top, Width, Height (FormName.Move Left, [Top], [Width], [Height])

Kao i kod PictureBox kontrole mo\emo koristiti matode crtanja po formi:

Circle: FormName.Circle (X,Y) , Radius, Color

Line: FormName.Line (x1,y1) (x2,y2)

PSet: FormName.PSet (X,Y), ColorMetode ispisa i brisanja teksta na formi:

Print: FormName.Print()Primjeri:

Form1.Print "abc", "def", "ghi"

Form1.Print

Form1.Print "12345"

Form1.Print "Primjer", Spc(5), "5 praznina"

Form1.Print "Primjer", Tab(5), "5 tabova"

Form1.Print Now()

Form1.Print True

Form1.Print Null

Form1.Print 1234 + 1111Cls: Brise cijelu formu od sadraja koji su nacrtani metodama ili uklanja ispisani tekst.Ne utie na kontrole koje su na formi.MDIta je MDI aplikacija?

MDI (Multiple Document Interface) je interfejs za rad sa vie dokumenata. Forme su u odnosu roditelj / dijete. Jedna (i jedina roditeljska parent) forma sadri jednu ili vie dijete (child) formi.

Nasuprot MDI su SDI (Single Document Interface) aplikacije.

Osobine MDI aplikacija:

u aplikaciji moe postojati samo jedna roditeljska forma,

nema ogranienja na broj dijete formi,

roditeljska forma je kontejner za sve dijete forme,

svi meniji i toolbar-ovi su obino vezani za roditeljsku formu,

svaki dokument koji se obrauje nalazi se unutar vlastite dijete forme,

roditeljska forma se dodaje u projekat opcijom Add MDI form, u MDI roditeljsku formu mogu se postaviti samo: samo kontrole koje imaju Align svojstvo (PictureBox, ProgressBar*, StatusBar*, ToolBar*), Timer i CommonDialog kontrole *Da bi ste mogli dodavati ProgressBar, StatusBar, ToolBar na roditeljsku MDI formu morate omoguiti komponentu Microsoft Windows Common Controls 6.0 (SP6) na sledei nain: Project Components ekirati Microsoft Windows Common Controls 6.0 (SP6).

ActiveForm svojstvo roditeljske forme vraa referencu na aktivnu formu.

Arrange metod ureuje raspored dijete formi. Upotrebljava se na sledei nain:

ImeForme.Arrange(parametar) gdje parametar moe uzeti jednu od vrijednosti:

1 - Cascade za kaskadni raspored

2 - Tile za horizontal horizontalni

3 - Tile za vertical vertikalni

4 - Arrange Icons za araniranje minimiziranih prozora

Primjeri MDI aplikacija su Office aplikacije. Primjer SDI aplikacije je MS Paint.Modalne formeForme mogu da se otvore u dva reima: standardno (nemodalno) ili modalno.Sa formi koje su otvorene u standardnom reimu mogue je prenijeti fokus na drugu formu.

Sa formi koje su otvorene modalno nije mogue prenijeti fokus na drugu formu. Na drugu formu mogue je prei samo nakon zatvaranja modalne forme.

ImeForme.Show [vbModeless]

ImeForme.Show vbModalMenijiMenije kreiramo tako to pokreemo MenuEditor: ToolsMenuEditor.

Neophodno je popuniti barem svojstva Caption (tekst koji e se ispisati za opciju menija) i Name preko kog emo se referencirati na opciju menija.

Padajui menijiZa formu na kojoj elimo prikazati iskaui meni, prvo kreiramo klasini meni. Potrebno je kreirati takav meni koji ima jednu korijensku opciju. Preko svojstva Name te opcije se identifikuje meni. Tokom dizajniranja forme potrebno je postaviti svojstvo Visible na False. Ovo e omoguiti da po otvaranju forme meni ne bude vidljiv. U nekom trenutku tokom izvravanja programa kada nam je potreban iskaui meni potrebno je pozvati sledei kod:PopupMenu NazivMenija

MODUL 6: Tipovi podataka, promjenljive, nizovi i konstanteTipovi podatakaTipovi podataka u Visual Basic-u su: Byte, Boolean, Integer, Long, Currency, Decimal, Single, Double, Date, String, Object, Variant (podrazumijevani), korisniki definisani tipovi kao i specifini tipovi objekata. U sledeoj tabeli pobrojani su svi tipovi podataka Visual Basic-a:Data typeStorage sizeRange

Byte1 byte0 to 255

Boolean2 bytesTrue or False

Integer2 bytes-32,768 to 32,767

Long(long integer)4 bytes-2,147,483,648 to 2,147,483,647

Single(single-precision floating-point)4 bytes-3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values

Double(double-precision floating-point)8 bytes-1.79769313486232E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values

Currency(scaled integer)8 bytes-922,337,203,685,477.5808 to 922,337,203,685,477.5807

Decimal14 bytes+/-79,228,162,514,264,337,593,543,950,335 with no decimal point; +/-7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest non-zero number is +/-0.0000000000000000000000000001

Date8 bytesJanuary 1, 100 to December 31, 9999

Object4 bytesAny Object reference

String (variable-length)10 bytes + string length0 to approximately 2 billion

String(fixed-length)Length of string1 to approximately 65,400

Variant(with numbers)16 bytesAny numeric value up to the range of a Double

Variant(with characters)22 bytes + string lengthSame range as for variable-length String

User-defined(using Type)Number required by elementsThe range of each element is the same as the range of its data type.

Deklaracija promjenljivih i opseg vidljivostiMogue je deklarisati promjenljivu: tipa podataka i tipa objekta.

Primjer deklaracije promjenljive tipa podataka:

Dim brojzaposlenih As Integer

Primjer deklaracije promjenljive tipa objekta:

Dim forma As New Form

DimDim varname[([[lower To] upper])] [As [New] type]

Dim varname deklaracija promjenljive tipa Variant

Dim varname As type deklaracija promjenljive tip eksplicitno naveden

Dim varname As New type deklaracija promjenljive tipa objekat

Dim varname(upper) As type deklaracija niza odreene duine

Dim varname(lower To upper) As type deklaracija niza sa gornjom i donjom granicom indeksaDim na nivou modula omoguava vidljivost promjenljive u itavom modulu. Dim na nivou procedure/funkcije omoguava vidljivost promjenljive u itavoj proceduri.

PRIMJERI:

Promjenljive AnyValue i MyValue su podrazumijevano deklarisane kao Variant sa vrijednou postavljenom na Empty:Dim AnyValue, MyValue

Eksplicitna deklaracija promjenljive cjelobrojnog tipa:

Dim Number As Integer

Viestruka deklaracija u jednoj liniji pri emu je AnotherVar tipa Variant jer tip za nju nije naveden:

Dim AnotherVar, Choice As Boolean, BirthDate As Date

Primjer deklaracije niza iji su lanovi tipa Variant, a ija je duina 51. Indeksiranje elemenata je od 0 do 50, pod pretpostavkom da je Option Base postavljeno na 0 (podrazumijevana vrijednost koju je mogue postaviti na nivou modula)Dim DayArray(50)

Deklaracija dvodimenzione matrice iji su elementi cjelobrojne vrijednosti.Dim Matrix(3, 4) As Integer

Deklaracija trodimenzionalnog niza 5x6x3 iji su elementi tipa Double

Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double

Deklaracija niza elemenata datumskog tipa iji indeks ide od 1 do 10.

Dim BirthDay(1 To 10) As Date

StaticStatic varname[([[lower To] upper])] [As [New] type]

Static promjenljiva definisana na nivou procedure/funkcije zadrava svoju vrijednost i izmeu poziva procedure i funkcije. To znai da druge procedure/funkcije ne mogu da mijenjaju static promjenljivu. Promjenjiva se ne moe deklarisati kao Static na nivou modula.PRIMJER:

Function KeepTotal(Number)

Static Accumulate As Integer

MsgBox ("Po ulasku u funkciju: " + Str(Accumulate))

Accumulate = Accumulate + Number

KeepTotal = Accumulate

MsgBox ("Po izlasku iz funkcije: " + Str(Accumulate))

End Function

Sub Command1_Click()

KeepTotal (1)

' Accumulate = 50

KeepTotal (1)

KeepTotal (1)

MsgBox ("Izvan Keeptotal funkcije: " + Str(Accumulate))

End SubVidimo da promjenljiva Accumulate mijenja vrijednost samo unutar KeepTotal funkcije. Ako unutar Click dogaaja dodijelimo neku vrijednost Accumulate promjenljivoj, mi smo u stvari napravili novu implicitno deklarisanu promjenljivu koja nema veze sa istoimenom static promjenljivom iz funkcije.

PrivatePromjenljiva deklarisana kao Private je vidljiva u itavom modulu, ali ne i u drugim modulima. Koristi se samo na nivou modula i ne moe se koristiti na nivou procedure.PublicPromjenljiva deklarisana kao Public je vidljiva u itavom modulu i u drugim modulima. Koristi se samo na nivou modula i ne moe se koristiti na nivou procedure.

NAPOMENA: Iz svega prethodno navedenog moemo zakljuiti da ne postoji nain da se promjenljiva deklarisana unutar procedure / funkcije vidi izvan nje.NizoviNiz predstavlja seriju promjenljivih istog tipa (numeriki, string, logiki, ).

Nizovi mogu biti:

fiksne duine i

promjenljive duine.

Nizove fiksne duine deklariemo na sledei nain:

Dim NazivNiza( [LowerBound To [UpperBound]] ) [As tippodataka]

Niz promjenljive duine deklariemo na sledei nain:

Dim NazivNiza() [As tippodataka]

pri emu nakon toga u kodu jednom ili vie puta moemo koristiti naredbu za promjenu dimenzija niza:

Redim [Preserve] NazivNiza( [LowerBound To [UpperBound]] )

Opcija Preserve se koristi ukoliko elimo da sauvamo sadraj elemenata niza. Ako je ne navedemo, svi podaci u nizu se briu.

Granice niza se mogu odrediti upotrebom funkcija:UBound(NazivNiza) i LBound(NazivNiza)Korisniki definisani tipoviKorisnicima je dozvoljeno da sami kreiraju svoje tipove.Oni omoguavaju struktuiranje podataka.

Korisniki tipovi sastavljeni su od standardnih tipova.

Korisniki tipovi su sloeni tipovi.

Tipove je mogue definisati samo na nivou modula.

[Private | Public] Type typename

elementname [([subscripts])] As type

[elementname [([subscripts])] As type]

. . .

End Type

Prethodno definisan tip se moe upotrijebiti pri deklaraciji promjenljivih:

Dim promjenljiva As typename ili

Dim niz(1 To 100) As typenameOsnovne operacije za rad sa promjenljivimaAritmetiki operatori^ eksponencijacija npr. 2^2 daje 4* mnoenje

/ dijeljenje npr. 10/3 daje 3.333333\ dijeljenje cjelobrojnih promjenljivih npr. 11\4 daje 2 ili 100\3 daje 33Mod ostatak pri dijeljenju npr. 10 Mod 3 daje 1, 12 Mod 4.3 daje 0, 12.6 Mod 5 daje 3(primijetimo da se realni brojevi najprije zaokrue)

+ sabiranje

- oduzimanje

Operatori poreenja=, =,

Operatori spajanja (stringova)& i +

Logiki operatori (nad promjenljivim tipa Boolean)And logiko i (ili poreenje bit po bit za numerike vrijednosti) npr. True And False daje False, 10 And 8 daje 8 (tj 1010 And 1000 daje 1000)Imp logika implikacija (A Imp B daje False samo ako je A True a B False; inae je true)Not logika negacija

Or logiko ili

Eqv logika ekvivalencija (ekvivalentno upotrebi Not Or tj A Eqv B ili Not(A Or B))

Xor logiko ekskluzivno ili (A Xor B daje True samo ako su A i B logiki razliiti; inae je False)Znaajnije funkcije za rad sa stringovimaLTrim(string) uklanja praznine na lijevoj strani stringa

RTrim(string) uklanja praznine na desnoj strani stringa

Trim(string) uklanja praznine na lijevoj i desnoj strani stringa

Left(string, length) vraa prvih length znakova stringa string

Right(string, length) vraa poslednjih length znakova stringa string

Mid(string, start[, length]) vraa length znakova stringa string od pozicije start

Len(string | varname) vraa duinu stringa

InStr([start, ]string1, string2) vraa poziciju prvog pojavljivanja stringa string1 u stringu string2

String(number, character) ponavljanje karaktera character number putaKonstante

Konstante se definiu na nivou aplikacije. Mogu se koristiti bilo gdje ali im program ne moe promijeniti vrijednost. Vidljivost moe biti na nivou modula (Private) ili na nivou aplikacije (Public.)

Konstante se deklariu na sledei nain:

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

Primjeri:

' deklaracija konstante koja je podrazumijevano PrivateConst MyVar = 459

' deklaracija Public konstante

Public Const MyString = "HELP"

' eksplicitna deklaracija Private konstantePrivate Const MyInt As Integer = 5

' deklaracija vie konstanti u istoj linijiConst MyStr = "Hello", MyDouble As Double = 3.4567Funkcije za pretvaranje promjenljivih tipa string u drugi tipFunkcije za pretvaranje promjenljivih tipa string u drugi tip su: CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar

Primjeri:

Dim MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "February 12, 1969" ' Define date.

MyShortDate = CDate(MyDate) ' Convert to Date data type.MyTime = "4:35:47 PM" ' Define time.

MyShortTime = CDate(MyTime) ' Convert to Date data type.

Neke specifinosti vezane za pojedine tipoveImplicitna deklaracija promjenljivihUkoliko se ne izvri implicitna deklaracija tipa promjenljive, tokom izvravanja programa tip e biti automatski odreen u kontekstu naredbe. Implicitna deklaracija moe dovesti do greaka koje kompajler ne moe otkriti.

Primjer:

Function SafeSqr(num)

TempVal = Abs(num)

SafeSqr = Sqr(TemVal)

End Function

Zato se preporuuje eksplicitna deklaracija.

Upotreba Option Explicit

Naredbom Option Explicit na poetku modula zahtijeva se eksplicidna deklaracija (odreivanje imena i tipa promjenljive) tako da kompajler moe da uoi eventualne greke u kodu jo u fazi kreiranja programa.

Da bi se naredba Option Explicit automatski pojavila na poetku svakog modula treba ekirati Tools Options Editor Require Variable Declaration.

Upotreba Option BaseNaredba Option Base nam omoguava postavljanje podrazumijevane donje granice za nizove na 0 ili1. Ukoliko se ne navede podrazumijevana je vrijednost 0. Sintaksa je:Option Base {0 | 1}

Deklaracija stringova fiksne duineString je mogue definisati tako da ima nepromjenljivu duinu. Primjer deklaracije stringa fiksne duine je:

Dim sFixed As String * 10

CurrencyJo neto o tipu Currency. Currency vrijednosti se uvaju kao velike cjelobrojne vrijednosti koje ne sadre decimalni zarez. Kada je vrijednost promjenljive potrebna VB je dijeli sa 10000 da bi se dobio realan broj na 4 decimale.BooleanLogike vrijednosti se interno smijetaju kao cjelobrojne vrijednosti: True kao -1 a False kao 0. Ideje za upotrebu ?!

DatePrikaz datuma i vremena zavisi od podeavanja formata datuma i vremena u Regional Settings.VariantVariant je podrazumijevani tip podataka i moe da prihvati bilo koju vrijednost. U razliitim trenucima tokom izvravanja programa moe da prihvata podatke razliitog tipa.Primjer:

Dim Temp As Variant

Temp = Now

Temp = 1

Temp = Ovo je string

Variant variabla moe da prihvati vrijednosti koje promjenljive ostalih tipova ne mogu:

Null vrijednost nepoznata,

Empty vrijednost nije dodijeljena,

Error greka vraena funkcijom CVerr,

Nothing omoguava da se varijabla oisti tj da se oslobodi memorija nakon to je sadravala objekat koji nam vie nije potreban

Za provjeru da li je vrijednost varijable Null ili Empty koriste se funkcije IsNull i IsEmpty.

Odreivanje tipa promjenljiveFunkcija TypeName vraa string koji pokazuje koji je tip promjenljive.TypeName(varname)

Funkcija VarType vraa cijeli broj koji pokazuje koji je tip promjenljive.

VarType(varname)

Prilikom upotrebe VarType funkcije za poreenje se mogu koristiti konstante koje su navedene u sledeoj listi:

VJEBE: Tipovi podataka, promjenljive, nizovi i konstante

Cilj vjebe

Upoznavanje studenata sa tipovima podataka, deklaracijom promjenljivih, ivotom trajanja promjenljivih, nizovima, korisniki definisanim tipovima, operatorima i konstantama.

Tok vjebi

demonstracija deklaracije varijabli i greaka koje nastaju u vezi sa opsegom vidljivosti demonstracija kreiranja i rada sa korisnikim tipovima, stringovima fiksne duine, Currency promjenljivima, Variant promjenljivima, Date tipom i TypeName funkcijom

demonstracija rada sa nizovima

demonstracija upotrebe funkcija koje rade sa stringovimaVJEBA 21: Kreirati aplikaciju sa jednom formom i dva modula. U modulu Module1.bas napisati funkciju KeepTotal koja e demonstrirati odravanje vrijednosti static promjenljive Accumulate. Sa glavne forme, pritiskom na dugme, tri puta pozvati funkciju KeepTotal koja e pri svakom pozivu uveati promjenljivu Accumulate.Probati deklarisati Private i Public promjenljivu u funkciji KeepTotal.

Pokuati deklarisati Static varijablu na nivou modula.

Uporediti promjenljive deklarisane naredbama Dim i Private na nivou modula.

Isprobati referenciranje na Dim i Private promjenljive deklarisane na nivou drugog modula.

UPUTSTVO:Form1.frmSub Command1_Click()

KeepTotal (1)

' Accumulate = 50

KeepTotal (1)

KeepTotal (1)

MsgBox ("Izvan Keeptotal funkcije: " + Str(Accumulate))

End Sub

Private Sub Command2_Click()

Call Ispis

End SubModule1.basOption Explicit

' primjer pogresne upotrebe Static deklaracije promjenljive izvan nivoa procedure/funkcije

' Static Prva As String

' ovako deklarisana promjenljiva DrugaDim je po opsegu vidljivosti Private tj vidljiva je na nivou modula

Dim DrugaDim As Integer

Private DrugaPrivate As Integer

Function KeepTotal(Number)

Static Accumulate As Integer

' primjer pogresne upotrebe Private deklaracije promjenljive izvan nivoa modula

' Private Treca As String

' primjer pogresne upotrebe Public deklaracije promjenljive izvan nivoa modula

' Public Cetvrta As String

DrugaDim = DrugaDim + 1

DrugaPrivate = DrugaPrivate + 1

MsgBox ("DrugaDim: " + Str(DrugaDim) + " DrugaPrivate: " + Str(DrugaPrivate))

MsgBox ("Po ulasku u funkciju: " + Str(Accumulate))

Accumulate = Accumulate + Number

KeepTotal = Accumulate

MsgBox ("Po izlasku iz funkcije: " + Str(Accumulate))

End FunctionModule2.basOption Explicit

Sub Ispis()

' neuspjesan ispis vrijednosti promjenljive DrugaDim i DrugaPrivate deklarisane u Module1.bas

' MsgBox ("DrugaDim: " + Str(DrugaDim))

MsgBox ("DrugaPrivate: " + Str(DrugaPrivate))

End Sub

VJEBA 22: Definisati jedan korisniki tip. Dodijeliti vrijednosti pojedinim poljima i ispisati ih na formi.

Deklarisati string duine 10, dodijeliti mu niz od 5 karaktera i na formi ispisati taj string iz kog slijedi neki tekst. Uoiti praznine na kraju prvog stringa.

Deklarisati jednu Currency promjenljivu, dodijeliti joj vrijednost pa je ispisati na formi. Izmnoiti takvu Currency varijablu realnim brojevima razliite preciznosti i dobijene rezultate ispisati na formi.

Na formi ispisati vrijednosti funkcija Now, Date i Time sa razliitim podeavanjima Regional Settings-a za datum i vrijeme.

Deklarisati promjenljivu tipa Variant pa joj dodijeliti: podatak tipa datum/vrijeme dobijen kao rezultat funkcije Now, cijeli broj 1, i tekst Ovo je string pa ispisati vrijednost te promjenljive tipa Variant.

Deklarisati nekoliko promjenljivih pa upotrebom funkcije TypeName ispisati njihove tipove.

UPUTSTVO:Option Explicit

Private Type EmployeeRecord

ID As Integer

Name As String

Address As String

Phone As String

End Type

Private Sub Form_Activate()

' primjer korisnicki definisanog tipa

Dim MyRecord As EmployeeRecord

MyRecord.ID = 1

MyRecord.Name = "Markovic Marko"

MyRecord.Address = "Kralja Petra I 123"

MyRecord.Phone = "065/123-456"

Form1.Print "ID = " + Str(MyRecord.ID)

Form1.Print "Name = " + MyRecord.Name

Form1.Print "Address = " + MyRecord.Address

Form1.Print "Phone = " + MyRecord.Phone

Form1.Print

' primjer deklaracije i upotrebe stringa fiksne duzine

Dim sFixed As String * 10

sFixed = "12345"

Form1.Print sFixed + "67890"

Form1.Print

' primjer gubitka preciznosti u radu sa Currency promjenljivima

Dim Valuta As Currency, Rezultat As Currency

Valuta = 123.4567

Form1.Print Str(Valuta)

Rezultat = Valuta * 0.0209

Form1.Print "123.4567 * 0.0209 = " + Str(Rezultat)

Rezultat = Valuta * 0.020901

Form1.Print "123.4567 * 0.020901 = " + Str(123.4567 * 0.020901) + " a Rezultat=" + Str(Rezultat)

Form1.Print

' primjer razlicitih formata datuma i vremena pri promjeni Regional Settings-a

Form1.Print Now ' ispisuje datum i trenutno vrijeme (Long Time settings)

Form1.Print Date ' ispisuje tekuci datum

Form1.Print Time ' ispisuje trenutno vrijeme (Long Time settings)

Form1.Print

' primjer upotrebe Variant tipa

Dim Temp As Variant

Temp = Now

Temp = 1

Temp = "Ovo je string"

Form1.Print Temp

Form1.Print

' primjer upotrebe Typename funkcije

Dim NullVar, MyType, StrVar As String, IntVar As Integer, CurVar As Currency

Dim ArrayVar(1 To 5) As Integer

NullVar = Null ' Assign Null value.

Form1.Print TypeName(StrVar) ' Returns "String".

Form1.Print TypeName(IntVar) ' Returns "Integer".

Form1.Print TypeName(CurVar) ' Returns "Currency".

Form1.Print TypeName(NullVar) ' Returns "Null".

Form1.Print TypeName(ArrayVar) ' Returns "Integer()".

Form1.Print

End Sub

VJEBA 23: Deklarisati jedan staticki Staticki i jedan dinamiki Dinamicki niz stringova. U dogaaju Form_Load dodijeliti proizvoljne vrijednosti svim lanovima niza Staticki. U dogaaju Form_Activate ispisati vrijednosti nekoliko lanova niza Staticki, ispisati donju i gornju granicu prije i nakon redimenzioniranja niza Dinamicki sa 3 na 2 i ispisati vrijednost lana Dinamicki(3) prije i poslije redimenzioniranja.UPUTSTVO:Form1.frmOption Explicit

Dim Staticki(1 To 10) As String, Dinamicki() As String

Private Sub Form_Load()

Staticki(1) = "jedan"

Staticki(2) = "dva"

Staticki(3) = "tri"

Staticki(4) = "cetiri"

Staticki(5) = "pet"

Staticki(6) = "sest"

Staticki(7) = "sedam"

Staticki(8) = "osam"

Staticki(9) = "devet"

Staticki(10) = "deset"

ReDim Dinamicki(1 To 3)

Dinamicki(1) = "1"

Dinamicki(2) = "2"

Dinamicki(3) = "3"

End Sub

Private Sub Form_Activate()

Form1.Print Staticki(3)

Form1.Print Staticki(6)

Form1.Print Staticki(9)

Form1.Print Staticki(2) + " " + Staticki(5)

Form1.Print Dinamicki(3)

Form1.Print "LBound(Dinamicki)=" + Str(LBound(Dinamicki)) + " a UBound(Dinamicki)=" + Str(UBound(Dinamicki))

ReDim Dinamicki(1 To 2)

Form1.Print "LBound(Dinamicki)=" + Str(LBound(Dinamicki)) + " a UBound(Dinamicki)=" + Str(UBound(Dinamicki))

Form1.Print Dinamicki(3)

End Sub

VJEBA 24: Deklarisati promjenljivu tipa String pa demonstrirati funkcije: Trim, LTrim, RTrim, Left, Right, Mid, Len i InStr.

UPUTSTVO:Option Explicit

Private Sub Form_Activate()

Dim Tekst As String

Tekst = " Dobrodosli na vjezbe izOsnove programiranja "

Form1.Print "x" + Tekst + "x - Tekst"

Form1.Print "x" + Trim(Tekst) + "x - Trim(Tekst)"

Form1.Print "x" + LTrim(Tekst) + "x - LTrim(Tekst)"

Form1.Print "x" + RTrim(Tekst) + "x - RTrim(Tekst)"

Form1.Print "x" + Left(Tekst, 13) + "x - Left(Tekst, 13)"

Form1.Print "x" + Right(Tekst, 16) + "x - Right(Tekst, 16)"

Form1.Print "x" + Mid(Tekst, 18, 6) + "x - Mid(Tekst, 18, 6)"

Form1.Print "x" + Str(Len(Tekst)) + "x - Str(Len(Tekst))"

Form1.Print "x" + Str(InStr(Tekst, "vjezbe")) + "x - Str(InStr(Tekst,'vjezbe'))"

End Sub

MODUL 7: Kontrola toka programaIF THEN ELSE narebaIf naredba se koristi kada je potrebno izvriti jednu ili grupu naredbi u zavisnosti od vrijednosti uslova koji se ispituje.Sintaksa jednostavne If naredbe je:

If condition Then [statements] [Else elsestatements]

If naredba moe se koristiti za provjeravanje vie vrijednosti:

If condition Then [statements][ElseIf condition-n Then [elseifstatements] ...[ElseIf condition-n Then [elseifstatements] ...[Else [elsestatements]]End If

condition su izrazi koji treba da rezultuju logikim vrijednostima True ili False.[elseifstatements] , [statements] predstavljaju jednu naredbu ili grupu naredbi koje e se izvriti.Broj ElseIf kaluzula u jednoj If naredbi nije ogranien.

Else i ElseIf klauzule su opcione.

Primjer:

Dim Number, DigitsNumber = 53If Number < 10 Then

Digits = 1

ElseIf Number < 100 Then

Digits = 2

Else

Digits = 3

End If

U If klauzulama se mogu ispitivati vrijednosti razliitih iskaza:If I < 0 Then

[blok naredbi 1]ElseIf J > 100 Then

[blok naredbi 2]Else

[blok naredbi 3]End If

If naredbe se mogu ugnijezditi:If Mjesec = 1 Or Mjesec = 2 Then

Doba = zima

ElseIf Mjesec = 3 Then

If Dan < 21 Then

Doba = zima

Else

Doba = proljece

EndIf

ElseIf Mjesec = 4 Or Mjesec = 5 Then

Doba = proljece

ElseIf Mjesec = 6 Then

If Dan < 21 Then

Doba = proljece

Else

Doba = ljeto

EndIf

ElseIf Mjesec = 7 Or Mjesec = 8 Then

Doba = ljeto

ElseIf Mjesec = 9 Then

If Dan < 23 Then

Doba = ljeto

Else

Doba = jesen

EndIf

ElseIf Mjesec = 10 Or Mjesec = 11 Then

Doba = jesen

ElseIf Mjesec = 12 Then

If Dan < 21 Then

Doba = jesen

EndIf

Else

Doba = zima

End IfSELECT CASE naredbaSelect Case naredba omoguava izvravanje tano jedne naredbe (ili grupe naredbi) u zavisnosti od vrijednosti od vrijednosti izraza koja se ispituje.Select Case testexpression

[Case expressionlist-n

[statements-n]] ...

[Case Else

[elsestatements]]

End Select

testexpression je iskaz ija vrijednost se ispituje.

[statements-n] su naredbe ili grupe naredbi koje se izvravaju ukoliko je vrijednost iskaza testexpression jednaka vrijednosti expressionlist-n.

Ukoliko ni jedna grupa naredbi nije izvrena, tj. ako vrijednost testexpression ne odgovara ni jednoj vrijednosti statements-n izvrie se, ukoliko je naveden, blok naredbi elsestatements.Broj Case klauzula u jednoj Case naredbi nije ogranien.Koja je razlika izmeu If i Case naredbe? U If, ElseIf klauzulama se mogu testirati vrijednosti razliitih iskaza dok se u Case naredbi ispituju razne vrijednosti samo jednog izraza testexpression.

U Case klauzulama je mogue navesti vie vrijednosti ili opsega (koji se odvajaju zarezima).Case naredbe mogue je ugnijezditi.

Primjer:

Select Case OcjenaCase 5

Slovima = petCase 6

Slovima = sestCase 7

Slovima = sedamCase 8

Slovima = osamCase 9

Slovima = devetCase 10

Slovima = desetCase Else

Slovima = greskaEnd Select

Primjer:

Select Case OcjenaCase 1 To 5Select Case Ocjena

Case 5

Slovima = odlican (srednja i osnovna), nije poloio (fakultet)

Case 4

Slovima = vrlodobar

Case 3

Slovima = dobar

Case 2

Slovima = dovoljan

Case 1

Slovima = nedovoljan

End Select

Case 6 To 10

Select Case Ocjena

Case 5 iako nije logino nije ni pogreno

Slovima = pet

Case 6

Slovima = sest

Case 7

Slovima = sedam

Case 8

Slovima = osam

Case 9

Slovima = devet

Case 10

Slovima = deset

End Select

Case ElseSlovima = greska

End SelectPrimjer:

Select Case BrojCase 1 To 5, 6 To 10

Slovima = ocjena iz osnovne, srednje, sa fakulteta ili broj bodova

Case Is > 11, Is 11, Is Components i selektujemo eljenu kontrolu.

RichTextBox kontrolaOvu kontrolu koristimo kada elimo da kreiramo ili mijenjamo .rtf tekstualne fajlove koji osim podataka o tekstu sadre i podatke o stilu. Kontrolu je mogue postaviti na formu ukoliko prije toga sa Project -> Components menija omoguimo upotrebu kontrole Microsoft Rich Textbox Control 6.0 (SP6) (ako je instalran Service Pack 6 za Visual Basic 6).

Podaci koje uva RichTextbox kontrola uitavaju se iz fajla i snimaju u fajl metodama LoadFile i SaveFile.

Calendar i MSChart kontrolaNeke od kontrola koje nisu podrazumijevano dostupne u razvojnom okruenju Visual Basic-a su Calendar i MSChart kontrola.

Calendar kontrola moe se korititi za izbor datuma. Za razliku od unosa datuma u TextBox kontroli, Calendar kontrola omoguava grafiki interfejs za izbor datuma kao i jednostavniji izbor mjeseca i godine.

Najvanije svojstvo ove kontrole je podrazumijevano svojstvo Value koje uva vrijednost odabranog datuma.

MSGrid kontrola omoguava grafiki prezentaciju podataka u obliku grafikona. Najvanija svojstva ove kontrole su:

1. chartType ijim izborom se omoguava razliita prezentacija podataka,

2. columnCount koje predstavlja broj kolona serija u grafikonu,3. rowCount koje predstavlja broj redova serija u grafikonu,

4. Data predstavlja vrijednost koja se prikazuje,

5. ShowLegend omoguava prikazivanje legende (nazive serija tj. osa)

Upravljanje programskim referencamaSlino kontrolama, moe se ukazati potreba za upotrebom razliitih procedura i funkcija koje se nalaze u bibliotekama. Da bi smo omoguili njihovo koritenje potrebno je da u program ukljuimo odreene reference. To postiemo odaborom referenci (biblioteka) u References dijalogu do kog dolazimo prekoProject->References opcije glavnog menija.

Npr. ukoliko elimo da koristimo ovezivanje sa bazama podataka bie potrebno da ukljuimo referencu na Data Accesss Object.Podrazumijevana forma aplikacije i procedura MainVeina primjera koji su do sada koriteni bili su zasnovani na formama tj. prilikom kreiranja svakog projekta koristili smo podrazumijevanu formu a to je forma koja se automatski kreira pri pokretanju novog projekta.U toku pravljenja aplikacije mogue je promijeniti ovo svojstvo i prilikom aplikacije inicijalno otvoriti neku drugu formu. Ovo podeavanje vri se izborom forme sa padajue liste startup Object u dijalogu Project Properties do kog se dolazi sa glavnog menija Project imeprojekta Properties.

Mogue je da objekat od kog e aplikacija poeti izvravanje ne bude neka od formi ve procedura Sub Main. Procedura sa ovakvim nazivom (koju kreira korisnik) je specifina ba po tome to je to jedina procedura sa kojom je mogue poeti izvravanje aplikacije.Iz procedure Sub Main mogue je otvoriti druge forme i kontrolisati tok izvravanja programa ali i napraviti program koji ne biti baziran na korisnikom interfejsu. Tipini primjeri upotrebe ovakvog naina pokretanja aplikacije su: prikazivanje Splashscreen prozora sa informacijama o programu, autoru, pravima upotrebe programa,

mogunost izvravanja koda za povezivanje sa bazom podataka,

prijavljivanje korisnika za rad u programu,

Rad sa tekstualnim fajlovima otvaranje, zatvaranje, itanje i upisSintaksa naredbe za otvaranje fajlova:

Open pathname For mode [Access access] [lock] As [#]filenumber

gdje mode moe da ima neku od vrijednosti: Append, Binary, Input, Output, or RandomSintaksa naredbe za zatvaranje fajla je:

Close [filenumberlist]

Sintaksa naredbe za upisivanje podataka u otvoreni fajl je:Print #filenumber, [outputlist]

gdje je outputlist lista vrijednosti odvojenih razmacima ili taka-zarezom; u listi vrijednosti je mogue koristiti jedan ili vie razmaka i/ili tabulatora upotrebom funkcija Spc() i Tab().

Sintaksa naredbi za itanje podataka iz otvorenog fajla je:

Input #filenumber, varlistLine Input #filenumber, varnamepri emu se Input naredba koristi kada se podaci itaju u listu promjenljivih a LineInput kada se podaci iz jedne linije itaju u jednu promjenljivu.

Primjer upisivanje podataka u fajl:

' otvaranje/kreiranje fajla proba.txt radi upisivanja

Open App.Path & "\proba.txt" For Output As #1

Print #1, "This is a test" ' tekst

Print #1, ' prazna linija

Print #1, "tekst1 1"; Tab; "tekst 2" ' dva stringa razdvojena tabulatorom

Print #1, "Zdravo"; " "; "svijete" ' dva stringa razdvojena razmakom

Print #1, Spc(5); "5 vodecih razmaka"

Print #1, Tab(10); "Zdravo" ' stampa rijec od pozicije 10

Close #1

MsgBox ("Upisivanje u fajl proba.txt zavrseno !!!")Primjer itanje podataka iz fajla:

Open App.Path & "\proba.txt" For Input As #1

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Input #1, a, b, c

MsgBox (a): MsgBox (b): MsgBox (c)

Close #1SINTAKSA

Komentari u VB koduKomentare u Visual Basic kodu koristimo kako bi smo pojasnili neke linije ili blokove koda. Za komentarisanje se navode jednostruki navodnici . Zakomentarisati se moe itava linija ili tekst koji slijedi iza Visual basic naredbi.Za komentarisanje se moe koristiti i Rem naredba. Za razliku od komentara u formi jednostrukih navodnika ova naredba je ravnopravna sa ostalim naredbama i vae sva pravila kao i za ostale naredbe. Nema efekta na izvravanje aplikacije.

ovo je komentar u citavoj liniji

Load Form1 a ovo je komentar nakon naredbe

Prenoenje koda u sledei redest sluaj je da se neki niz instrukcija ne moe napisati tako da je vidljiv u jednom redu. U tom sluaju mogue je koristiti oznaku za prenoenje koda u sledei red _ .

Open App.Path & "\proba.txt" _

For Output As #1Vie naredbi u jednoj liniji kodaAko iz nekog razloga elimo u jednoj liniji napisati vie instrukcija onda ih odvajamo dvotakom : .Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

OPCIJE EDITORA TEKSTA

Code Settings

Auto Syntax Check da li VB automatski treba da verifikuje ispravnost sintakse nakon prelaska u novi red ili ne

Require Variable Declaration da li VB treba automatski, na poetku svakog modula, treba da doda naredbu Option Explicit koja e zahtijevati obaveznu deklaraciju promjenljivih

Auto List Members da li VB automatski treba da predloi moguu listu opcija (svojstava i metoda)

Auto Quick Info da li VB treba da prikazuje informacije o funkcijama i njihovim parametrima

Auto Data Tips da li da se tokom dibagovanja programa u Break modu prozora za pisanje koda, iznad promjenljivih ispisuju trenutne vrijednosti u trenutku prekida izvravanja koda

Auto Indent dozvoljava da poravnanje tekue linije obezbjeuje isto poravnanje i za sledee linije koda

Tab Width podrazumijevana irina tabulatora (izmeu 1 i 32, podrazumijevano 4)

Window Settings

Drag-and-Drop Text Editing dozvoljava prevlaenje koda izmeu Code, Immediate i Watch prozora

Default to Full Module View podrazumijevani izgled moda prozora koda je lista procedura / funkcija koja se moe skrolovati (nasuprot tome je prikaz samo jedne procedure / funkcije)

Procedure Separator odreuje da li e se prikazivati separator (linija) procedura i funkcijaVJEBE: Forme, kontrole i kodiranje napredne tehnike

Cilj vjebe

Cilj ove vjebe je upoznavanje studenata sa naprednim tehnikama kreiranja korisnikog interfejsa, upotrebom novih kontrola, upotrebom kontrola i koda iz biblioteka preuzetih od drugih programera, kao i upoznavanje sa nekim specifinostima pisanja koda i koritenja editora koda.VJEBA 29: Kreirati aplikaciju koja iz glavne forme form1 poziva formu Form2 na nain da prije prikazivanja druge forme izmijeni neka od njenih svojstava.

UPUTSTVO:Private Sub Command1_Click()

MsgBox ("Prije Load Form2")

Load Form2

MsgBox ("Nakon Load Form2, a prije Form2.Show")

Form2.Caption = "Izmjena podataka u formi Form2"

Form2.Status = "izmjena"

Form2.Show

MsgBox ("Nakon Form2.Show")

End Sub

Private Sub Command2_Click()

Load Form2

Form2.Caption = "Unos novih podataka u formi Form2"

Form2.Status = "unos"

Form2.Show

End Sub

VJEBA 30: Kreirati aplikaciju koja e omoguiti uitavanje i izmjenu sadraja odabranog .rtf fajla (odabir se vri FileOpen CommonDialog kontrolom). Nakon izmjene sadraja fajla korisniku omoguiti da tekst snimi u .rtf fajl. Obezbijediti mogunost promjene fonta, veliine slova i stila (bold, italik).UPUTSTVO:

Private Sub Command1_Click()

Dim strOpen As String

dlgBox.ShowOpen

strOpen = dlgBox.FileName

rtfData.LoadFile strOpen

End Sub

Private Sub Command2_Click()

Dim strNewFile As String

dlgBox.ShowSave

strNewFile = dlgBox.FileName

rtfData.SaveFile strNewFile

End Sub

Private Sub Command3_Click()

dlgBox.ShowFont

rtfData.Font.Name = dlgBox.FontName

rtfData.Font.Size = dlgBox.FontSize

rtfData.Font.Bold = dlgBox.FontBold

rtfData.Font.Italic = dlgBox.FontItalic

End Sub

VJEBA 31: Demonstrirati upotrebu niza kontrola. Na glavnoj formi postaviti nekoliko TextBox i nekoliko Label kontrola. Obraditi Change dogaaj TextBox kontrola i Click dogaaj Label kontrola tako da se izazove promjena u sadraju samih kontrola. Promijeniti Text i Caption svojstva kontrola upotrebom For Each petlje.UPUTSTVO:

Private Sub Command1_Click()

Dim Kontrola As Variant

For Each Kontrola In Text1

Kontrola.Text = "tekst"

Next

End Sub

Private Sub Command2_Click()

Dim Kontrola As Variant

For Each Kontrola In Label1

Kontrola.Caption = "tekst"

Next

End Sub

Private Sub Label1_Click(Index As Integer)

Label1(Index) = "labela"

End Sub

Private Sub Text1_Change(Index As Integer)

MsgBox ("Pritisnuli ste textbox sa indeksom " + Str(Index))

End Sub

VJEBA 32: Kreirati jednostavnu aplikaciju koja sadri po jednu Calendar i MSChart kontrolu. Napisati kod koji e prikazati trenutno odabran datum u Calendar kontroli. Napisati kod koji e prikazati podatke u dijagramu kao na slici.

UPUTSTVO:

Private Sub Command1_Click()

MsgBox (Str(Calendar1.Value))

End Sub

Private Sub Command2_Click()

With MSChart1

' Displays a 3d chart with 8 columns and 8 rows data

.chartType = VtChChartType3dBar

.ColumnCount = 8

.RowCount = 8

For Column = 1 To 8

For Row = 1 To 8

.Column = Column

.Row = Row

.Data = Row * 10

Next Row

Next Column

.ShowLegend = True

End With

End Sub

VJEBA 33: Napisati aplikaciju kojoj e inicijalni objekat pri pokretanju, umjesto forme, biti procedura Sub Main. U proceduri Sub Main pitati korisnika da li eli ui u program. Ako eli prikazati formu Form1. Ako ne eli napustiti program.

VJEBA 34: Napisati aplikaciju koja e demonstrirati kreiranje / otvaranje tekstualne datoteke, upisivanje u nju, itanje iz tekstualne datoteke i zatvaranje.

UPUTSTVO:

Sub Main()

Dim linijaTeksta As String, a As String, b As String, c As String

' otvaranje/kreiranje fajla proba.txt radi upisivanja

Open App.Path & "\proba.txt" For Output As #1

Print #1, "This is a test" ' tekst

Print #1, ' prazna linija

Print #1, "tekst1 1"; Tab; "tekst 2" ' dva stringa razdvojena tabulatorom

Print #1, "Zdravo"; " "; "svijete" ' dva stringa razdvojena razmakom

Print #1, Spc(5); "5 vodecih razmaka"

Print #1, Tab(10); "Zdravo" ' stampa rijec od pozicije 10

Print #1, "jedan, dva, tri"

Close #1

MsgBox ("Upisivanje u fajl proba.txt zavrseno !!! Slijedi citanje !!!")

Open App.Path & "\proba.txt" For Input As #1

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Line Input #1, linijaTeksta: MsgBox (linijaTeksta)

Input #1, a, b, c

MsgBox (a): MsgBox (b): MsgBox (c)

Close #1

End Sub

MODUL 10: Otklanjanje greaka i rukovanje grekamaTokom pisanja programa mogue je napraviti greke.

Prema prirodi greaka moemo ih podijeliti na:

sintaksne ili

logike

Prema vremenu pojavljivanja i otkrivanja greke moemo podijeliti na:

greke koje e se pojaviti tokom kompajliranja i linkovanja tj kreiranja same aplikacije i na

greke koje e se pojaviti u toku izvravanja programa

Primjeri sintaksnih greaka:Prezime = Let( PunNaziv, 10)Prezime = Left( PunNaziv)

Prezime = Left( PunNaziv, Ime)

If Jedan1 F(x,n) =

1 za n=0

7. Napisati rekurzivnu funkciju za raunanje sume kubova: n3+(n-1)3++23+13

8. Napisati rekurzivnu funkciju za raunanje Fibonaijevih brojeva

n1 = 1, n2 = 1, ni = ni-1 + ni-21, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

9. Napisati rekurzivnu funkciju koja e omoguiti da se tekst koji se unosi rije po rije upotrebom InputBox funkcije ispie u obrnutom redoslijedu.

10. Napisati program koji rauna sumu kvadrata prirodnih brojeva:

22+42+62+82++(2n)2

Koristiti: Do While Loop, Do Loop While, Do Until Loop, Do Loop Until i For petlje1.

Option Explicit

Option Base 1

Private Sub Main()

Dim Niz() As Integer, Duzina As Integer, I As Integer, J As Integer, Temp As Integer

Duzina = InputBox("Unesite broj elemenata niza:", "Nizovi")

ReDim Niz(Duzina)

For I = 1 To Duzina

Niz(I) = InputBox("Unesite " + Str(I) + ". element niza - cijeli broj:", "Unos elemenata niza")

Next I

For I = 1 To Duzina

For J = I + 1 To Duzina

If Niz(J) < Niz(I) Then

Temp = Niz(I): Niz(I) = Niz(J): Niz(J) = Temp

End If

Next J

Next I

For I = 1 To Duzina

MsgBox (Str(I) + ". element niza je " + Str(Niz(I)))

Next I

End Sub2.

Option Explicit

Option Base 1

Private Sub Main()

Dim Niz() As String, Duzina As Integer, I As Integer, J As Integer, Temp As String

Duzina = InputBox("Unesite broj elemenata niza:", "Nizovi")

ReDim Niz(Duzina)

For I = 1 To Duzina

Niz(I) = InputBox("Unesite " + Str(I) + ". element niza - string:", "Unos elemenata niza")

Next I

For I = 1 To Duzina

For J = I + 1 To Duzina

If Niz(J) < Niz(I) Then

Temp = Niz(I): Niz(I) = Niz(J): Niz(J) = Temp

End If

Next J

Next I

For I = 1 To Duzina

MsgBox (Str(I) + ". element niza je " + Niz(I))

Next I

End Sub3.

Option Explicit

Private Sub Main()

Dim A As Single, B As Single, C As Single, Diskriminanta As Single

A = InputBox("A = ", "Kvadratna jednacina")

B = InputBox("B = ", "Kvadratna jednacina")

C = InputBox("C = ", "Kvadratna jednacina")

Diskriminanta = B ^ 2 - 4 * A * C

If Diskriminanta > 0 Then

MsgBox ("X1 = " + Str((-B + Sqr(Diskriminanta)) / (2 * A)))

MsgBox ("X2 = " + Str((-B - Sqr(Diskriminanta)) / (2 * A)))

ElseIf Diskriminanta = 0 Then

MsgBox ("X1 = X2 = " + Str(-B / (2 * A)))

ElseIf Diskriminanta < 0 Then

MsgBox ("X1 = " + Str(-B / (2 * A)) + " + i * " + Str(Sqr(-Diskriminanta) / (2 * A)))

MsgBox ("X2 = " + Str(-B / (2 * A)) + " - i * " + Str(Sqr(-Diskriminanta) / (2 * A)))

End If

End Sub4.

Option Explicit

Option Base 1

Private Sub Main()

Dim Niz() As Integer, Duzina As Integer, Proizvod As Long, X As Variant, I As Integer

Duzina = InputBox("Unesite broj elemenata niza:", "Nizovi")