programiranje i programski jezici - Mješovita srednja tehnička škola

MJEŠOVITA SREDNJA TEHNIČKA ŠKOLA TRAVNIK
PROGRAMIRANJE I PROGRAMSKI
JEZICI
- Skripta za vanredne učenike –
(Četvrti razred – VB)
Travnik, 2008.
Sadržaj
1. UVOD
6
Pokretanje Visual Basica-a
Prvi pogled na radno okruženje
Toolbox
Project explorer
Osobine - Properties
Form Layout
Postavljanje kontrola na formu
Pokretanje programa
Dodavanje programskog koda
2. OSNOVE DIZAJNIRANJA
18
Uvod
Form
Kontrole
Pristupne tipke
Formatiranje
Podešavanje osobina u fazi rada programa
Izbornici / Meniji
3. OSNOVE PISANJA PROGRAMSKOG KODA
30
Uvod
Prozor za pisanje programskog koda – View Code
Event procedure
Opće procedure / funkcije
Parametarske procedure
Funkcije
Načini prikaza procedura / funkcija
Neke važniji događaji
Message i Input box
Provjera sintakse
Auto Member liste
Duge linije programskog koda
4. VARIJABLE
44
Deklaracije varijbli
Tipovi varijabli
DIM ključna riječ
Nazivi varijabli
Dodjeljivanje vrijednosti varijablama
Inicijaliziranje varijabli
4
Pisanje izraza u naredbama pridruživanja
Pravila redoslijeda izvršavanja operacija
Operacije sa nizovima riječi (stringovima)
Nizovi
Jednodimenzionalni nizovi
Višedimenzionalni nizovi
Dinmiački nizovi
Korisnički definirani tipovi
5. OSNOVNE NAREDBE
55
Uslovni izrazi
Logička poređenja
Logičke operacije
NOT
AND
OR
XOR
EQV
IMP
Redoslijed izvršavanja
Naredbe odlučivanja
IF naredba
SELECT CASE naredba
Programske petlje
DO petlja
FOR petlja
Naredbe za grafički prikaz
Naredba LINE
Naredba CIRCLE
API Funkcije
6. RAD SA DATOTEKAMA PODATAKA
70
Uvod
Datoteke sa slučajnim pristupom
Postupak rada sa datotekama sa slučajnim pristupom
Otvaranje datoteka sa slučajnim pristupom
Upisivanje podataka
Čitanje podataka
Pozicioniranje na željeni red unutar datoteke podataka
Tekstualne datoteke
Kreiranje i otvaranje tekstualnih datoteka
Upisivanje podataka
Čitanje podataka
Zatvaranje tekstualnih datoteka
5
1. UVOD
Pokretanje Visual Basica-a
U tekstu će se koristiti primjeri i uputstva vezana za Visual Basic 6.0 (VB) koji se isporučuje
od strane Microsoft-a kao dio većeg i kompletnijeg paketa programa namijenjenih razvoju
aplikacija pod nazivom Visual Studio 6.0. Gotovo sve rečeno moguće je primjeniti kako za
starije varijante VB-a tako i za novije inačice ovog programskog jezika.
Slika 1.1 – Pokretanje Visual Basic-a
6
Nakon instalacije Visual Basica, program je u Windows-ima moguće jednostavno pokrenuti
korištenjem izbora Start – All Programs – Microsoft Visual Studio 6.0 – Microsoft Visual
Basic 6.0, kao što je to i pokazano na Slici 1.1.
Prvi prozor koji se pojavljuje na ekranu nakon pokretanja Visual Basic-a je prozor New
Project, slika 1.2.- Project je termin kojim se označava svaki program koji se kreira u Visual
Basic-u.
Slika 1.2 – Prozor New Project
U ovisnosti od postavki vezanih za pokretanje Visual Basica-a moguće je da se prozor New
Project i ne pojavi nakon prvog pokretanja te da se automatski otvori novi podrazumijevani
tip projekta (uobičajeno je da je to Strandard EXE tip projekta).
Prozor New Project sadrži tri kartice: New, Existing i Recent.
- Na kartici New nalaze se opcije za započinjanje različitih vrsta novih projekata u
Visual Basic-u.
- Preko kartice Existing moguće je nastaviti prethodno započeti projekat koji je
prethodno spašen.
- Kartica Recent omogućava pokretanje projekata na kojima se radilo tokom
prethodnih nekoliko pokretanja Visual Basic-a na datom računaru.
7
Slika 1.3 – Radna površina Visual Basica-a
U svrhu savladavanja osnova Visual Basic-a sasvim je dovoljno da se koristi „standardna“
vrsta projekata pa je samo potrebno na kartici New izabrati opciju Standard EXE čime će se
konačno pokrenuti radna površina Visual Basic-a, prikazana na slici 1.3.
Tokom savladavanja programiranja i dizajniranja u Visual Basic-u ovo će biti uobičajen
način pokretanja novih projekata. Moguće je na prozoru New Project uključiti opciju Don’t
show this dialog in the future čime će se spriječiti pokretanje ovog prozora svaki kasniji put
prilikom pokretanja Visual Basic-a. U ovom slučaju, svaki put kada se pokrene Visual Basic
automatski će se otvoriti novi projekat tipa Standard EXE.
Reaktiviranje pokretanja prozora New Project moguće je izborom opcije Promts for project
option koja se nalazi na ekranu Options na kartici Environment. Ovaj prozor se pokreće preko
izbornika Tools – Options.
Prvi pogled na radno okruženje
Kao što se moglo vidjeti na slici 3, Visual Basic radno okruženje sastoji se od nekoliko
različitih elemenata koji omogućavaju rad na svim koracima neophodnim u razvoju jednog
projekta. Na lijevoj strani prozora nalazi se Toolbox, dok se na desnoj strani nalaze Project
Explorer, Properties i Form Layout vertikalno poredani jedan iznad drugog:
- Toolbox sadrži kolekciju sličica koje predstavljaju kontrole koje se standardno
koriste u svakom Windows programu,
- Project Explorer prikazuje trenutni sadržaj projekta, sve elemente od kojih se
projekat sastoji,
8
- Properties prozor sadrži listu osobina određene kontrole ili objekta i omogućava na
brz način promjenu tih osobina te
- Form Layout omogućava jednostavno određivanje položaja prilikom pojavljivanja
pojedinih prozora u programu.
Inicijalno ovi elementi radnog okruženja se nalaze na pozicijama koje su upravo objašnjene.
Međutim, svaki od ovih elemenata može se po želji pomijerati i podešavati po veličini tako
da se zadovolje specifični zahtjevi tokom dizajniranja projekta.
Svaki od ovih elemenata Visual Basica bit će u kasnijim koracima detaljno objašnjen. Svi su
predstavljeni preko vlastitih prozora na radnoj površini Visual Basic-a, a moguće ih je
jednostavno dodati ili ukloniti sa radne površine.
Uklanjanje se vrši jednostavno klikom na X u gornjem desnom uglu odgovarajućeg prozora.
Dodavanje prozora jednog od ova četiri elementa radnog okruženja je moguće korištenjem
istoimene opcije na izborniku View:
- Project Explorer ili CRTL+R,
- Properties ili F4,
- Form Layout Window te
- Toolbox,
kao što je to vidljivo na slici 1.4.
Slika 1.4 – Opcije na izborniku View
9
Projekat se sastoji od nekoliko tipova datoteka koje predstavljaju osnovne elemente projekta
kao što su formovi (forms), moduli, izvještaji, ali i datoteke koje kreira sam projekat i koje ne
sadrže direktno dizajnerske niti programske elemente.
Dakle, jedam jednostavniji projekat se sastoji od:
- Formova (forms) - Prozori koji omogućavaju kreiranje grafičkog dijela programa i
koji olakšavaju interakciju između korisnika i programa. Alati koji se nalaze na toolbox-u se
koriste za kreiranje grafičkog sadržaja formova. Svaki form takođe sadrži i programski kod
koji se izvršava u ovisnosti od mjesta na kome se kod nalazi. Kod se može posebno kreirati u
okviru forma, ali i posebno za kontrole koje se nalaze na form-u i izvršavati se u ovisnosti od
događaja kojem se ovaj kod pridružuje. Svaki form se u Windows-u spašava kao posebna
datoteka podataka sa ekstenzijom FRM. Opciono form može da ima i dodatnu datoteku sa
nastavkom FRX u kojoj se pohranjuju neke specifičnosti vezane za posmatrani form.
- Moduli (modules) - Posebni elementi projekta koji služe samo za smještaj
programskog koda. Najčešće se koriste za kreiranje općih funkcija i procedura koje se
neovisno koriste u više dijelova projekta. Spašavaju se u datoteke podataka sa nastavcima
BAS.
- Izvještaji (data reports) - Elementi projekta koji služe za generisanje različitih
izvještaja pripremljenih za štampanje. Spašavaju se u datoteke podataka sa nastavcima DSR.
- Projektna datoteka (project file) - Čuva podatke o svim ostalim datotekama i
objektima koji se koriste u projektu. Visual Basic spašava ovu datoteku sa nastavkom
VBP,Visual Basic Project. Pokretanje projekta je moguće i direktno kroz Windows Explorer
dvostrukim klikom na ovu datoteku.
Toolbox
Osnovne alatke iz toolbox-a, prikazane na slici 1.5, su one koje se i najčešće koriste u
svakodnevnom dizajniranju. Treba napomenuti da su prikazane samo najosnovnije i najčešće
korištene kontrole te da je moguće dodavanje i korištenje još mnogo specifičnih, ali i ne tako
često korištenih kontrola.
Slika 1.5 – Toolbox – Alatke (kontrole)
10
Tabela 1.1 - Osnovne kontrole i njihova namjena
PictureBox – Kao što samo ime govori služi za smještaj i prikaz slika.
Label – Ispis odgovrajućeg teksta, samostalno kao informacija ili češće kao
objašnjenje uz neku drugu kontrolu.
TextBox – Direktan unos teksta. Ulazni podaci bilo u obliku običnog teksta ili u
numeričkom obliku se unose u program korištenjem ove kontrole.
Frame – Logičko objedinjavanje nekoliko istovrsnih kontrola u jednu cjelinu.
Najčešće se koristi za logičko i vizuelno objedinjavanje više kontrola tipa
OptionButton ili CheckBox.
CommandButton – Komandno dugme, služi za pokretanje neke aktivnosti, npr. za
potvrđivanje unosa podataka (vjerovatno najčešće korišteno OK dugme), zatvaranja
ili otvaranja prozora itd. Kontrola koja se nalazi na gotovo svakoj formi.
CheckBox – Uključivanje odnosno isključivanje pojedinih opcija. Razlikuje se
logički od OptionButton-a (poznatog i kao RadioButton) zbog načina korištenja:
koristi se u situaciji gdje je moguće odabrati više odgovora. Koristi se često u bloku
unutar kontrole Frame.
OptionButton – Uključivanje odnosno isključivanje jedne od opcija u grupi.
Koristi se najčešće zajedno sa kontrolom Frame. Pri ovome kontrola Frame
ograničava prostor na kome samo jedna od postojećih OptionButton kontrola može
biti uključena u jednom trenutku. Ukoliko se ne koristi kontrola Frame onda je
opseg zajedničkog djelovanja kontrole form na kome se kontrole nalaze.
ComboBox – Izbor jedne od ponuđenih opcija iz padajuće liste ili upis podatka,
slično kao kod TextBox-a. Odavde i naziv Combo jer je moguće podesiti osobine
tako da je moguć jedan (izbor jedne od opcija) ili drugi (upis teksta ili numeričkih
podataka) način unosa podataka. Takođe je moguće izvršiti i ograničenje na samo
izbor ponuđenih podataka. Kombinacija između TextBox-a i ListBox-a.
ListBox –Izbor više od jednog ponuđenog podatka za dalju obradu.
HScrollBar – Horizontalni klizač. Koristi se za grafičko zadavanje numeričkih
podataka ili za horizontalnu kontrolu / pomjeranje grafike
VScrollBar – Vertikalni klizač. Koristi se za grafičko zadavanje numeričkih
podataka ili za vertikalnu kontrolu / pomjeranje grafike
Timer – Omogućava vremensko izvršavanje odgovarajuće aktivnosti u
vremenskim koracima koji se zadaju u veličini milisekundi.
DriveListBox – Izbor lokalnih jedinica / drive-ova. Nešto zastarjala kontrola jer
postoje univerzalniji načini i bolje kontrole za pristup hardveru računara.
DirListBox – Pregled direktorija (folder-a) na lokalnom računaru
FileListBox – Pregled datoteka na odabranom direktoriju (folder-u). Kontrola se
najčešće koristi zajedno sa DirListBox-om i DriveListBox-om.
Shape – Direktno iscrtavanje osnovnih geometrijskih oblika: pravougaonika,
kvadrata, elipsi i krugova.
Line – Iscrtavanje obične linije.
Image – Kontrola slična kontroli PictureBox - prikaz slika odnosno fotografija.
Data – Kontrola za rad sa podacima iz baza podataka.
OLE – Kontrola koja omogućuje ubacivanje bilo koje druge Windows datoteke:
video klipa, excel dijagrama, word dokumenta...
11
Project explorer
Kao što je već rečeno, svaki se Visual Basic projekat u fazi dizajniranja i programiranja
sastoji se od nekoliko različitih tipova objekata: formova, modula, izvještaja itd. Dizajn i
programski kod svakog od ovih objekata spašava se u Windows-u u okviru jedne ili više
datoteka. Svaki prozor koji sadrži projekat, a koji se kreira pomoću objekta form, posjeduje
datoteku sa nastavkom FRM. Eventualno, ako se na formi nalaze i neke posebne kontrole
moguće je da jedan form (prozor), pored FRM datoteke, ima i još jednu datoteku sa
nastavkom FRX. Na isti način, moduli, u koji se upisuje isključivo programski kod spašavaju
taj kod u datoteke tipa BAS. Objekat koji omogućava pravljenje izvještaja, DataReport
spašava se u datoteke sa nastavkom DSR.
Project Explorer je prozor koji unutar razvojnog okruženja Visual Basica, slično kao i
Windows Explorer unutar Windows-a, hijerarhijski prikazuje pojedine objekte koji su
uključeni u projekat. Na slici 6 prikazan je primjer izgleda Project Explorera u koji su dodana
dva forma, jedan MDI form, jedan modul i jedan izvještaj. Potrebno je napomenuti da
objektima na slici nisu data imena kao što to nalaže pravilo profesionalnog programiranja. U
zagradi se nalazi naziv datoteke u kojoj je smješten opis dizajna i programski kod objekta.
Slika 1.6 - Primjer Project Explorer-a
Dva osnovna tipa formi su: obični form i MDI form. U jednom projektu može biti više
običnih formova, ali može da se kreira samo jedan MDI form. Skraćenica MDI dolazi od
engleskog trermina Multi Document Interface i označava program u kome se svi prozori
(formovi) otvaraju unutar MDI forme i ne prikazuju se zasebno na Windows traci - taskbar-u.
Da bi neki form bio dio MDI forme i da se otvara samo unutar ovog glavnog prozora
programa potrebno je da se postavi osobina forma MDIChild na True. Suprotan termin od
MDI je SDI koji označava Single Document Interface i u ovom slučaju svaka forma u
projektu, grafički se ponaša zasebno iako logički i programski djeluju kao jedna cjelina.
Dodavanje objekata u projekat se vrši preko izbora Project sa glavnog izbornika (menija),
slika 1.7.
12
Slika 1.7 - Izbornik Project
Dodavanje objekata se vrši korištenjem odgovarajućih opcija za dodavanje (Add Form, Add
MDI Form, Add Module...). Na slici je evidentno da opcija Add MDI Form nije dostupna tj.
da nije moguće dodati MDI formu. Razlog je u činjenici da je u projekat već dodana jedna
MDI forma, što se i vidi na Project Explorer-u na slici 6. Prilikom dodavanja nekog od
objekata u projekat, Visual Basic nudi izbor nekoliko podvrsta za gotovo svaki objekat.
Podvrste su obično, do nekog nivoa, dizajnirani specifični prozori koji se standardizirano
koriste u Windows aplikacijama, npr. Splash Screen, About Dialog, Tip of the Day itd
Specijalne vrste prozora, tipa message box-a i input-box-a, su definirane unutar Visual Basica
pa za njih nije potrebno definiranje posebnih formi, odnosno datoteka, o njima će biti govora
kasnije.
Spašavanje projekta se svodi na spašavanje svih datoteka koje predstavljaju sve korištene
objekte: formove, module, izvještaje itd. Prilikom spašavanja projekta po prvi put otvarat će
se prozori Save As... koji će zahtijevat izbor direktorija za spašavanje i upisivanje naziva
datoteka za svaki objekat posebno, te na kraju i za sam projekat kada se definira dirketorij i
naziv projektne VBP datoteke.
13
Osobine - Properties
Svaki element projekta, form, modul, svaka kontrola koja se nalazi na formu posjeduje grupu
osobina (properties). Ove osobine se u najvećoj mjeri zadavaju u fazi dizajniranja, ali se
takođe mogu mijenjati i tokom izvođenja programa, ukoliko se promjena osobine definira u
programskom kodu.
U fazi dizajniranja osobine se podešavaju u prozoru Properties i to tako da se prvo označi
željeni objekt / kontrola te se onda pređe ne podešavanje pojedinih osobina tog objekta /
kontrole.
Slika 1.8 - Prozor Properties
Najvažnija osobina svakog objekta ili kontrole je njegovo ime (Name). Ovo ime objekta /
kontrole se koristi svaki put kada se radi manipulacija sa podacima koje objekat / kontrola
sadrži ili kada se mijenja neka osobina objekta / kontrole. Svaki put kada se doda neka
kontrola na form, Visual Basic automatski dodjeljuje podrazumijevano ime toj kontroli npr
Command1, Check1... U cilju kvalitenog i jasnog pisanja programskog koda preporučuje se
promjena ovih default imena koje daje Visual Basic i davanje odgovarajucih i prepoznatljivih
imena svakoj kotroli. Imenovanje kontrola, slično kao i deklariranje varijabli je prilično
definirano i postoje pravila koja se proporučuju. Neka od ovih pravila bit će kasnije i
prezentirana. Prozor Properties nudi dva načina prikaza i organizacije osobina: alfabetski i po
kategorijama. Odgovarajući prikazi su odijeljeni preko zasebnih kartica. Prilikom
označavanja bilo koje od osobina u dnu prozora se ispisuje i kratko objašnjenje o tome šta
označena osobina određuje.
14
Form Layout
Pomoću prozora Form Layout moguće je definirati tačno mjesto pojavljivanja forme na
ekranu. Prozor omogućuje veoma jednostavan način određivanja pozicije forme: dovoljno je
kliknuti na formu unutar Form Layout-a i držeći lijevu tipku mišu povući form na željeni
položaj.
Na slici 9 prikazan je izgled Form Layout-a sa jednim MDI formom i dva obična forma od
kojih je jedan, Form1, MDI Child tip.
Slika 1.9 - Prozor Form Layout
Postavljanje kontrola na formu
Postavljanje kontrole na form je veoma jednostavan zadatak: dovoljan je dvostruki klik na
željenu kontrolu u Toolbox-u i Visual Basic će automatski dodati tu kontrolu na trenutno
aktivni form.
Drugi način je da se jednom klikne na odgovarajuću kontrolu u Toolbox-u i da se nakon toga
držeći lijevu tipku na mišu napravi pravougaonik na formi. Nakon što se napravi
pravougaonik na formi otpuštanjuem lijeve tipke na mišu odabrana kontrola će da se
pozicionira na formi dobijajući oblik jednak dimenzijama označenog pravougaonika.
Pokretanje programa
Program se može pokrenuti u bilo kome trenutku na jedan od slijedeća tri načina:
- Pritiskom funkcijske tipke F5
- Izborom opcije Start sa menija Run
- Klikom na plavi trokutić na traci sa alatima.
S obzirom da jedna projekat / program gotovo uvijek ima više od jedne forme potrebno je
definirati i koja se to forma inicijalno prva pojavljuje tokom pokretanja projekta / programa.
Pored forme može se odabrati i posebna procedura pod nazivom Main koja će se prva izvršiti
tokom pokretanja projekta / programa. U okviru ove procedure moguće je programski
definirati pojavljivanje inicijalne forme.
15
Slika 1.10 – Osobine projekta
Određivanje inicijalnog pokretanja se određuje korištenjem prozora Projekt Ime Properties
na izborniku Project, slika 1.10. Opcija se uvijek nalazi na dnu liste opcija te u ovisnosti od
naziva trenutnog projekta ima i odgovarajući naziv (umjesto Project Ime stoji stvarni naziv
projekta + Properties.).
U listi opcija Startup Object nalazi se spisak svih formi koje su dodane u projekat te
procedura Sub Main. Odabirom željene forme podešava se koja će se forma prva prikazati
nakon pokretanja programa. Proceduru Sub Main potrebno je kreirati u jednom od javnih
modula te ukoliko se ona odabere da bude Startup objekt onda je potrebno unutar ove
procedure upisati odgovarajući programski kod koji će da se izvrši pokretanjem programa.
Dodavanje programskog koda
Programski kod se u Visual Basic-u dodjeljuje pojedinim događajima (Events) za svaku
kontrolu na formi, odnosno piše se zasebno u okviru posebnih, općih procedura ili funkcija
koje se mogu pozivati sa različitih mjesta.
Svaka kontrola posjeduje vlastiti skup mogućih događaja, npr. Click, DblClick, MouseUp,
MouseDown, MouseMove itd. Kod koji se upiše unutar odgovarajućeg događaja izvršava se
samo ako se taj događaj desi tokom izvođenja programa, npr. kod unutar događaja Click
izvršava se samo ako se tokom izvođenja programa klikne na kontrolu kojoj je pod tim
događajem upisan programski kod.
Za otvaranje prozora za pisanje koda dovoljan dvostruki klik na neku od kontrola na formi ili
pak samo dvostruki klik na formu. Takođe je moguće kretanje između objekta i koda pomoću
izbornika View gdje se na prva dva mjesta nalaze opcije Code i Object.
16
Slika 1.11 – Prozor za pisanje programskog koda
Prozor u kome se piše programski kod sastoji se od tri dijela:
- glavnog centralnog dijela za pisanje koda,
- liste u gornjem lijevom uglu koja služi za izbor kontrole za koju se želi pisati
programski kod
- liste u gornjem desnom uglu koja služi za izbor događaja (event-a) za koji se
definira kod.
U ovisnosti od vrste kontrole mijenja se i broj i vrsta događaja koji se mogu odabrati za
pisanje programskog koda, tako npr. događaji Change i Validate postoje kod kontrole
TextBox, ali ne postoje kod kontrole CommandButton. Sama forma za sebe posjeduje grupu
događaja za koje se može definirati programski kod, npr. za događaj Load koji se izvršava
prilikom učitavanja forme ili događaj te npr. Unload prilikom zatvaranje forme. Svaki
programski kod unutar nekog od događaja predstavlja proceduru za sebe.
Visual Basic automatski prilikom otvaranja bilo kog događaja ispisuje zaglavlje procedure sa
Private Sub i kraj procedure sa End Sub.Cijeli programski kod namijenjen za izvršavanje
prilikom datog događaja mora da se nalazi unutar ova dva reda programskog koda.
U listi u gornjem lijevom uglu, pored svih kontrola koje su dodane na formu nalazi se i opcija
(General). Ova opcija otvara prostor za deklariranje liste varijabli i konstanti koje se mogu
koristiti u svim procedurama unutar programskog koda koji pripada posmatranoj formi.
Takođe omogućava pristup kreiranim slobodnim procedurama ili funkcijama koje su
definirane na nivou forme. Pristup tim procedurama i funkcijama je moguć preko opcija koje
se prikazuju u listi na desnoj strani.
17
2. OSNOVE DIZAJNIRANJA
Uvod
Korisničko okruženje se može definirati kao skup svih grafički predstavljenih objekata i
proceduralnih tehnika kojima se definira interakcija između programa i korisnika. Način na
koji program dobija informacije od korisnika, način prikaza i izbora različitih opcija, različite
mogućnosti korištenja tastature i miša, informacije koje program prikazuje korisniku – sve su
ovo elementi koje dizajner programa treba da ima na umu tokom procesa dizajniranja
korisničkog, grafičkog okruženja.
Visual Basic, za razliku od svog prethodnika Basic-a ima na raspolaganju veoma jednostavne
i moćne alate za kreiranje ugodnog korisničkog okruženja. Čak i osnovne alatke koje nudi
Toolbox omogućavaju ispunjavanje većine uslova neophodnih za kreiranje zadovoljavajućeg
okruženja. Sve kontrole na Toolbox-u su intuitivne, korištene u svim Windows aplikacijama i
što je najbitinije sve su spremne za korištenje. Dovoljno je samo da se postave na formu i da
se podese neki osnovni parametri i kontrole se mogu koristiti.
U ovom dijelu će se pokazati neki osnovnni elementi grafičkog okruženja i kako se koriste u
fazi dizajniranja.
Form
Koristi se kao podloga za smještaj svih ostalih kontrola koji pripadaju jednoj logičkoj cjelini i
koji se pojavljuju kao zaseban prozor u okviru jednog programa. Kao što je već ranije rečeno
u osnovi postoje dvije osnovne vrste formi:
- Obični form i
- MDI form.
U jednom projektu može da bude samo jedna MDI forma i ona služi isključivo kao kontajner
za sve ostale forme (forme-djeca). Obična forma posjeduje osobinu MDIChild koja određuje
da li će se posmatrana forma u programu pojavljivati samostalno (MDIChild=False) ili će se
pojavljivati unutar MDI Forme (MDIChild=True).
18
Potrebno je napomenuti da se na MDI Formu ne mogu direktno postaviti nikakve kontrole
osim: PictureBox-a, Timer-a i kontrole Data. Postavljanje kontrola moguće je samo
indirektno korištenjem PictureBox-a u koji se onda mogu postavljati ostale kontrole.
Najčešće se ova tehnika koristi za postavljanje različitih toolbar-ova na MDI Formu.
Osnovna svojstva (properties) koje treba podesiti za ovu vrstu objekta su:
- Name, naziv objekta, najbitnija odrednica jer se za pozivanje bilo koje osobine
forma u programskom kodu mora koristiti naziv objekta (kontrole).
Napomena: Najčešće se naziv objekta / kontrole sastoji iz dva dijela:
1. prefiksa koji odgovara vrsti kontrole i
2. dijela naziva koji asocira na svrhu kontrole.
Standardni prefiks za objekat Form je frm i strogo se preporučuje da se uvijek
koristi kod davanja naziva za ovaj objekat. Nastavak u nazivu forma, a koji se
može sastojati i od više riječi (bez razmaka), trebalo bi da se uvijek definira tako
da svaka riječ počinje sa prvim velikim slovom, npr frmProracunNaponaLuka.
Ovakav način davanja imena objektima / kontrolama je veoma koristan poslije
tokom faze programiranja. Naime, tokom pisanje koda, u situacijama kada se
poziva neki objekt / kontrola korištenjem njenog imena, izvodi se uvijek malim
slovima, u prethodnom primjeru kodira se frmproracunnaponaluka. Nakon
završetka ispisivanja reda programskog koda, pritiskom na tipku Enter, ukoliko je
ispravno ispisano ime objekta / kontrole, Visual Basic automatski pretvara mala u
velika slova na mjestima gdje je to ranije određeno nazivom objekta / kontrole, u
prethodnom slučaju slova p, n i l se prevode u P, N i L što omogućava brzu
kontrolu korišenja imena objekta / kontrole tokom faze pisanje programskog koda.
-
BackColor, podešavanje boje pozadine forma. Standardna je Button Face
(&H8000000F&) za obični form, dok je za MDI Form to Application Workspace
(&H8000000C&). Ukoliko to namjena programa specifično ne zahtijeva, ne
preporučuje se suviše često mijenjanje boje pozadine pojedinih formi, a pogotovo
ne velika šarolikost i veliki kontrasti.
-
BorderStyle, podešavanje vrste granične linije forma i načina promjene veličine.
Podrazumijevana vrijednost je 2 – Sizable koja korisniku omogućava promjenu
veličine dimenzija forma. Ostale vrijednosti koje mogu da se koriste:
o None – bez ikakve granice / granične linije
o Fixed Single – sa graničnom linijom, ali nije moguće da se vrši promjena
veličine forma. U ovom slučaju kontrolna dugmad za Minimiziranje i
Restore / Maksimiziranje nisu dostupna na title traci.
o Fixed Dialog, slično kao i Fixed Single
o Fixed ToolWindow, slično kao i Fixed Single, uz razliku da ControlBox,
sličica lijevo od Captiona, natpisa na title traci, nije vidljiva.
o Sizable ToolWindow, za razliku od Fixed ToolWindow-a, moguća je
promjena dimenzija forma korištenjem miša.
-
Caption, natis na title traci forma.
-
DrawMode – Određuje način grafičkog prikazivanja na formi. Podrazumijevana
vrijednost je 13 – Copy Pen.
19
-
DrawStyle – Definira se vrsta linija za grafičke objekte. DrawWidth – Definira
se širina linija grafičkih objekata.
-
Font – Izbor vrste, boje i veličine korištenog fonta na samoj formi.
-
Height i Width – Visina i širina forma.
-
HelpContextID – Broj reference u help datoteci. Svako poglavlje u help
datotekama posjeduje jedinstveni identifikator – ContextID. Prilikom pritiska na
tipku F1 trenutno aktivna kontrola ili form (ona kontrola ili form koji u tom
trenutku imaju fokus), poziva help datoteku i prikazuje poglavlje koje ima
ContextID jednak broju koji se nalazi definiran u osobinama posmatranog objekta
/ kontrole. Pretpostavlja se da postoji odgovarajuća help datoteka, u suprotnom se
ništa ne događa.
-
ControBox, MaxButton i MinButton – Određuje se
da li će form da ima ControlBox, sličicu sa opcijama
(Restore, Move, Size, Minimize, Maximize i Close) u
gornjem lijevom uglu, te opcije za maksimiziranje
odnosno minimiziranje forme (sličice u gornjem
desnom uglu forme).
Slika 2.1 – ControlBox
-
Moveable – svojstvo kojim se određuje da li korisnik uopće može pomijerati
formu.
-
MDIChild – Određuje se da li je forma sastavni dio postojeće MDI forme (True)
ili se forma pojavljuje kao samostalan objekt van MDI forme - kontejnera.
-
MousePointer – Omogućava definiranje pokazivanja miša u trenucima kada se
pokazivač nalazi iznad forme. Ukoliko se za svaku kontrolu koja se nalazi na
formi ne definiraju posebne vrijednosti ove osobine onda je pokazivač identičan
iznad forme i iznad kontrola.
-
ScaleMode – Određuje se mjerna jedinica koja će se korititi za form i za sve
kontrole na formu. Podrazumijevana mjerna jedinica je Twips, što predstavlja 1/20
dio jednog inča (25.4 mm).
-
ShownInTaskBar – Određuje se da li će se prilikom aktiviranja i prikazivanja
forma pojaviti kartica koja označava taj form na TaskBar-u. U slučaju kada je
forma MDIChild onda se kartica bez obzira na sve ne pojavljuje na TaskBar-u.
-
Left i Top – Definira se položaj forma u odnosu na koordinatni početak koji
polazi iz gornjeg desnog ugla monitora.
-
Visible i Enabled – Kontrole kojima se može onemogućiti prikaz forme (Visible
= False) odnosno kojom se može prikazati forma ili se može onemogućiti svaki
rad sa formom jer postaje neaktivna (Enabled = False) iako je vidljiva.
20
-
WindowState – Omogućava se inicijalni prikaz forme u 0 - normalnom načinu
kako je to definisano osobinama Height, Width, Left i Top, odnosno pomoću
osobine StartUpPosition, 1 - minimiziranu na TaskBar-u ili 2 - maksimiziranu
preko cijelog ekrana.
Kontrole
Najbitnija odrednica svake kontrole je njen naziv (Name). Na isti način kao što je to
pokazano u slučaju formova, i kod kontrola se preporučuje slijediti određena pravila kod
davanja imena, prije svega se to odnosi na korištenje odgovarajućih prefiksa. U Tabeli 2.1
date su preporuke za davanje prefiksa za najčešće korištene kontrole u Visual Basic-u.
Tabela 2.1 – Prporuke za korištenje prefiksa u davanju imena kontrolama
Oznaka kontrole
Naziv kontrole
Prefiks
ComboBox
cbo
Check Box
chk
Command Button
cmd
Data
dat
Directory List Box
dir
Drive List Box
drv
File List Box
fil
Frame
fra
Horizontal Scroll Bar
hsb
Image
img
Label
lbl
Line
lin
List Box
lst
Option Button
opt
Picture Box
pic
Shape
shp
Timer
tmr
Text Box
Vertical Scroll Bar
txt
vsb
OLE Contqiner
ole
21
Kontrole mogu da budu i indeksirane. To znači da se na jednom formu, za više, obično
kontrola iste vrste, koristi isto ime, pri čemu se kontrole razlikuju u osobini Index. Na ovaj
način se može formirati grupa (niz) kontrola koje se razlikuju samo u brojčanoj vrijednosti
Index-a što može biti kasnije tokom faze programiranja veoma korisno, npr. prilikom
korištenja u različitim programskim petljama.
Zajedničke osobine gotovo za sve kontrole odnose se na definiranje izgleda i položaja na
formu. Za definiranje veličine kontrola podešavaju se svojstva Height (visina) i Width
(širina). Podrazumijevana mjerna jedinica u Visual Basicu je twips (dvadeseti dio jednog
inča), pa se i vrijednosti za visinu i širinu daju u twips-ovima. U cilju dizjaniranja što
profesionalnijeg izgleda potrebno je koristiti u cijelom programu što je moguće standardnije
vrijednosti za visine i širine. Kao primjer može poslužiti kontrola CommandButton, koja se
najčešće koristi za potvrdu unosa podataka ili pokretanje odgovarajućih aktivnosti. Dimenzije
kontrole bi trebalo da su jednoobrazne u cijelom programu, odnosno na svim formama koje
se koriste. U slučaju korištenja mjerne jedinice Twips preporučuje se visina između 350 i 400,
a širina između 1000 i 1200.
Položaj na formi se definira osobinama Left i Top. Vrijednost Left definira udaljenost lijevog
ruba kontrole u odnosu na lijevi dio forma, dok se pomoću vrijednosti Top određuje
udaljenost gorenjeg ruba kontrole od gornjeg ruba forma.
Potrebno je biti oprezan sa mijenjanjem vrste, veličine i boje korištenih fontova jer to može
da bude neprofesionalno. Preporuka je da se koriste standardni fontovi kao što je npr. MS
Sans Serif, veličine 8.
Pomoću opsobine TabStop se određuje da li neka kontrola može dobiti fokus korištenjem
tipke Tab na tastaturi. Podrazumijevana vrijednost ove osobine za sve kontrole je True, što
označava da svaka kontrola može da dobije fokus jednostavnim korištenjem tipke Tab.
Redoslijed prebacivanja fokusa sa jedne na drugu kontrolu se definiše pomoću osobine
TabInex. Svaka kontrola na jednoj formi mora da ima jedinstvenu brojčanu vrijednost ove
osobine. Prilikom učitavanja i prikazivanja forme, kontrola sa najnižim TabIndex-om, (0 je
najmanji broj koji se može pripisati ovoj osobini), preuzima fokus na sebe. Korištenjem tipke
Tab na tastaturi fokus prelazi na slijedeću kontrolu koji ima slijedeći redni broj i tako redom,
naravno pod uslovom da je osobina TabStop = True.
Skrivanje kontrole na formu može da se omogući korištenjem osobine Visible. Postavljanjem
vrijednosti False ove osobine za neku kontrolu na formi omogućava nestajanje kontrole sa
forme. Drugi, češće korišteni način, da se onemogući pristup kontroli je korištenje osobine
Enabled. Postavljanjem vrijednosti ove osobine na False kontrola ostaje vidljiva na formi, ali
pristup kontroli više nije moguć, niti pomoću miša niti pomoću tastature.
Pristupne tipke
Pojedine kontrole koje imaju svojstvo Caption (natpis) mogu iskoristiti svojstvo brzog
pristupa, dobijanja fokusa i promjene vrijednosti korištenjem kombinacije ALT tipke i jedne
od tipki koja se definira za svaku kontrolu posebno. Primjer kontrola koje imaju osobine
Caption su CommandButton, CheckBox i OptionButton.
22
Za omogućavanje ovog brzog pristupa dovoljno je u natpisu (Caption-u) bilo koje od
kontrola iskoristiti jedno jedinstveno slovo ispred kojeg se upiše znak & (ampersand, and).
Na ovaj način slovo ispred kojeg se upiše ampersand, ispisuje se sa crticom ispod. Na primjer
u slučaju CommandButton-a sa natpisom OK, ako se želi brzi pristup kombinacijom tipki
ALT + O potrebno je u osobini Caption unijeti slijedeće: &OK čime se na kontroli ispisuje
OK, (podvučeno slovo O).
Slično vrijedi i u slučaju kreiranja menija o čemu će biti riječi kasnije.
Formatiranje
U cilju jednostavnijeg podešavanja položaja pojedinih kontrola na formu moguć je prikaz
zamišljene rešetke, Grid-a po cijeloj površini forma koja omogućuje pomjeranje kontrola u
koracima koje određuje korak rešetke. Zamišljena rešetka se grafički predočava mrežom
tačaka koje imaju unaprijed definirana rastojanja pri čemu vertikalni i horizontalni razmak
tačaka ne mora da bude jednak. Opcije za uključivanje, isključivanje i podešavanje rastojanja
rešetke je moguće definirati na Tools – Options... na kartici General, slika 2.2
Slika 2.2 – Podešavanje zamišljene rešetke – Grid-a
Uključivanje / isključivanje rešetke ostvaruje se preko Check Box- a „Show Grid“ koji se
nalazi u okviru Form Grid Settings. Horizonatalno rastojanje tačaka rešetke se podešava u
polju Width, a vertikalno u polju Height. Numerička rastojanja za gustoću rešetke se zadaju
u Twips-ima. Check Box „Align Controls to Grid“ se koristi za forsiranje pomjeranja
kontrola prema položaju tačaka rešetke, tako da ukoliko se uključi ova opcija kontrole mogu
zauzimati samo položaje koje određuje rešetka i u skokovima koji odgovaraju rastojanju
između pojedinih tačaka rešetke.
Za brzo i jednostavno raspoređivanje kontrola na formi može učinkovito da pomognu opcije
na izborniku Format koje su prikazane na slici 2.3.
23
Slika 2.3 – Izbornik Format
Većina opcija sa liste prikazane na slici 2.3 ima dodatnu skupinu daljih opcija – alata pomoću
kojih se brzo i efikasno mogu podesiti veličine i položaj kontrola na formu. U svakom koraku
potrebno je prvo da se označe kontrole na koje se želi primjeniti neki od alata te nakon toga
odabrati alat / aktivnost za formatiranje. Označavanje kontrola se najbrže ostvaruje tako što
se grupa kontrola označi prevlačenjem miša uz pritisnutu lijevu tipku.
Opcije Align omogućavaju poravnavanje označenih
kontrola i to tako da se poravnaju: lijeve strane (Lefts), po
vertikalnoj sredini (Centers) i desne strane (Rights), zatim
gornji rubovi (Tops), po horizontalnoj srednini (Middles) i
donji rubovi (Bottoms), te na kraju moguće je
poravnavanje po tačkama zamišljene rešetke (to Grid).
Slika 2.4a – Međusobnom poravnavanje kontrola
Opcije Make Same Size omogućavaju brzo podešavanje
identičnih veličina više kontrola i to širine (Width), visine
(Height) odnosno obje dimenzije (Both).
Slika 2.4b – Podešavanje dimenzija više kontrola
24
Opcije Horizontal i Vertical Spacing omogućavaju
podešavanje međusobnog rastojanja između više
označenih kontrola. Opcije Make Equal će razmaknuti
kontrole tako da su razmaknute međusobno na jednaka
rastojanja, Increase i Decrease će povećati odnosno
smanjiti međusobno rastojanje za vrijednost definiranu
gustinom tačaka zamišljene rešetke, dok će opcija
Remove da ukloni rastojanja između kontrola tako da se
početak jedne kontrole podudara sa krajem druge itd.
Slika 2.4c – Podešavanje rastojanja između kontrola
Opcije Center in Form sadrže dvije mogućnosti Horizontally i Vertically pomoću koji se
može kontrola ili više njih pozicionirati u horizontalni odnosno vertikalni centar forma.
Opcije Order omogućavaju hijerarhijski raspored kontrola, stavljanje jedne kontrole na
drugu Bring to Front ili obratno Send to Back.
Nakon što se kontrole razmjeste na formu u zadovoljavajućem rasporedu,uključivanje opcije
Lock Controls će onemogućiti slučajno pomjeranje bilo koje kontrole na formu što nekada
može da bude veoma korisno. Opcija se obično koristi na kraju faze formatiranja kada se ne
želi više mijenjati položaj kontrola.
Podešavanje osobina u fazi rada programa
Sve do sada rečeno odnosilo se na podešavanje osobina i formatiranje u tzv. design fazi.
Promjena osobina bilo koje kontrole ili forma, pored ovoga, može da se izvrši takođe i tokom
faze rada (korištenja) programa (runtime). U ovu svrhu potrebno je da se osobine mijenjaju i
podešavaju korištenjem programskog koda.
Tokom rada, osobine kontrola se mogu mijenjati posebnim naredbama u programskom kodu.
Ovo se postiže naredbama koje odgovarajućim svojstvima pridružuju odgovarajuće
vrijednosti. Principijelno naredna je u obliku:
nazivKontrole.osobina = vrijednost
Naziv kontrole i osobina se uvijek odvajaju tačkom.
Izbornici / Meniji
Dodavanje, mijenjanje i podešavanje izbornika / menija na formu se može lako uraditi
korištenjem Menu Editora koji se otvara izborom istoimene opcije na izborniku Tools. Da bi
opcija bila dostupna potrebno je da bude aktivan design prikaz forma na kome se žele
izgraditi izbornici / meniji.
Na slici 2.5 prikazan je prozor Menu Editor-a.
25
Slika 2.5 - Menu Editor
Za dodavanje novog izbornika / menija potrebno je definirati slijedeće elemente:
Caption - Naziv izbornika / menija odnosno opcije koje se pojavljuje na listi opcija
izbornika / menija. Linija razgraničenja u listi opcija se formira na način da se u polje
Caption unese crtica "-".
Name - Naziv izbornika / menija odnosno opcije. Naziv se koristi samo za pristup
event proceduri izbornika / menija u programskom kodu, odnosno za pozivanje kontrole i ne
pojavljuje se nigdje na meniju ili opciji menija tokom faze korištenja programa.
Index - Omogućava kreiranje grupe izbornika / menija sa istim imenom koje se
razlikuju u Indeks-u.
Shortcut - Kombinacija tipki za pristup opciji izbornika / menija.
Checked - Omogućava pojavljivanje Check Box-a lijevo od naslova opcije u izborniku
/ meniju.
Enabled - Omogućava da se izbornik / meni ili opcija na izborniku / meniju pojavi ali
i da bude nedostupan za rad.
Visible - Omogućava pojavljivanje odnosno skrivanje izbornika / menija ili opcije na
izborniku / meniju.
WindowList - Omogućava pojavljivanje u izborniku / meniju otvorenih MDI Child
formi u jednoj MDI aplikaciji.
Desna Strelica - Pomjera selektovani izbornik / meni desno, odnosno opciju jedan
nivo niže u hijerarhijskoj strukturi svaki put kada se klikne na strelicu. Moguće je definirati
maksimalno 4 podnivoa u sastavu izbornika / menija. Svaka uvučena stavka predstavlja listu
opcija ili pod-menija stavke koja je hijerarhijski manje uvučena i nalazi se iznad nje u listi.
26
Lijeva Strelica - Pomjera selektovani izbornik / meni odnosno opciju jedan nivo više
svaki put kada se klikne na strelicu.
Strelica gore - Pomjera selektovani izbornik / meni odnosno opciju jedno mjesto gore,
zadržava nivo opcije.
Strelica dole - Pomjera selektovani izbornik / meni jedno mjesto dole, zadržava nivo
opcije
Next - Pomjera selekciju na slijedeću liniju u listi izbornika / menija.
Insert - Insertuje slobodnu liniju iznad označenog izbornika / menija u listi izbornika
/ menija
Delete - Briše trenutno označenu liniju u listi izbornika / menija.
U donjem dijelu prozora Menu Editor nalazi se hijerarhijska lista svih definiranih izbornika /
menija u takozvanom Menu List-u.
Kao primjer pokazat će se izgradnja jednostavnog izbornika / menija (File) sa standardnim
opcijama (New, Open, Save, Save As.., Print i Exit). Bit će korištena jedna MDI Forma i dvije
forme Test1 i Test2 koje su MDI djeca-forme.
Slično kao kod kontrola i objekata i kod davanja imena izbornicima / menijima i opcijama na
izbornicima / menijima dobro je slijediti određenu logiku. Korištenje prefiksa u davanju
imena se strogo peporučuje. Pri ovome se preporučuje stavljanje prefiksa men ispred naziva
top-level izbornika / menija te prefika mi (menu item) ispred opcija iz liste za svaki top-level
izbornik / meni.
U listu izbornika / menija su dodane slijedeći podaci:
- Meni File, sa nazivom menFile. Položaj izbornika / menija u listi menija je krajnje
lijevo i to označava da se radi o top-level izborniku / meniju, odnosno izborniku / meniju koji
se nalazi na traci sa izbornicima / menijima i koji ima set vlastitih opcija. Opcija WindowList
je uključena samo za ovaj top level što omogućuje prikaz trenutno otvorenih formova-djece u
okviru izbornika / menija tokom faze korištenja programa. Ukoliko nema aktivnih formovadjece lista je prazna.
- Opcija New, sa nazivom miNew, te sa uključenim Shortcut-om: CTRL+N.
- Opcija Open, sa nazivom miOpen, te sa uključenim Shortcut-om: CTRL+O.
- Linija razgraničenja, upisuje se jednostavno crtica "-" u Caption i daje se
proizvoljno, jedinstveno ime u polje Name.
- Opcija Save, sa nazivom miSave, te sa uključenim Shortcut-om: CTRL+S.
- Opcija Save As..., sa nazivom miSaveAs, bez Shortcuta-a.
- Linija razgraničenja, upisuje se jednostavno crtica "-" u Caption i daje se
proizvoljno, jedinstveno ime u polje Name.
- Opcija Print, sa nazivom miPrint, te sa uključenim Shortcut-om: CTRL+P
- Linija razgraničenja, upisuje se jednostavno crtica "-" u Caption i daje se
proizvoljno, jedinstveno ime u polje Name.
- Opcija Exit, sa nazivom miExit, te sa uključenim Shortcut-om: CTRL+E.
27
Sve opcije u okviru menija, osim top-level menija, su pomaknute za jedno mjesto udesno
korištenjem desne strelice i time je označena pripadnost opcija meniju ispod koga se
hijerarthijski opcije nalaze.
Izgled Menu Editor-a, sa podacima podešenim na prethodno objašnjeni način je prikazan na
slici 2.6.
Slika 2.6 - Menu Editor za izbornik File
Izbornik / meni File dobijen na prethodno opisani način prikazan je na slici 2.7.
Slika 2.7 - Izgled izbornika / menija File
28
S obzirom da u programu nije bila otvorena niti jedna forma-dijete to se na izborniku / meniju
File nije pojavila lista otvorenih formi-djece. Na slici 2.8 prikazan je izgled izbornika /
menija File nakon što su učitane i prikazane dvije forme-djeca (Test1 i Test2). Uočavaju se
dodatne opcije u listi, te uz formu Test2 pokazan je check box koji označava da je ta forma
trenutno aktivna.
Slika 2.8 - Izbornik / meni File sa listom otvorenih prozora
Svaki izbornik / meni i opcija iz liste predstavlja kontrolu na formi. Stoga svaki izbornik /
meni i opcija iz liste automatski dobijaju svoje mjesto u listi kontrola, pa je za svaku ovu
kontrolu moguće definirati prograsmki kod unutar vlastite event procedure. Izbornik / meni i
opcije imaju definiranu samo jednu event proceduru: Click. Unutar ove event procedure
potrebno je upisati programski kod koji se izvršava svaki put kada korisnik odabere neku od
opcija iz izbornika / menija.
29
3. OSNOVE PISANJA PROGRAMSKOG KODA
Uvod
Nakon planiranja i izrade grafičkog okruženja, podešavanja osobina kontrola i formatiranja
istih, naredni korak u izradi programa u Visual Basic-u je pisanje programskog koda.
Pojedinačni dijelovi programskog koda, procedure, u krajnjem određuju koje sve aktivnosti je
moguće izvršiti korištenjem programa.
Iako je pisanje programskog koda, vjerovatno najzahtjevniji dio projekta, Visual Basic-ove
event procedure omogućavaju jednostavnije organiziranje i kontrolu programskog koda.
Prozor za pisanje programskog koda – View Code
Dva su najčešće korištena načina otvaranja prozora za pisanje programskog koda:
- Korištenjem Project Explorer-a. Potrebno je prvo označiti form u kojem se želi
kreirati nova procedura. Nakon izbora forma, potrebno je kliknuti na View Code
button u gornjem lijevom uglu Project Explorer-a, kao što je to prikazano na slici
3.1.
- Dvostukim klikom na kontolu za koju se želi kreirati nova event procedura
(takođe je moguće označiti kontrolu i pritisnuti funkcijsku tipku F7)..
Slika 3.1 – Aktiviranje prozora za pisanje programskog koda
Prilikom prvog otvaranja prozora za pisanje koda Visual Basic otvara podrazumijevanu
(default) event proceduru koja ovisi od odabrane kontrole te automatski dodaje prvu i zadnju
liniju programskog koda. Ukoliko već postoji napisan programski kod unutar neke od event
procedura onda se otvara jedna od procedura sa programskim kodom. Kretanje između event
30
procedura se vrši jednostavnim odabirom event procedure iz padajuće liste koja se nalazi u
gornjem desnom uglu prozora za upis programskog koda.
Slika 3.2 – Izbor event procedure za kontrolu cmdOK
Na slici 3.2 prikazan je primjer sa event procedurama za kontrolu cmdOK, na formu frmStart,
projekta Test, (podaci se mogu uočiti na title bar-u prozora).
Event procedure
Event procedure omogućavaju da program na unaprijed određeni način odgovori na
aktivnosti koje korisnik programa izvodi. Ako korisnik klikne na komandno dugme, odabere
jednu od ponuđenih opcija, promjeni postavku ili upiše neki podatak, programski kod unutar
odgovarajuće event procedure određuje odgovor programa na tu aktivnost korisnika.
Poznavajući ovo, moguće je jednostavno iskoristiti mogućnosti event procedura za kreiranje
programa.
Opći koraci koji su neophodni za pisanje programskog koda unutar event procedure su
slijedeći:
- odrediti objekat / kontrolu za koju se želi programirati aktivnost programa,
- odrediti događaj (event) za koji se očekuje da se dogodi nad posmatranim
objektom / kontrolom i
- napisati programski kod koji određuje aktivnost programa kada korisnik prouzroči
taj događaj.
Naziv event procedure za neki određeni objekat / kontrolu je kombinacija dvije ključne riječi:
- naziv objekta / kontrole
- naziv koji Visual Basic daje određenom događaju (event-u).
Ove dvije ključne riječi su razmaknute donjom crtom ( _ ), pa potpuni naziv event procedure
je određen kao:
31
NazivKontrole_NazivDogađaja
Na primjer, neka se na formi nalazi komandno dugme (CommandButton) za potvrdu unosa
podataka OK čiji naziv je, u skladu sa prethodno usvojenom konvencijom, cmdOK. Osnovna
event procedura za ovu kontrolu je Click. Programski kod napisan unutar ove procedure
izvršava se ukoliko korisnik tokom izvršavanja programa klikne na kontrolu (komandno
dugme). Puni naziv event procedure za ovu kontrolu u posmatranom slučaju je:
cmdOK_Click.
Opće procedure / funkcije
Pored procedura koje se izvršavaju usljed pokretanja nekog događaja odnosno izvršavanja
aktivnosti od strane korisnika (event procedure) unutar jednog forma mogu da se definiraju i
opće procedure odnosno funkcije koje se mogu programski pozivati iz bilo koje druge
procedure / funkcije.
Kreiranje općih procedura i funkcija u okviru jednog forma moguće je ostvariti na dva
načina:
- pomoću prozora Add Procedure... koji se nalazi na izborniku Tools i koji je
aktivan samo kada je otvoren prozor za upisivanje programskog koda, slika 3.3.
- direktnim upisom procedure u (General) sekciju u prozoru za upisivanje
programskog koda, slika 3.4.
Slika 3.3 – Dodavanje općih procedura / funkcija
Za dodavanje nove opće procedure unutar forma potrebno je odabrati naziv za proceduru koji
se upisuje u text-box Name. Kod imenovanja procedura dobro je slijediti princip sličan kao
kod imenovanja kontrola i objekata te korištiti prefikse ispred opisnog naziva procedura.
Uobičajeno je da se ispred naziva procedure dodaje prefiks proc, a ispred funkcije fun.
Za kreiranje procedure potrebno je u okviru Type odabrati opciju Sub, a za funkciju opciju
Function. Ostale dvije vrste procedura koje služe za definiranje novih eventa odnosno
događaja izlaze iz dosega ovog kratkog uvoda u Visual Basic.
U okviru Scope definira se područje važenja procedure / funkcije, pri čemu su Public
procedure dostupne za korištenje na nivou cijelog projekta, dok su procedure označene sa
Private dostupne samo u matičnom formu, tj. mogu se samo pozivati iz drugih procedura
unutar istog forma.
32
Puni naziv procedure predstavljen je u obliku:
NazivForma.NazivProcedure
odnosno
NazivForma.NazivFunkcije
Pozivanje procedure / funkcije iz druge procedure, event procedure ili funkcije unutar istog
forma moguće je korištenjem samo naziva procedure / funkcije bez korištenja naziva forma.
Ovo važi za obje vrste i Public i Private procedura / funkcija. Međutim, pozivanje procedure
/ funkcije koja se nalazi u jednom formu iz nekog drugog forma zahtijeva korištenje punog
naziva procedure: NazivForma.NazivProcedure / NazivForma.NazivFunkcije. U ovom
slučaju je moguće pozvati samo Public procedure / funkcije.
Slika 3.4 – Sekcija General
Kreiranje procedura odnosno funkcija moguće je i manuelnim unosom naziva procedure u
sekciji (General) – (Declarations). Na primjer, ako se želi dodati procedura procTest,
potrebno je upisati slijedeće:
Public Sub procTest
te nakon toga pritisnuti tipku Enter. Visual Basic će da doda otvorenu i zatvorenu zagradu
„()“ nakon naziva procedure te će dodati End Sub liniju programskog koda u drugoj liniji
ispod naziva procedure. Dobit će se slijedeće:
Public Sub procTest()
End Sub
Programski kod je potrebno, kao što je već rečeno, dodati između naziva procedure i linije
End Sub koja označava kraj procedure. U slučaju dodavanja funkcije potrebno je umjesto
riječi Sub koristiti riječ Function, tada će se umjesto End Sub pojaviti End Function.
33
U lijevom gornjem uglu prozora za unos programskog koda nalazi se padajuća lista u kojoj se
nalazi lista svih postojećih kontrola na formu, objekt Form i sekcija (General). Svaka
kontrola je predstavljena svojim imenom koji je prethodno tokom faze dizajniranja zadan u
okviru osobina svake od kontrola korištenih na formu. Potrebno je uočiti da se u listi objekat
form, iako posjeduje vlastito ime, određeno tokom faze dizajniranja objekata, uvijek
pojavljuje samo kao Form, a nikada pod definiranim imenom. Inače se unutar objekta form
može napraviti refenenca na sam objekt korištenjem ključne riječi ME.
Izborom bilo koje kontrole, ili form-a kao objekta, u desnom gornjem uglu formira se spisak
mogućih događaja (eventa). Za svaku vrstu kontrole postoji jedinstven, ali donekle različit
spisak mogućih eventa. Neki od event-a se pojavljuju u više vrsta kontrola dok su neki
specifični za određene kontrole. Naprimjer, za objekt Form, spoecifične event procedure su
Load i Unload koje se izvršavaju prilikom učitavanja odnosno zatvaranja forma.
Sekcija (General) služi za dvije namjene:
- za smještaj varijabli koje imaju područje važnosti u cijelom području
programskog koda u okviru form-u, u okviru sekcije (Declarations).
- za smještaj općih procedura / funkcija.
Izborom sekcije (General) u listi u desnom gornjem uglu formira se spisak svih kreiranih
općih procedura / funkcija te sekcija (Declarations) koja sadrži listu varijabli koje su
deklarirane za korištenje na nivou programskog modula aktivnog forma.
Parametarske procedure
U nazivima općih procedura odnosno funkcija, kako se to moglo vidjeti, dodaju se na kraju
naziva procedure / funkcije zagrade (). Ukoliko unutar zagrada nema ništa, tj u deklaraciji
procedure / funkcije postoji samo otvorena i zatvorena zagrada, radi se o procedurama bez
parametara odnosnu funkcijama bez parametara. Definiranjem parametara unutar zagrada
definiraju se tzv. parametarske procedure odnosno funkcije.
Uobičajeni način proslijeđivanja parametata u Visual Basicu, slično kao i u drugim
programskim jezicima, jeste njihovo nizanje u popis u kojem su međusobno odvojeni
zarezima. Na primjer, ako se želi kreirati javna procedura u kojoj se žele koristiti vrijednosti
osnovnih RGB boja onda bi zaglavlje procedure moglo da izgleda ovako:
Public Sub procBojaPozadine(paramRed, paramGreen, paramBlue)
Parametri se mogu definirati i kojeg su tipa, a ako se ostavi bez definicije tipa onda se smatra
da su tipa Variant. O tipovima varijabli bit će riječi kasnije.
Uz pretpostavku da pomenuta procedura podešava boju objekta picTest na formu koji ima
naziv FormA, onda bi kompletna procedura mogla da ima slijdeći izgled:
Public Sub procBojaPozadine(paramRed, paramGreen, paramBlue)
FormA.picTest.BackColor=RGB(paramRed, paramGreen, paramBlue)
End Sub
34
Pozivanje procedure zahtijeva definiranje vrijednosti parametara koji figuriraju u proceduri.
U prethodnom primjeru svaki puta kada se pozove procedura procBojaPozadine potrebno je
da se proslijede numeričke vrijednosti koje se pridružuju parametrima definiranim u nazivu
funkcije i to baš tim redom, npr.
procBojaPozadine 255, 0, 0
Ova naredba će da izvrši promjenu boje pozadine kontrole picTest u crveno. Pozivanjem
procedure, proslijeđivanjem samo vrijednosti, zadata je vrijednost parametra paramRed od
255, dok su parametri paramGreen i paramBlue dobili vrijednosti 0. Prilikom pozivanja
procedure, na ovaj način, uvijek mora da se pazi na poredak parametara i proslijeđenih
vrijednosti i mora da se proslijedi tačno onoliko vrijednosti koliko ima parametara.
Postoj način da se i ne pazi na poredak parametara prilikom pozivanja procedure / funkcije.
Taj način zahtijeva de se eksplicitno povežu nazivi parametara i vrijednosti koja se
proslijeđuje pojedinom parametru. U prethodnom primjeru isti učinak bi se dobio slijedećim
pozivom procedure:
procBojaPozadine paramGreen:=0, paramBlue:=0, paramRed:=255
Na ovaj način nije bitan poredak (parametar paramRed iako je u deklaraciji procedure nalazi
na prvom mjestu u pozivu procedure nalazi se na zadnjem) jer se prilikom pozivanja
procedure eksplicitno zadaju vrijednosti parametara. Potrebno je i dalje da se za svaki
parametar zadaju vrijednosti inače će nastupiti greška.
Ovdje se dolazi do situacije da je potrebno da se omogući kreiraje parametarskih procedura /
funkcija koje mogu biti definirane na način da nije uvijek neophodno da se proslijede
vrijednosti za sve paramete. Ovakve procedure / funkcije je moguće definirati i u tom slučaju
se radi o procedurama / funkcijama sa neobaveznim (Optional) parametrima.
Primjer deklaracija parametarske procedure sa neobaveznim parametrima bi bila slijdeća:
Public Sub procBojaPozadine(Optional paramRed, Optional paramGreen, Optional
paramBlue)
Deklaracijom procedure na ovaj način omogućeno je da se proceduri proslijede vrijednosti za
samo neki od parametara. Prvo pravilo je da se modifikator Optional može proslijediti samo
parametrima tipa Variant. Drugo pravilo kaže da se u deklaraciji procedure ili funkcije u
kojoj se nalaze neobavezni parametri oni se moraju u nizu pojavljivati na kraju. Dakle nije
moguće deklariranje obaveznog parametra nakon neobaveznog.
Još dvije ključne riječi mogu da se nađu u parametarskim listama: ByVal i ByRef. Ove dvije
ključne riječi određuju mehanizam proslijeđivanja vrijednosti parametrima ukoliko se
proslijeđuju vrijednosti varijabli u pozivu procedure.
Ukoliko se ispred parametra iskoristi ključna riječ ByVal, parametar procedure će dobiti samo
vrijednost varijable u tom trenutku. Svaka promjena parametra unutar procedure neće imati
uticaja na vrijednost varijable koja je pridružena parametru prilikom poziva procedure /
funkcije. Kada se kontrola izvršavanja vrati nazad iz procedure / funkcije varijabla ima istu
vrijednost koju je imala prilikom pozivanja procedure / funkcije.
35
Nasuprot ovome, ako se iskoristi ključna riječ ByRef u deklaraciji procedure / funkcije onda
će se, u slučaju proslijeđivanja vrijednosti varijable parametru ispred kojeg je iskorištena ova
ključna riječ stvari bitno promijeniti. Svaka promjena vrijednosti posmatranog parametra
uzrokovat će i direktnu promjenu vrijednosti varijable koja je proslijedila inicijalnu vrijednost
tom parametru. Nakon završetka procedure / funkcije varijabla će imati vrijednost koju je
imao parametar na kraju izvršavanja procedure a koja može da se bitno razlikuje od
vrijednosti prilikom poziva procedure.
Funkcije
Kao i parametarske procedure i funkcije mogu da sadržavaju parametre:
Function NazivFunkcije (paramA as TypeA, paramB as TypeB...) AS TipFunkcije
'Naredbe u okviru proračuna vrijednosti funkcije
End Function
Funkcija može biti deklarirana, s obzirom na njen doseg (scope) kao javna (Public) ili lokalna
(Private) u ovisnosti od potrebe da se funkcija koristi u okviru cijelog projekta ili samo u
jednom modulu.
Funkcija ima osobinu koja je bitno razlikuje od procedure: ona izračunava određenu
vrijednost, poprima tu vrijednost te je pridružuje varijabli iz koje je funkcija pozvana.
Funkcija vraća tip onakav kakav je zadan u deklaraciji funkcije. Ako se u deklaraciji funkcije
izostavi naglašavanje tipa funkcije onda funkcija vraća vrijednost tipa Variant. Programski
kod unutar funkcije obično negdje pri kraju sadrži naredbu u kojoj se na lijevoj strani nalazi
naziv funkcije, a na desnoj izraz koji može poprimiti odgovarajuću vrijednost i koji je tipa
kao i tip funkcije. Na tom mjestu se i izračunava dakle vrijednost funkcije, na primjer>
Private Function NazivFunkcije(paramA As Byte) As Integer
... ‘Programski kod
...
NazivFunkcije = izračunatiIzraz
End Function
Podatke funkcija prima preko argumenata koji su nabrojani u zaglavlju deklaracije funkcije.
Na ovaj način funkcije predstavljaju moćno oruđe u rukama programera jer je potrebno da se
samo jednom napiše programski kod koji se sa različitim parametrima poziva i time se
dobijaju odgovarajući odgovori odnosno vrijednosti od strane funkcije za rayličite ulazne
podatke.
U Visual Basic-u funkcija se poziva preko izraza u kojem se na lijevoj strani nalazi
odgovarajuća varijabla a na desnoj funkcija sa listom parametara koji su najčešće varijable,
mogu biti i fiksne vrijednosti, ali uvijek moraju biti istog tipa kao što je to u naglašeno u
deklaraciji funkcije:
varijablaA = NazivFunkcije (argA, argB,...)
36
Lista argumenata koji se proslijeđuju funkciji, za razliku kada se poziva parametarska
procedura, moraju biti zatvoreni unutar zagrada.
Funkcija se može pozvati i na način da se samo napiše naziv funkcije koja se poziva, dakle
bez pridruživanja vrijednosti, nekoj varijabli, koju funkcija vraća. U tom slučaju izvršava se
programski kod unutar funkcija, a izračunata vrijednost se odbacuje. Međutim, ovo je sasvim
neprikladan način korištenja funkcija jer je ona prvenstveno namijenjena da izračuna
vrijednost za određene parametre i tu vrijednost vrati varijabli. U ovakvom slučaju potrebno
je koristiti proceduru umjesto funkcije.
Načini prikaza procedura / funkcija
Prozor za prikaz programskog koda može da prikazuje procedure u dva načina:
- Procedure View način u kome se prikazuje samo jedna procedura u jednom
trenutku. Korištenjem tipki PageDown odnosno PageUp moguće je da se kreće od
jedne do druge procedure unutar aktivnog forma.
- Full Module View, način u kome se u kontinuitetu prikazuju sve postojeće
procedure unutar jednog forma. Na slici 3.5 prikazan je primjer izgleda prozora za
ovaj način prikaza. Mogu se uočiti tri event procedure:
o cmdOK_Click za komandno dugme cmdOK i event proceduru - događaj
koji nastupa kada korisnik klikne na dugme;
o Form_Load za form frmStart i to za event proceduru – događaj koja se
izvršava kada se učita form te
o txtData_Change za polje za unos podataka txtData i to za event proceduru
- događaj koja se izvršava svaki put kada korisnik promijeni neki podatak
u kontroli.
Slika 3.5 – Full module view
Između procedura može postojati horizontalna linija koja vizualno dijeli pojedine procedure,
ako je uključena opcija Procedure Separator na kartici Editor u prozoru Options koji se
nalazi na izborniku Tools, slika 3.6. Ovdje se takođe može definirati i podrazumijevani način
prikaza procedura. Uključivanjem opcije Default to Full Module View za svaki form će
podrazumijevana opcija prikaza biti Full Module View.
37
Slika 3.6 – Tools – Options: Uključivanje opcija za prikaz
Prelaz između jednog od dva spomenuta načina prikaza procedura moguće je i korištenjem
preklopki u donjem lijevom uglu prozora za pisanje koda.
Neke važniji događaji
Kao što je već rečeno event procedure se imenuju po principu
NazivKontrole_NazivDogađaja.
Pri ovome je potrebno obratiti pažnju na činjenicu da ako se nakon upisivanja programskog
koda unutar neke od event procedura promijeni naziv kontrole, Visual Basic više neće
raspoznati prethodno napisane event procedure za tu kontrolu. Dakle, promjenom naziva
kontrole neće se automatski promijeniti naziv event procedure. Srećom, postojeće procedure
neće biti obrisane, ali će se podrazumijevati da se radi o općim, a ne o event procedurama pa
je potrebno iskopirati postojeći programski kod nazad unutar novoimenovane event
procedure.
Važniji događaji (event-i) koji je potrebno poznavati i koji se često koriste kod objekta Form
su slijedeći:
- Load, događaj koji se izvršava svaki put kada se unutar programa pozove prikaz
forma. Događaj se izvršava u trenutku učitavanja podataka u memopriju računara
o formu, prije negom što se prozor kojim je objekat grafički predstavlje uopće
pojavi na ekranu.
- Activate, događaj koji nastupa nakon događaja Load, tj. nakon što se podaci o
formu učitaju u memoriju i kada se grafički prozor koji predstavlja form pojavi na
ekranu.
- Unload, događaj koji se aktivira u trenutku brisanja podataka o formu iz memorije
računara, ali prije nego što je form nestao sa ekrana.
- Terminate, događaj nastupa nakon događaja Unload i to u trenutku kada form
nestane sa ekrana.
38
Za kontrolu tipa CommandButton najvažniji događaj za koji je potrebno napisati
odgovarajući programski kod je:
- Click, Događaj nastupa svaki put kada korisnik klikne na kontrolu.
Za kontrolu tipa TextBox koja služi za unos podataka od strane korisnika važni događaji su:
- Change, koji nastupa svaki put kada se promijeni neki podatak u kontroli.
Potrebno je biti oprezan sa korištenjem jer se event procedura aktivira prilikom
promjene samo jednog alfanumeričkog znaka.
- Validate, događaj koji je koristan u fazi ispitivanja ispravnosti unesenog podatka u
kontroli. Parametar Cancel se koristi da se spriječi unos ili promjena koji ne
odgovaraju postavkama za datu kontrolu. Davanje vrijednosti Cancel=True
ukoliko unos nije ispravan onemogućava dalji rad u programu i zahtijeva ispravku
pogrešno unesenog podatka.
- KeyDown, događaj koji se aktivira pritiskom na tipku tastature. Moguće je
koristiti KeyCode broj za odabir aktivnosti u ovisnosti od pritisnute tipke.
Parametar Shift se može iskoristit za provjeru da li je pritisnuta tipka Shift, ako je
Shift=1, odnosno da li je pritisnuta tipka Ctrl, ako je parametar Shift=2.
- KeyPress, slično kao o KeyDown, aktivira se pritiskom tipke na tastaturi.
- KeyUp, isto kao i KeyDown samo se aktivira nakon što se otpusti pritisnuta tipka
na tastaturi.
.Za kontrolu tipa Picture koja se najčešće koristi za grafičke prikaze interesantna su tri
događaja koja nastaju korištenjem miša i tipki na mišu:
- MouseDown je događaj koji se pokreće pritiskom tipke miša, MouseMove
nastupa uvijek tokom pomicanja miša nad kontrolom dok event procedura
MouseUp nastupa otpuštanjem tipke na mišu.
U svakoj od ovih event procedura moguće je pomoću parametara kontrolisati:
o Da li je pritisnuta lijeva ili desna tipka miša, za što se koristi parametar
Button. Vrijednost ovog parametra od 1 određuje lijevu tipku miša, dok 2
određuje desnu.
o Da li je pritisnuta tipka Shift odnosno tipka Control (Ctrl) a što se može
odrediti pomoću parametra Shift koji poprima vrijednost 1 za pritisnutu
tipku Shift i 2 za pritisnutu tipku Control (Ctrl).
o X i Y koordinate na kojima se nalazi pokazivač miša. Pri ovome se
razmjera određuje na osnovu vrijednosti osobine ScaleMode, najčešće u
Twips-ovima. Pri ovome koordinatni početak polazi iz gornjeg desnog ugla
što znači da X koordinata raste od lijeve ka desnoj strani PictureBox-a dok
Y koordinata raste od gornje prema donjoj strani kontrole.
39
Message i Input box
Često je potrebno prikazati različite poruke korisniku tokom faze korištenja programa. Da se
ne bi kreirao poseban form sa porukom Visual Basic ima ugrađenu zgodnu i veoma korisnu
osobinu: prozor za poruke, message box, (msgbox). Pozivanje prozora sa porukama je veoma
jednostavno. U svom najjednostavnijem obliku sintaksa je slijedeća:
MsgBox “Tekst poruke za korisnika!”
Na ekranu će se prikazati prozor sa porukom prikazan na slici 3.7.
Pored proslijeđivanja teksta poruke moguće je takođe upravljati i sa prikazom komandnih
dugmadi (OK, Cancel, Yes, No...) te sa prikazom sličica koje odgovaraju vrsti poruke:
informacija, upozorenje ili pak kritična greška.
Slika 3.7 – Message box
Nešto malo komplikovanija sintaksa naredbe za prozor sa porukama je slijedeća:
MsgBox “Tekst poruke za korisnika!”, Dugme1+Dugme2+Sličica
Visual Basic nudi nekoliko vrsta dugmadi koja se mogu naći na prozoru sa porukama kao što
su: OK (vbOKOnly), OK i Cancel (vbOKCancel), Yes i No (vbYesNo) itd. Isto tako moguće
je definirati prozor sa informativnom porukom dodajući sličicu koja simbolizuje informaciju,
dodajući u sintaksu poruke (vbInformation), upozorenje (vbExclamation) odnosno kritičnu
pogrešku (vbCritical). Na primjer, sintaksa poruke u gornjem slučaju sa dugmadima OK i
Cancel te sa sličicom koja simbolizuje informaciju bi bila slijedeća:
MsgBox “Tekst poruke za korisnika!”, vbOKCancel+vbInformation
Prozor koji se prikazuje na osnovu gore napisane komande je prikazan na slici 3.8.
Slika 3.8 – Message box
Treći, opcionalni parametar koji se može proslijediti prilikom pozivanja message box-a je
naslov koji se ispisuje na naslovnoj traci, title bar-u, prozora za poruke. U ovom slučaju
sintaksa za message-box je slijedeća:
40
MsgBox “Tekst poruke za korisnika!”, vbOKCancel+vbInformation, "Test"
Ukoliko se ne unese treći parametar za title bar onda se na message box-u ispisuje naziv
projekta (programa) koji se zadaje u Project Properties-u.
Prozora za poruke može se koristiti i za traženje odluke od strane korisnika za dalje
aktivnosti. U slučaju kada se na prozoru nalazi više od jednog dugmeta moguće je odrediti
koje dugme je pritisnuto od strane korisnika, odnosno koju odluku je korisnik odabrao.
Pritiskom na bilo koje ponuđeno dugme prozor se zatvara, a message box, slično kao i
funkcija, vraća vrijednost koja ovisi od pritisnutog dugmeta. Vrijednost koju vrati message
box može se pridružiti nekoj varijabli te se na osnovu vrijednosti te varijable može dalje
odlučiti smjer izvršavanja programa. Sintaksa je slijedeća:
msgResponse = Msgbox ("Poruka",vbYesNo + vbQuestion)
U primjeru je sa msgResponse varijabla koja poprima vrijednost u ovisnosti od toga koje
dugme je kliknuto na message box-u, Yes ili No u datom primjeru. Za ispitivanje se mogu
koristiti konstante vbYes odnosno vbNo. U Tabeli su date vrijednosti koje funkcija MsgBox
poprima u ovisnosti od pritisnutog dugmeta. U slučaju korištenja message box-a kao funkcije
svi parametri moraju biti unutar zagrada.
Tabela 3.1 - Vrijednosti funkcije msgbox
Konstanta
vbOK
vbCancel
vbAbort
vbRetry
vbIgnore
vbYes
vbNo
Vrijednost
1
2
3
4
5
6
7
Dugme
OK
Cancel
Abort
Retry
Ignore
Yes
No
Input Box se često može iskoristiti za upis određenog podatka od strane korisnika te
pridruživanje te vrijednosti varijabli. Sintaksa komande za InputBox je slična sintaksi koja se
koristi kod message box-a:
inputData = InputBox "Tekst poruke","Naslov", inicijalnaVrijednost
Prvi parametar ("Tekst poruke") se ispisuje na samom prozoru i služi da se korisniku objasni
koja se aktivnost očekuje od njega. Parametar "Naslov" određuje ispis na naslovnoj traci (title
bar-u) dok se sa parametrom inicijalnaVrijednost nudi vrijednost koja se prilikom
pojavljivanja InputBox-a pojavljuje u polju za upis podatka.
Primjer prozora tipa InputBox koji se pojavljuje usljed naredbe:
InputBox "Upisite vrijednost", "Podatak", 50
prikazan je na slici 3.9.
41
Slika 3.9 - Input Box
Vrijednost koja se upiše u polje pridružuje se varijabli u naredbi za pozivanje InputBox-a, na
primjer u slučaju naredbe:
vrijednostX = InputBox "Upisite vrijednost", "Podatak", 50
vrijednost koju korisnik upiše pridružuje se varijabli vrijednostX.
Provjera sintakse
Tokom faze pisanja programskog koda Viual basic editor automatski provjerava sintaksu u
svakoj liniji koda. Sintaksa, u programerskom smislu, se može definirati kao skup osnovnih
gramatičkih pravila programskog jezika. To je format koji Visual Basic očekuje da bude
poštovan u svakoj liniji programskog koda. Ako Visual Basic pronađe da nešto nije u redu u
liniji programskog koda, pojavit će se dva neovisna događaja koja će sugerirati grešku:
1. Linija programskog koda koja je pogrešno napisana bit će prikazana crvenom
bojom.
2. Prozor sa porukom o grešci će da se pojavi na ekranu, ukratko objašnjavajući u
čemu je problem.
Koristan način rješavanja problema usljed upisivanja pogrešne sintakse jeste korištenje
Visual Basic Help-a. Zgodno je što se pomoć može pozvati samo sa jednim klikom. Potrebno
je da se kursor postavi unutar ključne riječi koja se nalazi u liniji programskog koda sa
greškom te da se pritisne funkcijska tipka F1. Visual basic prikazuje tekst u kome se
objašnjava ispravna sintaksa za tu ključnu riječ.
Ispravnost sintakse se takođe može pratiti tokom pisanja koda na način da se ključne riječi i
nazivi varijabli pišu malim slovima. Nakon završetka pisanja linije programskog koda
pritiskom na tipku Enter Visual Basic provjerava ispravnost korištene sintakse kao i korektno
ispisivanje malih i velikih slova u ključnim riječima i nazivima varijabli. Sve ključne riječi i
tipovi varijabli se ispisuju u plavoj boji sa prvim velikim slovom.
U cilju provjere ispravnog upisivanja naziva varijabli, a pogotovo ako se daju duža opisna
imena varijablama, obično sastavljena od dvije ili više riječi, potrebno je da se prva slovo
svake riječi u deklaraciji varijable definira sa velikim slovom. Nakom pritiska na tipku Enter
na kraju linije programskog koda, bivaju od strane Visual Basic-a pretvorena mala slova u
velika, na isti način kao što je to definirano u deklaraciji varijable.
42
Auto Member liste
Prilikom pisanja programskog koda često će se desiti da se pojavljuje lista sa opcijama koje
se mogu izabrati u datom trenutku. Na osnovu korištenih ključnih riječi u liniji programskog
koda Visual Basic određuje koje dalje ključne riječi mogu da se nađu u toj liniji pa nudi listu
mogućih opcija.
Lista mogućih opcija se sastoji od ključnih riječi koje mogu da se nađu na tom mjestu, tipova
varijabli, osobina itd. Ova opcija je veoma korisna prilikom pisanja programskog koda jer se
automatski može pratiti ispravnost korištene sintakse.
Da bi se pojavljivala lista opcija potrebno je da se uključi opcija Auto List Members
na kartici Editor, okvir Code Settings, u prozoru Options koji se nalazi na izborniku Tools,
slika 3.6.
Duge linije programskog koda
Još jedna važna odlika Visual Basic editora je da se često duge linije programskog koda
mogu podijeliti u više, kraćih linija koda. Da bi se to ostvarilo potrebno je definirati prelaz sa
jedne na drugu liniju koda. To se ostvaruje korištenjem donje crte (underscore character-a)
(_) na kraju linije koda za koju se želi nastaviti pisanje u novoj liniji. Na kraju svake linije
koda potrebno je koristiti ovaj znak za prelazak na novu liniju koda. Ovo, pored lakšeg
pregleda programskog koda u Visual Basic Editoru, takođe može biti korisno za potrebe
štampanja programskog koda jer omogućava mnogo bolju čitljivost na štampanoj verziji.
43
4. VARIJABLE
Deklaracije varijbli
Prije korištenja bilo koje varijable u programskom kodu preporuka je da se varijabla
eksplicitno deklarira. Kontrola deklariranja varijabli je moguća korištenjem naredbe OPTION
EXPLICIT. Ukoliko se ova naredba nalazi u sastavu forma ili modula onda se unutar tog
forma ili modula moraju deklarirati sve varijable koje se koriste. Moguće je od Visual Basica
zatražiti da u svaki novi form ili modul automatski ubacuje naredbu OPTION EXPLICIT. U
izborniku Tools potrebno je odabrati opciju Options, te na kartici Editor uključiti opciju
Require Variable Declaration.
Slika 4.1 – Prozor Option – Kartica Editor
Deklariranje varijabli se izvodi pomoću tri klučne riječi u Visual Basicu: PUBLIC,
PRIVATE i DIM.
Prema samom imenu PUBLIC i PRIVATE može se zaključiti i osnovna razlika između ovih
dvaju ključnih riječi. PUBLIC se koristi za deklariranje varijabli čije se korištenje namjenjuje
unutar cijelog projekta / programa, dok se riječ PRIVATE koristi za deklariranje varijabli čije
je korištenje potrebno samo unutar forma ili modula u kojem je varijabla i deklarirana. Pri
44
ovome se varijable koje su namijenjene za korištenje u cijelom projektu / programu, tzv.
javne (public) varijable, deklariraju unutar modula dok se unutar formova deklariraju
PRIVATE varijable, tj. one varijable koje se koriste samo unutar dotičnog forma. U oba
slučaja varijable se deklariraju u okviru sekcije (General) – (Declarations) na način:
PUBLIC varijablaX
odnosno
PRIVATE varijablaX
Tipovi varijabli
U gornjem primjeru nije definiran tip varijable pa se podrazumijeva da je varijablaX tzv.
variant tipa. Variant varijabla može sadržavati bilo koju vrstu podatka, broj, tekst, objekt itd.
Pomoću posebnih funkcija je moguće odrediti tip varijable koji je pohranjen u variant
varijabli, a tip variant varijable se mijenja prilikom pridruživanja bilo kojeg tipa podatka.
Dakle, potrebno je zapamtiti da ako eksplicitno nije definirano kojem tipu varijable pripada
deklarirana varijabla onda je ona tipa variant.
Ukoliko je moguće unaprijed odrediti tip varijable potrebno je u deklaraciji varijable naglasiti
tip varijable. Kao što će se kasnije vidjeti definiranje tipa varijable je korisno jer Visual Basic
na taj način efikasnije može da upravlja memorijskim prostorom za smještaj varijabli. Tip
varijant zahtijeva uvijek veći memorijski prostor od varijable kojoj je eksplicitno zadat tip.
U slučaju poznatog tipa, način deklaracije varijable je slijedeći:
PUBLIC varijablaX AS Tip
odnosno
PRIVATE varijablaX AS Tip
pri čemu varijable mogu imati tipove koji su prikazani u Tabeli 4.1.
Tabela 4.1
Tip varijable
Byte
Boolean
Integer
Long
Single
Prostor koji
zauzima
(Byte)
1
2
2
4
4
Double
8
Vrijednosti koje može poprimiti
0 do 255
Tačno (True) ili Netačno (False)
Od -32,768 do 32,767
Od -2,147,483,648 do 2,147,483,647
Od -3.402823 . 1038 do -1.401298 . 10-45 za negativne
vrijednosti te od 1.401298 . 10-45 do 3.402823 . 1038 za
pozitivne vrijednosti
Od -1.79769313486232 . 10308 do -4.94065645841247 .
10-324 za negativne vrijednosti te od 4.94065645841247 .
45
Currency
8
Decimal
14
Date
Object
String
konstantne
dužine
String
promjenljive
dužine
Variant
(numeric)
Variant
(string)
8
4
Dužina niza
(broj
korištenih
znakova)
10 bajtova +
dužina niza
16
22+ string
length
10-324 do 1.79769313486232 . 10308 za pozitivne
vrijednosti
Od 922,337,203,685,477.5808 do
922,337,203,685,477.5807
Bez decimalnih mjesta:
+/-79,228,162,514,264,337,593,543,950,335
Sa 28 decimalnih mjesta:
+/- 7.9228162514264337593543950335
Najmanji mogući broj:
+/-0.0000000000000000000000000001
1. Januar 100. do 31. Decembar 9999.
Bilo koji objekt
Od 1 to približno 65,400 znakova
Dužina alfanumeričkog niza se može kretati od 0 do
približno 2 milijarde znakova.
Bilo koja numerička vrijednost do vrijednosti koju može
imati tip Double.
Isti rasponi kao u slučaju niza (string-a) promjenljive
dužine.
DIM ključna riječ
Deklariranje varijabli je moguće i korištenjem ključne riječi DIM. U ovisnositi od mjesta gdje
je varijabla deklarirana ovisi i područje definiranosti važenja varijable: ako je definirana u
sekciji (Declarations) varijabla važi u svim procedurama dotičnog modula, a ako je
definirana unutar procedure ili funkcije onda važi samo u toj proceduri odnosno funkciji. Ovo
je značajna odlika ključne riječi DIM u odnosu na ključne riječi PUBLIC i PRIVATE, jer se
varijable pomoću ključne riječi DIM mogu deklarirati i na nivou procedure odnosno funkcije.
Način deklariranja je identičan kao i kod PUBLIC i PRIVATE, pa za variant tip varijable
glasi
DIM varijablaX
odnosno za definirati tip:
DIM varijablaX AS Tip
Nazivi varijabli
I kod davanja imena varijablama postoje preporuke kao što je to slučaj kod imenovanja
objekata i kontrola. Postoji samo pravilo da naziv varijable mora da započinje sa slovom.
Nekada se je u raznim varijantama BASIC-a koristio princip sufiksa u označavanju tipa
varijabli, pa se tako varijablama tipa Integer dodavao sufix % (procenat), varijablama tipa
46
Single ! (uskličnik), varijablama tipa String $ (dolar) itd. Ovaj način se ne koristi kod Visual
Basica, ali isto tako niti način davanja prefiksa nije suviše često korišten nit se strogo
preporučuje. Najčešće ostaje na programeru da odabere najbolji način deklariranja varijabli
koji je dovoljno jasan. Isto tako se u (Declarations) sekciji mogu uz deklariracije varijabli
upisati popratni komentari koji opisuju vrstu i namjenu varijabli.
Komentari se u Visual Basicu upisuju nakon znaka jednostrukog apostrofa ('). Nakon ovoga
znaka Visual Basic ne provjerava sintaksu niti koristi išta što je napisano. Preporučuje se
umetanje komentara u svim dijelovima programskog koda jer to omogućava lakšu čitljivost i
razumljivost, ne samo za druge osobe nego često i za samog programera.
Visual Basic, za razliku od prijašnjih varijanti „običnog“ Basica nema ograničenja u dužini
naziva varijable što omogućava davanje naziva varijablama koje mogu biti sastavljene od
više riječi i koje direktno opisuju svrhu varijable. Pri ovome je preporuka da se u nazivu
varijabli sa više riječi svako prvo slovo u riječi piše velikim slovom. Napomenuti je da nisu
dozvoljeni razmaci u imenima varijabli.
Dodjeljivanje vrijednosti varijablama
Naredbom jednakosti, koja sa lijeve strane ima naziv varijable, a sa desne, izraz koji se može
izračunati u tom trenutku ili konkretnu vrijednost, vrši se dodjeljivanje vrijednosti
varijablama.
nazivVarijable = vrijednost odnosno nazivVarijable = izraz
U slučaju kada se sa desne strane nalazi izraz, taj izraz se može pojaviti u bilo kojem formatu
koji može poprimiti vrijednost koja odgovara tipu varijable sa lijeve strane.
Najjednostavniji primjer je kada se varijabli koja je tipa Byte, Integer, Long, Single ili
Double, dakle jedan od numeričkih tipova, pridruži konkretna numerička vrijednost, npr:
brojKoraka = 10
Prilikom pridruživanja vrijednosti varijablama potrebno je voditi računa o kojem se tipu
varijable radi te da li vrijednost koja se pridružuje pripada području definiranoti tipa
varijable. Na primjer, pridruživanje broja većeg od 32,767 varijabli tipa Integer rezultirat će u
pogrešci, jer je 32,767 najveći pozitivan broj koji se varijabli tipa Integer može dodijeliti.
Pridruživanje varijablama tipa String vrši se na slijedeći način:
tekstPoruke = „Pogreška! Unijeli ste pogrešan broj!“
Primjer pridruživanja vrijednosti varijablama korištenjem izraza može biti slijedeći:
brojKoraka = pocetniKorak + 1000 * vremenskiKorak
U ovom primjeru se na osnovu vrijednosti varijabli pocetniKorak i vremenskiKorak
izračunava vrijednost izraza sa lijve strane i ta se vrijednost pridružuje varijabli brojKoraka.
47
U izrazu na desnoj strani može da se pojavi i sama varijabla kojoj se izračunava nova
vrijednost. Ovakav izraz je u matematičkom pogledu nemoguć ali je u programerskoim
smislu sasvim normalan i više nego često se koristi, na primjer:
brojKoraka = brojKoraka + 1
Nakon ove naredbe varijabla će brojKoraka će imati vrijednost koja je za jedan veća od
vrijednosti mkoju je varijabla imala proje naredbe.
U nekim starijim verzijama Basica naredba pridruživanja je uvijek u sebi uključivala ključnu
riječ LET, pa je naredba pridruživanja imala ovakav oblik:
LET nazivVarijable = vrijednost odnosno LET nazivVarijable = izraz
Inicijaliziranje varijabli
Jedna od prvih stvari o kojima se mora voditi računa prilikom pokretanja programa je da li
varijable sa kojima će se raditi u programu treba da imaju neke inicijalne vrijednosti. Da bi se
ovo ostvarilo potrebno je prilikom pokretanja programa izvršiti inicijaliziranje vrijednosti
takvih varijabli. Neke lokalne varijable, sa područjem definiranosti na nivou forma, takođe
zahtijevaju neke inicijalne vrijednosti prilikom pokretanja tog forma.
U programima se mora definirati form koji se otvara prvi prilikom pokretanja, tzv. start up
form. Visual Basic učitava programski kod i dizajn start up forma prilikom pokretanja i
uapočinje sa izvršavanjem programa. Programski kod koji je napisan u event proceduri Load
start up forma se izvršava kada se form učitava u memoriju. Ovaj proces je idealno mjesto
gdje se definiraju inicijalne vrijednosti željenih varijabli. Na isti način se u svakoj ostaloj
formi mogu odrediti inicijalne vrijednosti lokalnih varijabli prilikom učitavanja forma u
njenoj Load event proceduri.
Pisanje izraza u naredbama pridruživanja
Kao što se je poznato vrijednost varijable se može definirati korištenjem izraza u kojima je
moguće da se izračuna nova vrijednost varijable. Visual basic prvo izračunava vrijednost
izraza na lijevoj strani naredbe pridruživanja i nakon toga izračunatu vrijednost pridružuje
varijabli. Izračunavanje izraze je moguće korisštenjem različitih operatora uz pomoć kojih se
formira aritmetička operacija. Operator je simbol koji predstavlja odgovarajuću operaciju:
- Znak ^ predstavlja operaciju stepenovanja kojom se stepenuje broj koji se nalazi
ispred operatora na eksponent koji se nalazi iza operatora. Na primjer izraz x^3 predstavlja
operaciju stepenovanja na treću potenciju varijable x.
- Znak * predstavlja operaciju množenja.
- Znak / (slash) predstavlja operaciju dijeljenja pri čemu je broj ispred operatora
djeljenik a broj iza operatora djelitelj. Potrebno je voditi računa da je djelitelj različit od nule
inače se pojavljuje pogreška tokom izvršavanja programa.
- Znak \ (backslash) predstavlja dijeljenje sa rezultatom koji je cijeli broj, tzv. integer
dijeljenje.
48
Na primjer izraz 7 \ 3 daje za rezutat 2. I u ovom slučaju djelitelj mora biti različit od nule
inače se javlja pogreška.
- MOD operator izračunava ostatak cijelog dijeljenja. Na primjer 7 MOD 3 za rezultat
daje 1, jer je ostataka dijeljenja 1. Ovo je jedini operator koji je ključna riječ – ostali su obični
znakovi.
- Znak + je zank operacije dijeljenja, a znak – operacije oduzimanja, ali isto tako se
koristi i kao znak za negativne brojeve.
Pravila redoslijeda izvršavanja operacija
Kada izraz posjeduje više operacija Visual Basic slijedi definirani redoslijed izvršavanja
operacija čime određuje koja se operacija izvršava prva i tako redom. Redoslijed izvršavanja
operacija je slijedeći:
1. Potenciranje (^)
2. Negacija (-)
3. Množenje (*) i dijeljenje (/)
4. Dijeljenje sa cijelim brojem (\)
5. MOD operacija, ostatak cijelog dijeljenja
6. Sabiranje (+) i oduzimanje (-)
Slično kao i u čisto matematičkim izrazima redoslijed izvršavanja operacija se može diktirati
korištenjm zagrada. U ovom slučaju se prvo izvršavaju operacije koje su zatvorene unutar
zagrada. U slučaju postojanja zagrada unutar zagrada, prvo se izvršavaju izrazi u unutrašnjim
zagradama a zatim u korak po korak u vanjskim. Zagrade su zgodan način da se složene
operacije i izrazi predstave na čitljiv i lako razumljiv način odnosno u svim situacijama kada
programer nije baš sasvim siguran u redoslijed izvođenja operacija. U svakom slučaju uvijek
je bolje imati i višak zagrada ali tačan rezutat nego kreirati nečitljiv izraz čime se može
dovesti u pitanje ispravnost proračuna.
Operacije sa nizovima riječi (stringovima)
Visual Basic takođe ima specifične operacije sa ostalim, nenumeričkim tipovima podataka.
Na primjer može se koristit operator kojim se vrši sastavljanje više nizova riječi u jedan niz
odnosno rečenicu odnosno rečenice. Primjer sastavljanja je slijdeći:
msgTitle = “Naslov“ & “ – Objasnjenje”
U prethodnom primjeru vrijednost dvaju stringova “Naslov“ i “ – Objasnjenje“ se sastavljaju
u jedan string “Naslov – Objasnjenje“ te se pridružuju varijabli msgTitle. U prethodnom
izrazu operator sastavljanja dvaju stringova je opoerator &.
Interesantno je da se operator & može upotrijebiti i u slučaju kada se jednom stringu
pridružuje varijabla koja ima čisto numeričku vrijednost. U tom slučaju se numerička
vrijednost tretira čisto kao string pa je stoga i moguće izvršiti spajanje. Pored operatora
spajanja & za spajanje stringova se može koristiti i operator +. Međutim ovaj operator se
može iskoristiti samo u slučaju spajanja čistih stringova. U slučaju da se pokuša spojiti string
49
sa varijablom koja ima numeričku vrijesnot dobit će se greška tokom faze izvršavanja
programa.
Nizovi
Niz je list, tabela odnosno višedimenzionalni skup podataka koji se predstavljaju istim
imenom varijable. Niz ima svojstva koja posjeduje svaka varijabla: svrha mu je čuvanje i
predstavljanje podataka i ima područje validnosti koje ovisi od toga koja ključna riječ je
korištena (Dim, Private ili Public) te na kojem mjestu je izvršeno deklariranja niza
(Declarations sekcija ili zaglavlje procedure / funkcije). Međutim, pored ovih opštih osobina
koje ima svaka varijabla jedan niz posjeduje svojstvo da mu se podaci mogu organizirati u
jednoj, dvije ili više dimenzija. Svaki podatak unutar jednog niza jedinstveno je određen
brojem ili indeksom niza. Pri ovome kod jednodimenzinoalnih nizova postoji indeks
sastavljen od jednog broja, kod dvodimenzionalnog niza, tabele, indeks je sastavljen od dva
broja koja predstavljaju red i kolonu tabele podataka itd. Visual Basic nudi mmogućnost
kreiranja maksimalno 60 dimenzionalnog niza.
Jednodimenzionalni nizovi
Jednodimenzionalni niz se deklarira koristeći ključne riječi Public, Private ilio Dim u
ovisnosti od željenog dosega varijable:
PUBLIC nizX(N) AS Tip
odnosno
PRIVATE nizX(N) AS Tip odnosno DIM nizX(N) AS Tip
N je broj koji označava maksimalan predviđeni broj elemenata niza. U principu broj
elemenata niza će biti N+1 jer se uzima da je prvi član niza varijabla sa ineksom 0 (nula). U
Visual Basicu se podrazumijeva da je prvi član niza predstavljen indeksom 0. Međutim
postoji naredba koja omogućuje da definiranje početka indeksiranja od 1. Naredba koja
eksplicitno određuje od kojeg broja započinje indeksiranje je naredba OPTION BASE.
Naredba se mora upotrijebiti u modulu prije bilo koje deklaracije niza. Oblik naredbe za
slučaj definiranja početka indeksiranja od 1 je slijedeći:
OPTION BASE 1
Visual Basic dozvoljava takođe kreiranje niza kod kojeg prvi član ima indeks koji je
proizvoljan redni broj. Moguće je dakle deklarirati niz kod kojeg se indeksi
Nalaze između dva redna broja. Primjer za ovo je:
PUBLIC nizX (N to M) AS Tip
U ovom primjeru deklarirana je niz pod nazivom nizX koji ima indekse koji polaze od
vrijednosti N pa sve do vrijednosti M.
50
Višedimenzionalni nizovi
U slučaju višedimenzinoalnih nizova potrebno je za svaku dimenziju da se odrede
maksimalne vrijednosti ili raspon indeksa. Za slučaj dvodimenzionalnog niza, kod kojeg se
zadaju samo krajnje vrijednostim indeksa deklaracija ima oblik:
PUBLIC nizX (N, M) AS Tip
U slučaju kreiranja dvodimenzinalnog niza sa indeksima u željenim granicama onda
deklaracija ima oblik:
PUBLIC nizX (N1 TO N2, M1 TO M2) AS Tip
Na isti način višedimenzionalni niz se deklarira na slijedeći način:
PUBLIC nizX (N1 TO N2, M1 TO M2, ... W1 TO W2) AS Tip
Broj dimenzija je ograničen na 60.
Dinački nizovi
Kada se deklariše niz u kojem se odredi tačan broj elemenata niza, tzv niz fiksne dužine, onda
se nakon toga više, tokom izvođenja programa, ne može mijenati broj elemenata tog niza. Na
primjer, ako se definira niz:
PUBLIC struja(5) AS SINGLE
Ovaj niz ima tačno 6 elemenata tipa single, ako je OPTIOBN BASE podešena na 0 što je
podrazumijevana (default) vrijednost, odnosno niz će imati 5 elemenata ako je OPTION
BASE podešen na 1. Tokom izvođenja programa broj članova niza se ne može mijenjati.
Visual Basic rezervira memorijski prostor za ovaj niz i to tačno onoliko prostora koliko će
zauzeti broje elemenata koji je definiran u deklaraciji niza te u ovisnosti od tipa niza. Ovaj
rezervirani prostor ostaje nepromijenjen tokom cijelog trajanja rada programa.
Nizovi fiksne dužine su dobro rješenje u svim slučajevima kada se unaprijed zna tačan broj
elemenata niza. Ali u nekim slučajevima, broj elemenata niza se određuje dinamički tokom
faze korištenja programa, tj. može postojati potreba da se broj elemenata mijenja tokom faze
izvođenja programa. I ovdje je moguće koristiti niz fiksne dužine koji može da bude tako
deklariran da ima veoma mnogo elemenata, odnosno onoliko mnogo koliko zahtjevi
programa sigurno neće biti veliki. Ali ovakvo deklariranje niz je neprimjereno crpljenje
resursa računara jer se u tom slučaju za sve elemente definira memorijski prostor iako u
većini slučajeva taj prostor nikada neće biti korišten.
Rješenje u ovakvim slučajevima je da se koriste takozvani dinamički nizovi. Visual Basic
rezervira memorijski prostor za dinamičke nizove tokom faze izvršavanja programa i ovaj
memorijski prostor može da se mijenja u ovisnosti od broja elemenata u dinamičkom nizu.
Deklariranje dinamičkih nizova se vrši na sličan način kao što se to radi sa nizovima fiksne
dužine, korištenjem ključnih riječi PUBLIC, PRIVATE ili DIM ispred naziva varijable niza,
51
ali se u zagrade ne upisuje broj kojim se unaprijed definira broj elemenata niza. U
prethodnom primjeru, definiranje niza struja, promjenljive dužine bi bilo:
PUBLIC struja() AS SINGLE
Vrlo važno je da se prije korištenja varijable niza, bilo gdje u programu, koristi ključna riječ
REDIM kojom se definira trenutna dužina (broj elemenata niza). Dakle, ako se u prethodnom
primjeru želi raditi sa varijablom struja, i to sa prva 3 elementa, bez nultog elementa,
potrebno je prije pozivanja varijabli struja(1), struja(2) i struja(3) da se izvrši dinamičko
podešavanje dužine niza na slijedeći način:
REDIM struja(3)
Ako se dalje tokom faze izvršavanja programa ponovo želi promijeniti dužina niza, koristeći
ponovo prethodni primjer, ako se želi promijeniti broje elemenata varijable struja sa 3 na 10
moguće je to izvršiti na dva načina:
1. Ponovnim korištenjem iste ključne riječi REDIM i upisivanjem novog ukupnog
broja elemenata niza:
REDIM struja(10)
Na ovaj način se ukupan broj elemenata povećava na 10 (pod pretpostavkom da je
OPTION BASE podešen na 1). Međutim, ako su prije korištenja ove naredbe
varijable struja(1), struja(2) i struja(3) već bile korištene i imale neke vrijednosti,
nakon ove nareddbe redimenzioniranja niza, vrijednosti u ova tri elementa niza se
gube. Dakle potrebno je biti oprezan sa redimenzioniranjem niza jer se sve prethodne
vrijednosti varijabli poništavaju. Nekada je to i potrebno pa se u tim slučajevima
redimenziniranjem prazni memorijski prostor za smještaj novih vrijednosti.
2. Ukoliko se ipak žele zadržati prethodno izračunate vrijednosti u elementima
niza, u prethodnom primjeru u elementima niza struja(1), struja(2) i struja(3), a
potrebno je da se poveća broj elemenata niza, onda se zajedno sa ključnom riječi
REDIM koristi i ključna riječ PRESERVE. Na primjer naredba
REDIM PRESERVE struja(10)
će sačuvati vrijednosti koje su prethodno pridružene elemenmtima niza i istovremeno
povećat će broj elemenata niza na 10.
Treba imati na umu da se REDIM naredba može koristiti za podešavanje broj elemenata
samo dinamičkog, nikako ne niza fiksne dužine.
U nekim slučajevima REDIM naredba se može koristiti i za promjenu broja dimenzija niza.
Na primjer, pomoću naredbe REDIM moguće je da se dvodimenzionalni niz promijeni u
trodimenzionalni. Ali isto tako ovaj način nije moguć ukoliko se koristi ključna riječ
PRESERVE u okviru REDIM naredbe. Ukoliko se koristi ključna riječ PRESERVE onda se
može mijenjati broj elemenata niza samo u poslednjoj dimenziji višedimenzionalnog niza.
Sve ostale dimenzije višedimenzionalnog niza moraju da ostanu iste ukoliko se žele zadržati
vrijednosti elemenata niza.
52