Professional Documents
Culture Documents
07 - Koristenje Standardnih Kontrola Visual Basica PDF
07 - Koristenje Standardnih Kontrola Visual Basica PDF
P O G L A V L J E
Kori{tenje standardnih
kontrola Visual Basica
Kontrole upotrebljavate za dobivanje podataka od korisnika te za prikazivanje izlaznih
podataka. Neke od kontrola koje mo`ete koristiti u va{oj aplikaciji uklju~uju okvire za
tekst, naredbene gumbe i okvire s popisom. Ostale kontrole omogu}uju vam pristup
podacima drugih aplikacija i procesa kao da je udaljena aplikacija dio va{eg koda.
Svaka kontrola ima vlastiti skup svojstava, postupaka i doga|aja. Ovo poglavlje upoznaje vas s standardnim kontrolama Visual Basica.
Za vi{e informacija Pogledajte Kori{tenje ActiveX kontrola u dijelu Microsoft
Visual Basic 6.0 Component Tools Guide biblioteke Microsoft Visual Basic 6.0
Reference Library za detaljnije informacije o ActiveX kontrolama dostupnim u
Professional i Enterprise verzijama Visual Basica.
Sadr`aj
II. dio
220
Vodi~ za programere
7. poglavlje
Vrste kontrola
U Visual Basicu postoje tri op}enite kategorije kontrola:
Ugra|ene kontrole, kao {to su naredbeni gumbi i kontrole okvira. Ove kontrole
nalaze se unutar datoteke .exe Visual Basica. Ugra|ene kontrole uvijek su uklju~ene
u alatni okvir, za razliku od ActiveX kontrola i dodatnih objekata, koji mogu biti
maknuti iz i dodani u alatni okvir.
ActiveX kontrole, koje postoje kao posebne datoteke s nastavkom .ocx. Ovdje su
uklju~ene kontrole koje su dostupne u svim verzijama Visual Basica (kontrole kombiniranog okvira s podacima, okvira s popisom podataka i sli~ne) te kontrole koje su
dostupne samo u Professional i Enterprise verzijama (kao kontrole prikaza popisa,
alatne trake, animacije i dijaloga s karticama). Dostupno je i puno ActiveX kontrola
drugih proizvo|a~a.
Napomena Kontrole ~ije datoteke imaju nastavak .vbx koriste stariju
tehnologiju i mogu se prona}i u aplikacijama napisanim u starijim verzijama
Visual Basica. Kad Visual Basic otvori projekt koji sadr`i .vbx kontrolu, standardni postupak je zamjena .vbx kontrole .ocx kontrolom, ali samo ako je dostupna .ocx verzija kontrole. Pogledajte odlomak A`uriranje starijih verzija kontrola Visual Basica kasnije u ovom poglavlju za informacije o a`uriranju kontrola na .ocx format.
Dodatni objekti, kao {to je objekt radnog lista Microsoft Excela koji sadr`i popis
svih zaposlenika va{e firme, ili objekt kalendara Microsoft Projecta koji sadr`i
informacije planiranja za projekt. Budu}i da ovi objekti mogu biti dodani u alatni
okvir, mo`emo ih smatrati kontrolama. Neki od ovih objekata tako|er podr`avaju
automatizaciju (nekad zvanu OLE automatizacija), {to vam omogu}uje programiranje objekata druge aplikacije iz Visual Basic aplikacije. Pogledajte 9. poglavlje
Programiranje objektima, za vi{e informacija o automatizaciji.
c Pogledajte odlomak Kori{tenje ActiveX kontrola u vodi~u Microsoft Visual Basic
6.0 Component Tools Guide za vi{e informacija o ActiveX kontrolama dostupnim u
Professional i Enterprise verzijama Visual Basica.
Ugra|ene kontrole
Sljede}a tablica rezimira ugra|ene kontrole koje se mogu prona}i u alatnom okviru
Visual Basica.
ikona
ime kontrole
ime klase
opis
kontrolna ku}ica
CheckBox
Prikazuje izbor to~no/neto~no ili da/ne. Istovremeno mo`ete potvrditi bilo koji broj kontrolnih ku}ica
na formi.
kombinirani okvir
ComboBox
Vodi~ za programere
221
II. dio
ikona
222
ime kontrole
ime klase
opis
naredbeni gumb
CommandButton
podaci
Data
okvir s popisom
direktorija
DirListBox
okvir s popisom
pogonskih ure|aja
DriveListBox
okvir s popisom
datoteka
FileListBox
okvir
Frame
vodoravne i okomite
trake za pomicanje
HScrollBar i
VScrollBar
slika
Image
natpis
Label
linija
Line
okvir s popisom
ListBox
OLE spremnik
OLE
gumb izbora
OptionButton
okvir za sliku
PictureBox
Vodi~ za programere
7. poglavlje
ikona
ime kontrole
ime klase
opis
lik
Shape
okvir s tekstom
TextBox
mjera~ vremena
Timer
ime kontrole
ime klase
opis
op}i dijalog
CommonDialog
kombinirani okvir
za podatke
DataCombo
okvir s popisom
podataka
podacima.
DataList
Microsoft fleksibilna
mre`a
MSFlexGrid
Vodi~ za programere
223
II. dio
224
Vodi~ za programere
7. poglavlje
Va{ izbor mo`e biti zadr`avanje tako odre|enog imena; me|utim, kad imate nekoliko
kontrola istog tipa, smisleno je promijeniti njihova svojstva Name u ne{to opisnije.
Budu}i da mo`e biti te{ko razlikovati gumb Command1 na formi MojaForma od
gumba Command1 na formi TvojaForma, poma`u pravila imenovanja. To je posebno
to~no kad se aplikacija sastoji od nekoliko formi, standardnih i klasnih modula.
Mo`ete upotrijebiti prefiks za opis klase, iza kojeg slijedi opisno ime kontrole. Kori{tenje takvog pravila dodjele imena ~ini programski kod razumljivijim, a sli~ni
objekti su abecedno grupirani u okviru s popisom objekata. Na primjer, kontroli kontrolne ku}ice mogli bi dati ovakvo ime:
chkSamo^itaj
vrijednost
Value
Text
Value
Action
podaci (Data)
Caption
Text
Text
Text
Path
Drive
Vodi~ za programere
225
II. dio
kontrola
vrijednost
FileName
Text
okvir (Frame)
Caption
Value
slika (Image)
Picture
natpis (Label)
Caption
linija (Line)
Visible
Text
Value
Picture
lik (Shape)
Shape
Text
Enabled
Value
Kad god se `elite pozvati na svojstvo kontrole koje je vrijednost te kontrole, mo`ete to
napraviti bez odre|ivanja imena svojstva u va{em programskom kodu. Na primjer, ova
linija postavlja vrijednost svojstva Text kontrole okvira s tekstom:
Text1 = Ovaj tekst je dodijeljen svojstvu Text kontrole Text1
Napomena Budu}i da kori{tenje vrijednosti kontrole ~ini va{ programski kod donekle manje ~itljivim, nemojte koristiti gornje primjere te se umjesto toga izri~ito
pozivajte na svojstva svih kontrola. Mo`ete poku{ati pisati va{ kod na oba na~ina, te
odlu~iti koristiti vrijednosti kontrola u va{em kodu ako nemate problema pri njegovom tuma~enju i ~itanju.
226
Vodi~ za programere
7. poglavlje
227
II. dio
operator
broj Number(n )
228
Number(n )
Operator(n )
0 = Number(0)
+ = Operator(1)
1 = Number(1)
- = Operator(2)
2 = Number(2)
X = Operator(3)
3 = Number(3)
/ = Operator(4)
Vodi~ za programere
7. poglavlje
Number(n )
Operator(n )
4 = Number(4)
= = Operator(5)
5 = Number(5)
6 = Number(6)
7 = Number(7)
8 = Number(8)
9 = Number(9)
Uo~ite da se svaka kontrola poziva sintaksom objekt(indeks). Indeks kontrole
odre|ujete kad je stvarate. Zapravo, odre|ivanje indeksa kontrole tijekom izrade ~ini
tu kontrolu dijelom matrice.
Svojstvo Index razlikuje jedan element matrice kontrola od drugog. Kad jedna od kontrola u matrici prepozna doga|aj, Visual Basic poziva zajedni~ki potprogram doga|aja
i proslje|uje argument (vrijednost svojstva Index) za identificiranje koja je kontrola
matrice zapravo prepoznala doga|aj.
Na primjer, prva linija potprograma doga|aja Number_Click je:
Private Sub Number_Click(Index As Integer)
Ako kontrola Number(0) prepozna doga|aj, Visual Basic proslje|uje 0 kao argument
index, a ako doga|aj prepozna kontrola Number(1), Visual Basic }e proslijediti 1 kao
argument index. Osim vrijednosti indeksa, ostatak programskog koda potprograma
Number_Click koji }e se izvr{iti jednak je za sve kontrole od Number(0) do
Number(9).
Vodi~ za programere
229
II. dio
3. Kad upi{ete postoje}e ime za kontrolu u matrici, Visual Basic }e prikazati dijalo{ki
okvir tra`e}i od vas potvrdu `elite li stvoriti matricu kontrola. Odaberite Yes za
potvrdu akcije.
Na primjer, ako je ime prvog elementa u matrici kontrola cmdKonMat, odabrat }ete
naredbeni gumb koji `elite dodati u matricu kontrola i odrediti mu ime cmdKonMat.
Prikazat }e se poruka Ve} imate kontrolu s imenom cmdKonMat. @elite li stvoriti
matricu kontrola?. Odaberite Yes za potvrdu operacije.
Kontrole dodane ovakvim postupkom dijele samo svojstvo Name i tip kontrole; sva
ostala svojstva ostaju ista kao kad je kontrola prvi put kreirana.
Kako dodati element matrice kontrola kopiranjem postoje}e kontrole
1. Kreirajte kontrolu u matrici kontrola.
2. Dok kontrola ima fokus, odaberite Copy u izborniku Edit.
3. U izborniku Edit, odaberite Paste. Visual Basic }e prikazati dijalo{ki okvir tra`e}i
od vas potvrdu da `elite stvoriti matricu kontrola. Odaberite Yes za potvrdu akcije.
Ta kontrola dobiva vrijednost indeksa 1. Kontrola koju ste prvu kreirali ima vrijednost
indeksa 0.
Vrijednost indeksa svakog novog elementa matrice odgovara redoslijedu po kojem je
element dodan u matricu kontrola. Kad su kontrole dodane na ovaj na~in, ve}ina
vidljivih svojstava, kao visina, {irina i boja, kopiraju se od prve kontrole u matrici kontrola novim kontrolama.
opis
objekt
indeks%
Kad u~itate novi element u matricu kontrola, ve}ina postavki svojstava kopira se od
najni`eg postoje}eg elementa u matrici - u ovom primjeru, elementa s vrijedno{}u
indeksa 0. Vrijednosti svojstava Visible, Index i TabIndex ne kopiraju se automatski
novim elementima u matrici kontrola, pa kako bi novododanu kontrolu u~inili
vidljivom, morate joj postaviti svojstvo Visible na True.
230
Vodi~ za programere
7. poglavlje
Napomena Visual Basic stvara pogre{ku ako poku{ate upotrijebiti naredbu Load
s brojem indeksa koji je ve} u upotrebi u matrici.
Va`no Naredbu Unload mo`ete koristiti za izbacivanje svake kontrole kreirane
naredbom Load. Me|utim, ne mo`ete upotrijebiti naredbu Unload za izbacivanje
kontrola stvorenih tijekom izrade aplikacije, bez obzira jesu li ili nisu dio matrice
kontrola.
svojstvo
postavka
forma
Caption
okvir za sliku
Name
picDisplay
natpis
Caption
Name Index
optButton 0
Vodi~ za programere
231
II. dio
objekt
svojstvo
postavka
Name Index
optButton 1
Name Caption
cmdAdd &Add
cmdDelete &Delete
cmdClose &Close
Name Caption
Novi gumbi izbora dodaju se potprogramom doga|aja Click naredbenog gumba Add.
U ovom primjeru, programski kod prije izvr{avanja naredbe Load provjerava je li
u~itano najvi{e deset gumb izbora. Jednom kad je kontrola u~itana, svojstvo Visible
mora biti postavljeno na True.
Private Sub cmdAdd_Click()
If MaxId = 0 Then MaxId = 1
232
Vodi~ za programere
7. poglavlje
Neke kontrole iz alatnog okvira Visual Basica mogu biti povezane s podacima, uklju~uju}i kontrole kombiniranog okvira, kontrolne ku}ice, slike, natpisa, okvira s popisom, okvira za sliku i okvira s tekstom. Dodatno, Visual Basic uklju~uje nekoliko
ActiveX kontrola povezanih s podacima kao {to su kontrole mre`e s podacima, kombiniranog okvira za podatke, grafikona i okvira s popisom podataka. Vi tako|er mo`ete
stvoriti vlastite ActiveX kontrole povezane s podacima, ili ih nabaviti od drugih proizvo|a~a.
Prethodne verzije Visual Basica sadr`avale su ugra|enu kontrolu podataka i kontrolu
udaljenih podataka (RDC) za pristup podacima. Obje kontrole i dalje su uklju~ene u
Visual Basic za sukladnost prema nazad. Me|utim, zbog fleksibilnosti kontrole ADO,
preporu~ljivo je stvarati nove baze podataka kori{tenjem kontrole ADO podataka.
Za vi{e informacija Potpun popis kontrola s pristupom podacima mo`e se prona}i
u odlomku Kontrole koje se povezuju prema kontroli ADO podataka kasnije u ovom
poglavlju. Kako koristiti ugra|enu kontrolu podataka i kontrolu udaljenih podataka
pogledajte Kori{tenje kontrole podataka i Kori{tenje kontrole udaljenih podataka
kasnije u ovom poglavlju. Za detalje o stvaranju davatelja podataka, pogledajte
Stvaranje klasa svjesnih podataka u 9. poglavlju Programiranje objektima.
Vodi~ za programere
233
II. dio
Mogu}e upotrebe
Povezivanje s lokalnim ili udaljenim bazama podataka.
Otvaranje odre|ene tablice iz baze podataka ili odre|ivanje skupa slogova temeljenog na strukturiranom jeziku upita (structured query langugage, SQL) ili pohranjenom potprogramu ili pregled tablica u toj bazi podataka.
Dodavanje novih slogova ili a`uriranje baze podataka temeljeno na svim promjenama koje ste napravili nad podacima prikazanim u povezanim kontrolama.
Kako bi stvorili klijenta ili kona~nu aplikaciju, dodajte kontrolu ADO podataka svojoj
formi kao {to bi dodali i bilo koju drugu kontrolu Visual Basica. Na formi mo`ete imati onoliko kontrola ADO podataka koliko trebate. Me|utim, znajte da je ova kontrola
razmjerno skup postupak stvaranja veza, jer koristi barem dvije veze za prvu kontrolu, te po jednu vezu vi{e za svaku dodatnu kontrolu.
234
Vodi~ za programere
7. poglavlje
Vodi~ za programere
235
II. dio
pojavljuje se
WillMove
MoveComplete
Nakon WillMove
WillChangeField
FieldChangeComplete
Nakon WillChangeField
WillChangeRecord
RecordChangeComplete
Nakon WillChangeRecord
WillChangeRecordset
RecordsetChangeComplete
Nakon WillChangeRecordset
InfoMessage
Vodi~ za programere
7. poglavlje
237
II. dio
kontrolna ku}ica
kombinirani okvir
slika
natpis
okvir s popisom
okvir za sliku
okvir s tekstom
Sljede}e ActiveX kontrole povezane s podacima su tako|er isporu~ene s svim verzijama Visual Basica:
Na kraju, mo`ete stvoriti svoje vlastite ActiveX kontrole koje }e biti povezane s
podacima kori{tenjem objekta DataBinding.
Za vi{e informacija Pogledajte odlomak Povezivanje kontrole s izvorom podataka u 9. poglavlju vodi~a Microsoft Visual Basic 6.0 Component Tools Guide za detalje
o stvaranju vlastitih kontrola povezanih s podacima.
238
Vodi~ za programere
7. poglavlje
Kontrola kontrolne ku}ice sli~na je kontroli gumba izbora jer se obje kontrole koriste
za naznaku odabira koji je napravio korisnik. Razlikuju se po tome {to samo jedan
gumb izbora u grupi mo`e istovremeno biti odabran. Kod kontrola kontrolne ku}ice,
me|utim, mo`e biti odabran bilo koji broj kontrolnih ku}ica.
Za vi{e informacija Pogledajte Odabir pojedinih izbora kontrolnim ku}icama u
3. poglavlju Forme, kontrole i izbornici za jednostavnu demonstraciju kontrole kontrolne ku}ice.
Svojstvo Value
Svojstvo Value kontrolne ku}ice pokazuje je li kontrolna ku}ica potvr|ena, odzna~ena
ili nedostupna (zasjenjena). Kad je potvr|ena, vrijednost je postavljena na 1.
Na primjer:
Sljede}a tablica ispisuje vrijednosti i istozna~ne konstante Visual Basica koje se koriste
za odre|ivanje svojstva Value.
postavka
vrijednost
konstanta
odzna~ena
vbUnchecked
potvr|ena
vbChecked
nedostupna
vbGrayed
Korisnik klikom na kontrolu kontrolne ku}ice nazna~uje potvr|eno ili odzna~eno stanje. Nakon toga mo`ete ispitati stanje kontrole i programirati svoju aplikaciju da izvr{i
neku akciju temeljenu na toj informaciji.
Vodi~ za programere
239
II. dio
Doga|aj Click
Kad god korisnik klikne na kontrolu kontrolne ku}ice, pokre}e se doga|aj Click.
Mo`ete zatim programirati svoju aplikaciju da izvede neke akcije ovisno o stanju kontrolne ku}ice. U sljede}em primjeru, svojstvo Caption kontrole kontrolne ku}ice
mijenja se svaki put kad se klikne na kontrolu, i ukazuje na potvr|eno ili odzna~eno
stanje.
Private Sub Check1_Click()
If Check1.Value = vbChecked Then
Check1.Caption = Potvr|eno
ElseIf Check1.Value = vbUnchecked Then
Check1.Caption = Odzna~eno
End If
End Sub
Napomena Ako korisnik poku{a dvaput kliknuti kontrolu kontrolne ku}ice, svaki
klik }e biti obra|en odvojeno; to zna~i da kontrola kontrolne ku}ice ne podr`ava
doga|aj dvoklika.
Vodi~ za programere
7. poglavlje
Kombinirani okviri predstavljaju korisniku popis izbora. Ako je broj stavki ve}i od
onog koji se mo`e prikazati u kombiniranom okviru, na kontroli }e se automatski prikazati trake za pomicanje. Korisnik se zatim njima mo`e kretati gore-dolje ili lijevodesno po popisu.
Vodi~ za programere
241
II. dio
vrijednost
konstanta
vbComboDropDown
vbComboSimple
vbComboDropDownList
Slika 7.7
242
Vodi~ za programere
7. poglavlje
Dodavanje stavki
Za dodavanje stavki u kombinirani okvir, upotrijebite postupak AddItem, koji ima
sljede}u sintaksu:
opis
okvir
stavka
Izraz tipa stringa koji se dodaje popisu. Ako je stavka slov~ana konstanta,
zatvorite je u navodnike.
indeks
Odre|uje gdje }e u popis biti uba~ena nova stavka. Indeks jednak 0 predstavlja
prvu poziciju. Ako je indeks izostavljen, stavka }e biti dodana na kraj
(ili prema redoslijedu sortiranja).
Svaki put kad se forma u~ita tijekom rada aplikacije i korisnik klikne strelicu prema
dolje, pojavit }e se popis kao {to je prikazano na slici 7.8.
Slika 7.8
Vodi~ za programere
243
II. dio
Sortiranje popisa
Dodavanje stavki u popis abecednim redoslijedom mo`ete odrediti postavljanjem svojstva Sorted na True te izostavljanjem indeksa. Sortiranje nije osjetljivo na vrstu slova;
zbog toga }e rije~i chardonnay i Chardonnay biti jednako tretirane.
Kad je svojstvo Sorted postavljeno na True, kori{tenje postupka AddItem s argumentom indeks mo`e dovesti do nepredvidljivih, nesortiranih rezultata.
Brisanje stavki
Mo`ete upotrijebiti postupak RemoveItem za brisanje stavki iz kombiniranog okvira.
Postupak RemoveItem ima jedan argument, indeks, koji odre|uje stavku za brisanje:
okvir.RemoveItem indeks
Argumenti okvir i indeks isti su kao i za postupak AddItem.
Na primjer, za brisanje prve stavke na listi, dodat }ete sljede}u liniju programskog
koda:
Combo1.RemoveItem 0
244
Vodi~ za programere
7. poglavlje
Svojstvo Text sadr`i trenutno odabranu stavku u kombiniranom okviru Combo1. Programski kod provjerava je li Chardonnay odabran te, ako je, prikazuje informaciju u
okviru s tekstom Text1.
245
II. dio
Ve}ina Visual Basic aplikacija ima naredbene gumbe koji omogu}uju korisniku da ih
jednostavno klikne za izvo|enje akcija. Kad korisnik odabere gumb, on ne samo da
pokre}e odgovaraju}u akciju, nego i izgleda kao da je pritisnut i otpu{ten pa se zbog
toga ponekad i naziva gumb za pritiskanje.
Za vi{e informacija Pogledajte Pokretanje akcije klikom na gumb u 3. poglavlju
Forme, kontrole i izbornici, za jednostavnu demonstraciju kontrole naredbenog
gumba.
Odre|ivanje natpisa
Upotrijebite svojstvo Caption za promjenu teksta koji se prikazuje na naredbenom
gumbu. Tijekom izrade aplikacije, ovo svojstvo mo`ete postaviti ako ga odaberete u
prozoru s svojstvima kontrole. Kad svojstvo Caption odredite tijekom izrade aplikacije, tekst na gumbu }e se odmah a`urirati.
Svojstvo Caption mo`ete postaviti na najvi{e 255 karaktera. Ako va{ natpis prekora~i
{irinu naredbenog gumba, bit }e prelomljen u idu}u liniju. Unato~ tome, bit }e odrezan
ako kontrola ne mo`e prihvatiti njegovu ukupnu visinu.
Pismo kojim se ispisuje natpis na naredbenom gumbu mo`ete promijeniti odre|ivanjem njegovog svojstva Font.
246
Vodi~ za programere
7. poglavlje
Svojstvo Value
Uvijek kad je naredbeni gumb odabran, njegovo svojstvo Value je postavljeno na True
i pokre}e se doga|aj Click. Vrijednost False (standardno) pokazuje da gumb nije odabran. Svojstvo Value mo`ete upotrijebiti u programskom kodu za pokretanje doga|aja
Click naredbenog gumba. Na primjer:
cmdPokreni.Value = True
Vodi~ za programere
247
II. dio
Doga|aj Click
Kad je gumb kliknut, pojavljuje se doga|aj Click naredbenog gumba i poziva se programski kod koji ste napisali u potprogramu doga|aja Click.
Klik na naredbeni gumb tako|er stvara doga|aje MouseDown i MouseUp. Ako namjeravate dodati potprograme doga|aja za te srodne doga|aje, budite sigurni da se njihove akcije ne}e sukobljavati. Redoslijed po kojem se ova tri doga|aja pojavljuju ovisi
od kontrole do kontrole. Kod kontrole naredbenog gumba, ovi doga|aji pojavljuju se
po ovom redu: MouseDown, Click, MouseUp.
Napomena Ako korisnik poku{a dvaput kliknuti kontrolu naredbenog gumba,
svaki klik }e biti obra|en odvojeno; to zna~i da kontrola naredbenog gumba ne
podr`ava doga|aj dvoklika.
Za vi{e informacija Pogledajte 11. poglavlje Odgovor na doga|aje mi{a i
tipkovnice, za vi{e informacija o doga|ajima MouseDown i MouseUp.
Kontrola op}eg dijaloga pru`a me|usklop izme|u Visual Basica i rutina u dinami~koj
biblioteci Microsoft Windowsa Commdlg.dll. Kako bi kreirali dijalo{ki okvir kori{tenjem ove kontrole, datoteka Commdlg.dll mora se nalaziti u direktoriju
Windows\System.
Kontrolu op}eg dijaloga upotrebljavate u va{oj aplikaciji tako da je dodate formi i
odredite svojstva kontrole. Dijalog koje se prikazuje pozivom te kontrole odre|en je
postupcima kontrole. Tijekom rada aplikacije, kad se pozove odgovaraju}i postupak,
prikazuje se dijalo{ki okvir ili se izvr{ava mehanizam pomo}i; tijekom izrade aplikacije, kontrola op}eg dijaloga se prikazuje kao ikona na formi. Veli~ina te ikone se ne
mo`e mijenjati.
248
Vodi~ za programere
7. poglavlje
Kontrola op}eg dijaloga omogu}uje vam prikaz sljede}ih obi~no kori{tenih dijalo{kih
okvira:
Open
Save As
Color
Font
Print
prikazani dijalog
ShowOpen
Open
ShowSave
Save As
ShowColor
Color
ShowFont
Font
ShowPrinter
ShowHelp
Vodi~ za programere
249
II. dio
Slika 7.12
250
Vodi~ za programere
7. poglavlje
Vodi~ za programere
251
II. dio
Upotrijebite svojstvo Color za dobivanje RGB vrijednosti boje koju je korisnik odabrao. Sljede}i programski kod prikazuje dijalo{ki okvir Color kad korisnik klikne
naredbeni gumb Command1:
Private Sub Command1_Click()
Postavljanje svojstva Cancel na True.
CommonDialog1.CancelError = True
On Error GoTo ObradaPogre{ke
Odre|ivanje svojstva Flags.
CommonDialog1.Flags = cdlCCRGBInit
Prikaz dijalo{kog okvira Color.
CommonDialog1.ShowColor
Postavljanje boje pozadine forme na odabranu boju.
Form1.BackColor = CommonDialog1.Color
Exit Sub
ObradaPogre{ke:
Korisnik je pritisnuo gumb Cancel.
Exit Sub
End Sub
252
svojstvo
odre|uje
Color
FontBold
Je li odabrano podebljavanje.
FontItalic
Je li odabrano nako{enje.
FondStrikethru
Je li odabrano precrtavanje.
FontUnderline
Je li odabrano podvla~enje.
FontName
FontSize
Vodi~ za programere
7. poglavlje
Slika 7.14
Vodi~ za programere
253
II. dio
CommonDialog1.ShowFont
Odre|ivanje svojstava teksta u skladu
s odabirima korisnika.
Text1.Font.Name = CommonDialog1.FontName
Text1.Font.Size = CommonDialog1.FontSize
Text1.Font.Bold = CommonDialog1.FontBold
Text1.Font.Italic = CommonDialog1.FontItalic
Text1.Font.Underline = CommonDialog1.FontUnderline
Text1.Font.Strikethru = CommonDialog1.FontStrikethru
Text1.ForeColor = CommonDialog1.Color
Exit Sub
ObradaPogre{ke:
Korisnik je pritisnuo gumb Cancel.
Exit Sub
End Sub
254
svojstvo
odre|uje
Copies
FromPage
ToPage
hDC
Orientation
Vodi~ za programere
7. poglavlje
Slika 7.15
Vodi~ za programere
255
II. dio
For i = 1 To BrojKopija
Ovdje postavite kod za slanje podataka pisa~u.
Next
Exit Sub
ObradaPogre{ke:
Korisnik je pritisnuo gumb Cancel.
Exit Sub
End Sub
256
Vodi~ za programere
7. poglavlje
257
II. dio
258
Vodi~ za programere
7. poglavlje
Mogu}e primjene
U relacijskoj bazi podataka, upotrijebite podatak iz jedne tablice za dostavu vrijednosti koje }e biti uba~ene u drugu (povezanu) tablicu. Na primjer, u bazi podataka s
inventarom, imena dobavlja~a su spremljena u jednoj tablici gdje svaki dobavlja~
ima jedinstveni identifikacijski broj. Druga tablica koja prikazuje proizvode koristi
taj broj za odre|ivanje firme koja dobavlja proizvod. Upotrijebite kontrolu okvira s
popisom podataka za prikaz imena dobavlja~a dok (nevidljivo) dostavljate identifikacijski broj dobavlja~a tablici s proizvodima.
opis
BoundText
SelectedItem
MatchEntry
IntegralHeight
Mijenja veli~inu kontrole tako da se mo`e prikazati to~an broj cijelih redova.
VisibleCount
Vodi~ za programere
259
II. dio
postavlja da }e stavka biti unesena u bazu podataka kao oblikovana. Zbog tih razloga, preporu~ljivo je ne odre|ivati svojstvo DataFormat kod kori{tenja kontrole kombiniranog okvira za podatke.
Za vi{e informacija Da biste isprobali vodi~ koji korak-po-korak pokazuje
kori{tenje svojstva BoundText, pogledajte Stvaranje mre`e podataka povezane s kontrolom okvira s popisom podataka, kasnije u ovom poglavlju. Za potpuni popis svojstava i postupaka za ove kontrole pogledajte Kontrola DataList i Kontrola
DataCombo, u stalnoj pomo}i.
260
Vodi~ za programere
7. poglavlje
Data 1
Titles
PublD
AU_ID
Title
Year_Published
ISBN
Data-Bound
Combo BoX
DataSource: Data1
DataField: PubID
RowSource: Data 2
BoundColumn: PubID
ListField: Name
Data 1
Publishers
PubID
Name
opis
DataSource
Ime kontrole podataka s kojim je povezana kontrola okvira s popisom podataka ili
kontrola kombiniranog okvira za podatke.
DataField
RowSource
BoundColumn
Ime polja u skupu slogova odre|enom u svojstvu RowSource. To polje mora biti
istog tipa kao i podatak u svojstvu DataField koji }e biti upotrijebljen za a`uriranje
popisa.
ListField
Vodi~ za programere
261
II. dio
262
svojstvo
postavka
Name
adoDataSource
ConnectionString
Northwind.mdl
RecordSource
Caption
Products
Vodi~ za programere
7. poglavlje
postavka
Name
adoRowSource
ConnectionString
Northwind.mdl
RecordSource
Caption
Suppliers
Visible
False
postavka
Name
grdProducts
DataSource
adoDataSource
Caption
Products
postavka
Name
dcbSuppliers
DataSource
adoDataSource
DataField
SupplierID
RowSource
adoRowSource
ListField
CompanyName
BoundColumn
SupplierID
9. Pokrenite projekt.
Vodi~ za programere
263
II. dio
Kroz skup slogova se mo`ete kretati klikanjem na strelice vidljivih kontrola ADO
podataka. Dok to radite, kontrola kombiniranog okvira za podatke }e a`urirati i
prikazivati ime dobavlja~a za svaki proizvod. Za mijenjanje polja SupplierID, kliknite
strelicu na kontroli kombiniranog okvira za podatke za prikaz spu{taju}e popisa, te
ponovno kliknite na drugog dobavlja~a kako bi promijenili vrijednost zapisanu u polju
SupplierID.
Mogu}e primjene
Pregled i editiranje podataka u udaljenoj ili lokalnoj bazi podataka.
Upotrijebite kontrolu mre`e podataka zajedno s drugim kontrolama povezanim s
podacima, kao {to je kontrola okvira s popisom podataka, za prikaz zapisa iz jedne
tablice, koji su povezani kroz zajedni~ko polje, u drugoj tablici prikazanoj drugom
kontrolom povezanom s podacima.
264
Vodi~ za programere
7. poglavlje
Vodi~ za programere
265
II. dio
266
Vodi~ za programere
7. poglavlje
Napomena Oba postupka, CellValue opisan gore, i CellText upotrijebljen u nastavku odlomka, zahtijevaju oznaku svojstva kao argument za ispravan rad.
Suprotno tome, ako `elite vratiti oblikovanu vrijednost polja, upotrijebite postupak
CellText:
Private Sub DataGrid1_RowColChange(LastRow As Variant, _
ByVal LastCol As Integer)
Debug.Print _
DataGrid1.Columns(ProductID).CellText(DataGrid1.Bookmark)
End Sub
Kamo dalje
Za postupak korak-po-korak stvaranja jednostavne aplikacije ovom kontrolom, pogledajte Stvaranje jednostavne aplikacije baze podataka kontrolama mre`e podataka i
ADO podataka, ili Stvaranje mre`e podataka povezane s kontrolom okvira s popisom podataka, kasnije u ovom poglavlju.
Kako bi nau~ili vi{e o razdijeljenim objektima i kako ih programirati, pogledajte
Rukovanje izgledima mre`e podataka, kasnije u ovom poglavlju.
267
II. dio
268
Vodi~ za programere
7. poglavlje
269
II. dio
Vodi~ za programere
7. poglavlje
Rad s stupcima
Podatke prikazane u kontroli mre`e s podacima mo`ete dinami~ki mijenjati promjenom svojstva DataSource. Na primjer, mo`ete prikazati drugu tablicu iz iste baze
podataka. Ako to napravite, kontrola mre`e podataka }e prikazati podatke samo s standardnim svojstvima.
Bilo koji stupac mo`ete obrisati kori{tenjem postupka Remove. Obavezno odredite
koji stupac }ete brisati kori{tenjem argumenta. Sljede}i programski kod }e obrisati stupac koji je kliknut.
Private Sub DataGrid1_HeadClick(ByVal StuIndeks As Integer)
DataGrid1.Columns.Remove StuIndeks
End Sub
Vodi~ za programere
271
II. dio
Skrivanje stupca
Mo`ete skriti bilo koji stupac postavljanjem njegovog svojstva Visible na False. To je
posebno korisno kad `elite ograni~iti broj stupaca tako da ih korisnik mo`e vidjeti ili
editirati. Sljede}i primjer prolazi kroz zbirku Columns, skrivaju}i sve osim nekoliko
stupaca.
Private Sub SakrijStupac()
Kori{tenje svojstva DataField za odre|ivanje koji je stupac
ispitan. Prikazivanje samo tri stupca: ImeProizvoda,
CijenaProizvoda i ProizvodaNaSkladi{tu.
Dim c As Column
For Each c In DataGrid1.Columns
Select Case c.DataField
Case ImeProizvoda
c.Visible = True
Case CijenaProizvoda
c.Visible = True
Case ProizvodaNaSkladi{tu
c.Visible = True
c.Caption = Na skladi{tu Promjena zaglavlja stupca.
Case Else
Skrivanje svih ostalih stupaca.
c.Visible = False
End Select
Next c
End Sub
272
Vodi~ za programere
7. poglavlje
Tijekom izvo|enja aplikacije, krajnji korisnik tako|er mo`e ru~no razdijeliti mre`u
(osim ako takva akcija nije onemogu}ena) klikom na jaha~ (tab) koji se nalazi desno
od donjeg lijevog kuta kontrole, kao {to je prikazano na ovoj slici:
jaha~ za
razdjeljivanje
U pravilu, kontrola mre`e podataka sadr`i jedan objekt Split. Ovo je programski kod
koji krajnjem korisniku onemogu}uje dodavanje razdjeljivanja:
DataGrid1.Splits(0).AllowSizing = False
Uskla|ivanje razdjeljivanja
Kad imate vi{e od jednog razdjeljivanja, trebat }ete nadzirati kako se razdjeljivanja
pomi~u. Na primjer, u mre`i s tri razdjeljivanja, mo`ete odlu~iti uskladiti samo prvo i
tre}e razdjeljivanje, dopu{taju}i srednjem razdjeljivanju da se neovisno pomi~e. Za
uskla|ivanje dva (ili vi{e) razdjeljivanja, postavite svojstvo ScrollGroup svakog objekta Split na istu vrijednost.
Uskla|ivanje prvog i tre}eg Split objekta.
With DataGrid1
.Splits(0).ScrollGroup = 1
.Splits(1).ScrollGroup = 2
.Splits(2).ScrollGroup = 1
End With
Vodi~ za programere
273
II. dio
274
Vodi~ za programere
7. poglavlje
Vodi~ za programere
275
II. dio
Dim rs As Recordset
Set rs = Adodc1.Recordset
While Not rs.EOF
If rs!SupplierID = 12 Then
DataGrid1.SelBookmarks.Add rs.Bookmark
End If
rs.MoveNext
Wend
276
Vodi~ za programere
7. poglavlje
Odre|ivanje varijable kori{tenjem klju~ne rije~i WithEvents dopu{ta vam programiranje doga|aja objekta skupa slogova.
Vodi~ za programere
277
II. dio
Programski kod najprije stvara objekt skupa slogova, zatim dodaje dva polja u taj
skup. Kod zatim dodaje deset zapisa u skup slogova.
10. U doga|aju klase GetDataMember, upi{ite sljede}i programski kod:
Private Sub Class_GetDataMembet(ByVal DataMember As String, _
Data As Object)
Set Data = rsNames
End Sub
Programski kod vra}a objekt skupa slogova svaki put kad se pojavi doga|aj kad god
je objekt klase povezan s potro{a~em podataka, kao {to je kontrola mre`e podataka.
11. U kodnom modulu objekta forme, odredite varijablu objekta za klasu:
Option Explicit
Private datNames As NamesData
278
Vodi~ za programere
Varijabla klase.
7. poglavlje
12. U doga|aju Load forme, dodajte programski kod koji }e postaviti svojstvo
DataSource kontrole mre`e podataka na objekt klase.
Private Sub Form_Load()
Stvaranje novog objekta NamesData.
Set datNames = New NamesData
Povezivanje mre`e podataka s novim izvorom podataka.
Set Datagrid1.DataSource = datNames
End Sub
Vodi~ za programere
279
II. dio
Kako bi odredili kojeg ~lana podataka `elite, postavite svojstvo DataMember potro{a~a
podataka na odgovaraju}i string, pa zatim odredite svojstvo DataSource na uobi~ajen
na~in. Za kontrolu mre`e podataka, to bi izgledalo ovako:
Private Sub Form_Load()
Stvaranje novog objekta NamesData.
Set datNames = New NamesData
Odre|ivanje `eljenog DataMember, pa odre|ivanje DataSource.
DataGrid1.DataMember = Names
Set DataGrid1.DataSource = datNames
End Sub
okvir s popisom
pogonskih ure|aja
280
Vodi~ za programere
7. poglavlje
Kontrole datote~nog sustava mo`ete koristi pojedina~no ili u kombinaciji. Sa kombinacijama, mo`ete napisati programski kod u potprogramima doga|aja svake kontrole
kako bi odredili njihovo me|usobno djelovanje. Mo`ete ih i pustiti da rade neovisno
jedna o drugoj. Slika 7.17 prikazuje zajedni~ko kori{tenje sve tri kontrole.
Slika 7.17
Kontrole datote~nog sustava automatski dobivaju sve informacije od operativnog sustava; mo`ete pristupiti tim informacijama ili odrediti {to }e biti prikazano u svakoj
kontroli kroz njezina svojstva. Na primjer, sadr`aj trenutnog radnog direktorija se
prikazuje standardno (to je direktorij iz kojeg je pokrenuta aplikacija, ili koji je postao
trenutan direktorij kao rezultat naredbe ChDir).
Va{a aplikacija mo`e tako|er prikazati popis datoteka ~ija imena odgovaraju
predlo{ku, kao {to je *.frm. Jednostavno stvorite okvir s popisom datoteka na formi i
odredite njegovo svojstvo Pattern na *.frm. Svojstvo Pattern mo`ete odrediti tijekom
rada aplikacije sljede}im programskim kodom:
File1.Pattern = *.FRM
Kontrole datote~nog sustava daju vam fleksibilnost koja nije dostupna s kontrolom
op}eg dijaloga. Ove kontrole mo`ete mije{ati i prilago|avati ih na puno razli~itih
na~ina, gdje vi nadzirete njihov izgled i na~in kako me|usobno djeluju.
Ako je va{ cilj samo omogu}iti korisniku da otvara i sprema datoteke, kontrola op}eg
dijaloga pru`a niz gotovih dijalo{kih okvira za te i sli~ne operacije. Oni su isti kao i
dijalo{ki okviri koje koristi puno drugih aplikacija temeljenih na Microsoft
Windowsima, tako da pru`aju standardizirani izgled i osje}aj. Oni tako|er prepoznaju
mre`ne pogone kad nisu na raspolaganju.
Za vi{e informacija Pogledajte Kori{tenje kontrole op}eg dijaloga ranije u ovom
poglavlju za vi{e informacija.
Vodi~ za programere
281
II. dio
Okvir s popisom pogonskih ure|aja prikazuje valjane dostupne pogone. Odabir pogona
s popisa ne mijenja automatski trenutni radni pogonski ure|aj; me|utim, mo`ete
upotrijebiti svojstvo Drive za promjenu pogona na razini operativnog sustava ako ga
odredite kao argument za naredbu ChDrive:
ChDrive Drive1.Drive
282
Vodi~ za programere
7. poglavlje
Slika 7.18
Kad se izvr{i ovo dodjeljivanje, okvir s popisom direktorija prikazuje sve raspolo`ive
direktorije i poddirektorije na tom pogonu. U pravilu, okvir s popisom direktorija tako|er prikazuje sve direktorije iznad, i sve poddirektorije odmah ispod, aktivnog direktorija na pogonu dodijeljenog svojstvu Dir1.Path. Okvir s popisom direktorija ne postavlja aktivni direktorij na razini operativnog sustava; on samo ozna~ava direktorij i
daju mu vrijednost svojstva ListIndex od -1.
Kako bi postavili aktivni radni direktorij, upotrijebite naredbu ChDir. Na primjer, sljede}i izraz mijenja aktivni direktorij na onaj prikazan u okviru s popisom direktorija:
ChDir Dir1.Path
U aplikaciji koja koristi kontrole datote~nog sustava, mo`ete postaviti aktivni direktorij
na direktorij u kojem se nalazi izvr{na (.exe) datoteka aplikacije objektom Application:
ChDrive App.Path
ChDir App.Path
Postavljanje pogona.
Postavljanje direktorija.
283
II. dio
ListIndex dobiva vrijednost -1, a okvir s popisom direktorija se ponovno iscrtava kako
bi prikazao neposredne poddirektorije.
Nakon toga mo`ete prikazati podskup tih datoteka odre|ivanjem svojstva Pattern na
primjer, *.frm prikazuje samo datoteke s tim sufiksom. Svojstvo Pattern mo`e tako|er
prihvatiti popis razdvojenu to~kom-zarezom (;). Na primjer, sljede}a linija programskog koda prikazuje sve datoteke s sufiksima .frm i .bas:
File1.Pattern = *.frm; *.bas
Visual Basic podr`ava zamjenski znak upitnika (?). Na primjer, ???.txt prikazuje
datoteke kojima se ime sastoji od tri karaktera i ima sufiks .txt.
284
Vodi~ za programere
7. poglavlje
Za prikaz datoteka koje se mogu samo ~itati u okviru s popisom datoteka, na primjer,
jednostavno postavite svojstvo ReadOnly na True, a ostale atribute na False.
File1.ReadOnly = True
File1.Archive = False
File1.Normal = False
File1.System = False
File1.Hidden = False
Kad je argument Normal postavljen na True, bit }e prikazane datoteke bez atributa
System ili Hidden. Kad je argument Normal postavljen na False, i dalje mo`ete prikazati datoteke s atributima ReadOnly i/ili Archive postavljanjem tih atributa na True.
Napomena Ne mo`ete upotrijebiti svojstva atributa za promjenu atributa
datoteke. Za odre|ivanje atributa datoteke, upotrijebite naredbu SetAttr.
U pravilu, mo`ete odabrati samo jednu datoteku u okviru s popisom datoteka. Za
odabir vi{e datoteka istovremeno, upotrijebite svojstvo MultiSelect.
Za vi{e informacija Za vi{e informacija o naredbi SetAttr, pogledajte odlomak
Naredba SetAttr, u stalnoj pomo}i. Pogledajte i odlomak Svojstvo MultiSelect u
biblioteci Microsoft Visual Basic 6.0 Language Reference.
285
II. dio
6. Dodjela svojstvu File1.Path uzrokuje promjenu u okviru File1 ~iji prikaz odra`ava
odrednice staze okvira Dir1.
Potprogrami doga|aja koje koristite i svojstva koja mijenjate ovise o tome na koji na~in va{a aplikacija koristi kombinaciju kontrola datote~nog sustava. Programski kod u
odlomku Primjer kontrola datote~nog sustava: aplikacija za traganje datoteka pokazuje uskla|ivanje ovdje opisanih kontrola.
okvir s popisom
pogonskih ure|aja
okvir s popisom
direktorija
286
kontrola
svojstvo
postavka
Name
drvList
Name
dirList
Name Pattern
filList *.*
Name Caption
cmdExit E&xit
Okvir s popisom
Name
lstFoundFiles
Vodi~ za programere
7. poglavlje
Vodi~ za programere
287
II. dio
Potprogram drvList_Change
Potprogram dirList_Change
Potprogram cmdSearch_Click
288
Vodi~ za programere
7. poglavlje
Ovaj potprogram doga|aja dodjeljuje svojstvo Path okvira dirList svojstvu Path okvira
filList. To uzrokuje doga|aj PathChange u okviru filList, koji se ponovno iscrtava; ne
trebate dodavati programski kod u potprogram filList_PathChange, jer se u ovoj
aplikaciji lanac doga|aja zavr{ava u okviru filList.
Kontrola okvira
Vodi~ za programere
289
II. dio
U ve}ini slu~ajeva, kontrolu okvira koristit }ete pasivno za grupiranje drugih kontrola i ne}e biti potrebe za tim da kontrola odgovara na njezine doga|aje. Me|utim, vrlo
vjerojatno }ete mijenjati njezina svojstva Name, Caption i Font.
Za vi{e informacija Pogledajte Grupiranje izbora gumbima izbora u 3. poglavlju
Forme, kontrole i izbornici, za jednostavnu demonstraciju kori{tenja kontrole okvira
za grupiranje gumb izbora.
Napomena Ako imate postoje}e kontrole koje `elite grupirati unutar okvira, mo`ete odabrati sve kontrole, izrezati ih u odlagali{te, odabrati kontrolu okvira i ulijepiti izrezane kontrole u kontrolu okvira.
290
Vodi~ za programere
7. poglavlje
kratica
ime kontrole
kontrola MSHFlexGrid
kontrola MSFlexGrid
Automatsko ~itanje podataka kad je hijerarhijska fleksibilna mre`a dodijeljena kontroli podataka.
291
II. dio
Dodatne mogu}nosti prikaza kad je hijerarhijska fleksibilna mre`a povezana s hijerarhijom skupova slogova. Te dodatne mogu}nosti dopu{taju razli~it prikaz za grupirane i povezane skupove slogova, uklju~uju}i trake. *
Napomena Za iskori{tavanje osobina ozna~enih asteriskom (*) morate koristiti
kontrolu hijerarhijske fleksibilne mre`e. Te osobine nisu dostupne u kontroli fleksibilne mre`e.
Zbog ograni~enja prethodne kontrole fleksibilne mre`e, neke osobine, kao {to su trake,
nisu dostupne pri kori{tenju te kontrole. Za pristup svim osobinama, preporu~ujemo
kori{tenje kontrole hijerarhijske fleksibilne mre`e kad stvarate novu kontrolu mre`e
podataka. Kontrola fleksibilne mre`e ne a`urira se automatski na kontrolu hijerarhijske
fleksibilne mre`e.
292
Vodi~ za programere
7. poglavlje
Jednom kad je va{a hijerarhijska fleksibilna mre`a povezana s izvorom podataka, prikaz tijekom izrade unutar hijerarhijske fleksibilne mre`e sastoji se od jednog praznog
stupca i jednog praznog reda. Informacije polja i trake se ne uspostavljaju automatski
(za dobivanje tih informacija pogledajte Uspostavljanje strukture, kasnije u ovom
poglavlju). Ako se hijerarhijska fleksibilna mre`a pokrene bez informacija o polju i
traci, podaci se prikazuju kori{tenjem podrazumijevanih postavki svojstava. To zna~i
da se, ako je hijerarhijska fleksibilna mre`a povezana s hijerarhijom Command, trake
podataka prikazuju vodoravno, a svaka traka sadr`i stupac za svako polje u skupu slogova.
Hijerarhijska fleksibilna mre`a povezana s izvorom podataka
kontrola MSHFlexGrid
stranica sa svojstvima
objekt DataEnvironment
izvor podataka
objekt povezivanja
element podataka
293
II. dio
Stvorite vezu i skup slogova tipa ADO ubacivanjem sljede}eg koda, te zamijenite
tuma~enja prikladnim izrazima (na primjer, zamijenite <mojIzvorPodataka>
stvarnim imenom va{eg izvora podataka):
Dim Cn As New Connection, Rs As New Recordset
Trebate zamijeniti <mojIzvorPodataka> valjanim
imenom izvora podataka na va{em sustavu.
Cn.ConnectionString = DSN=<mojIzvorPodataka>
Upotrijebite sljede}i kod za SHAPE naredbe.
Cn.Provider = MSDataShape
Cn.CursorLocation = adUseNone
294
Vodi~ za programere
7. poglavlje
Vodi~ za programere
295
II. dio
3. Na kartici Bands, odaberite traku u okviru Band. Taj popis raspolo`ivih traka je
temeljen na skupovima slogova u hijerarhiji Command. Kod svih traka, ime objekta
Command koji uzrokuje skup slogova ispisano je u zagradama.
4. Prilagodite svojstva svake trake prema potrebama. Pogledajte Oblikovanje trake
za vi{e informacija.
5. Kliknite OK za prihva}anje svojstava trake u va{oj hijerarhijskoj fleksibilnoj mre`i
i zatvaranje dijalo{kog okvira Property Pages.
Oblikovanje trake
U va{oj hijerarhijskoj fleksibilnoj mre`i mo`ete upotrijebiti oblikovanje trake kako bi
odredili mogu}nosti prikaza u odre|enom skupu slogova. Traka se stvara za svaki skup
slogova u hijerarhijskom skupu slogova tipa ADO. Na primjer, kad povezujete hijerarhijsku fleksibilnu mre`u s hijerarhijskim skupom slogova tipa ADO koji sadr`i kupce i
narud`be, hijerarhijska fleksibilna mre`a u po~etku sadr`i dvije trake.
Izgled hijerarhijske fleksibilne mre`e mo`ete prilagoditi oblikovanjem trake. To vam
omogu}uje ozna~avanje va`nih informacija unutar vi{e traka. Elementi trake koje mo`ete oblikovati uklju~uju zaglavlja stupaca, linije mre`e, boje i uvla~enja.
Kod povezivanja s nehijerarhijskim skupom slogova, postoji samo jedna traka, i ta
traka se ozna~ava kao traka 0 (band 0). Druge trake nisu dostupne, jer su trake temeljene na hijerarhiji skupova slogova ili objekata Command.
296
Vodi~ za programere
7. poglavlje
Okomit prikaz za posljedicu mo`e imati {irenje visine trake kako bi traka prihvatila
sva polja. Sve ostale trake koje se prikazuju u hijerarhijskoj fleksibilnoj mre`i tako|er
se pro{iruju, osiguravaju}i jednaku visinu svih traka.
Okomit prikaz trake
Vodi~ za programere
297
II. dio
298
Vodi~ za programere
7. poglavlje
Uvla~enje trake
Kod okomitog prikaza traka, mo`ete uvu}i traku odre|en broj stupaca. To vam omogu}uje jasno predstavljanje traka s informacijama korisniku. Uvu~eni stupac prije svake
trake sadr`ava prazne }elije koje ne rade ni{ta. Zbog toga, korisnik ne mo`e postaviti
fokus na ta podru~ja. Osobine oblika tih }elija odre|ene su svojstvima oblikovanja
uvla~enja, kao {to je svojstvo GridLinesIndent.
Pogledajte sliku okomitog prikaza traka u Promjeni izgleda trake, ranije.
Kako uvu}i traku
1. Kliknite desnom tipkom mi{a na hijerarhijsku fleksibilnu mre`u, i odaberite
Properties u pomo}nom izborniku. Pojavit }e se dijalo{ki okvir Property Pages
hijerarhijske fleksibilne mre`e.
2. Na kartici Bands odaberite BandIndent i odredite za koliko }e stupaca traka biti
uvu~ena.
3. Kliknite OK za prihva}anje svojstava trake za va{u hijerarhijsku fleksibilnu mre`u i
zatvaranje dijalo{kog okvira Property Pages.
Vodi~ za programere
299
II. dio
300
Vodi~ za programere
7. poglavlje
Kad je traka skupljena tako da se ne prikazuje nijedan od njenih zapisa, stupci te trake
ne}e biti prikazani. Kako korisnik pro{iruje traku, prikazuju se stupci. Kad su trake ra{irene, odr`avaju jednoliku visinu. Ako je potrebno, manje trake }e se pove}ati kako bi
posljedr`ale istu visinu kao i ve}e trake.
Pro{irena traka
Vodi~ za programere
301
II. dio
Pritisnite F5.
2. Kliknite sli~icu {irenja (+) u gornjem lijevom kutu trake kako bi vidjeli maksimalne
(pro{irene) informacije skupa slogova.
3. Kliknite sli~icu skupljanja () u gornjem lijevom kutu trake kako bi vidjeli minimalne (skupljene) informacije skupa slogova.
Napomena Ako pro{irite traku koja sadr`i skupljenu podtraku, podtraka }e
ostati skupljena sve dok je ne pro{irite.
Uspostavljanje strukture
Informacije o strukturi va{e hijerarhijske fleksibilne mre`e uklju~uju detaljne informacije o pode{avanju va{e trake i stupca. U pravilu, poredak stupaca unutar svake trake
odgovara poretku u pripadaju}em skupu slogova tipa ADO. Kad je struktura uspostavljena, mo`ete je upotrijebiti za kontroliranje prikaza podataka u va{oj hijerarhijskoj
fleksibilnoj mre`i.
Kako uspostaviti informacije trake i polja
302
Vodi~ za programere
7. poglavlje
Standardno
Standardno podru~je va{e hijerarhijske fleksibilne mre`e su }elije koje sadr`e informacije povezane s podacima.
Traka
Podru~je trake sadr`i informacije prikaza za svaki skup slogova unutar va{e hijerarhijske fleksibilne mre`e. Pogledajte Oblikovanje trake ranije u ovom poglavlju
za vi{e informacija.
Nepomi~no
Nepomi~no podru~je sastoji se od redova i stupaca koji su nepomi~ni, ili stati~ni.
Zaglavlje
Podru~je zaglavlja stupaca ozna~uje informacije o skupu slogova koji je povezan s
va{om hijerarhijskom fleksibilnom mre`om. Kad se koriste, zaglavlja stupaca ponavljaju se za svaku traku u va{oj hijerarhijskoj fleksibilnoj mre`i. Pogledajte
Oblikovanje trake ranije u ovom poglavlju za vi{e informacija.
Uvla~enje
Kad se trake prikazuju okomito, podru~je uvla~enja va{e hijerarhijske fleksibilne
mre`e je podru~je koje uvla~i traku podataka za odre|en broj stupaca. Uvu~en stupac prije svake trake sadr`i prazne }elije koje ne rade ni{ta. Pogledajte Oblikovanje trake ranije u ovom poglavlju za vi{e informacija.
Nepopunjeno
Nepopunjeno podru~je va{e hijerarhijske fleksibilne mre`e sadr`i }elije desno i
ispod radnih podru~ja va{e hijerarhijske fleksibilne mre`e. To podru~je je prazno i
sadr`i }elije koje ne rade ni{ta.
Vodi~ za programere
303
II. dio
opis
Rows
Columns
AllowBigSelection
MousePointer
ni~ku
ikonu svojstvu MouseIcon na kartici Picture.
FillStyle
SelectionMode
AllowUserResizing
ScrollBars
HighLight
FocusRect
304
svojstvo
opis
MergeCells
RowHeightMin
PictureType
WordWrap
Vodi~ za programere
7. poglavlje
opis
Font
Size
Effects
Efekti pisma; podvu~eno ili prekri`eno, ili stil teksta; podebljan ili nako{en.
Mo`ete potvrditi do ~etiri kontrolne ku}ice Effects.
Sample Text
opis
Font
Size
Effects
Efekti pisma; podvu~eno ili prekri`eno, ili stil teksta; podebljan ili nako{en.
Mo`ete potvrditi do ~etiri kontrolne ku}ice Effects.
Sample Text
Vodi~ za programere
305
II. dio
5. Na kartici Color, dodijelite boju svakom nepomi~nom svojstvu. Kako bi to napravili, najprije odaberite Color Set. Zatim, kliknite svojstvo koje `elite promijeniti (na
primjer, BackColorFixed), kliknite boju u Color Palette, te zatim kliknite Apply.
Ponovite to za svako nepomi~no podru~je koje `elite promijeniti.
Napomena Kad koristite standardne Windows boje (Windows default),
hijerarhijska fleksibilna mre`a pojavljuje se u bojama odre|enim u va{em kontrolnom panelu prikaza. Kao dodatak promjeni boja hijerarhijske fleksibilne
mre`e u standardne ili unaprijed odre|ene boje, mo`ete stvoriti va{e vlastite
definicije boja klikom na Edit Custom Color te kori{tenjem rezultiraju}eg dijalo{kog okvira Color. Za informacije o svakom svojstvu, pogledajte temu svojstava hijerarhijske fleksibilne mre`e.
6. Kliknite OK za prihva}anje nepomi~nih svojstava va{e hijerarhijske fleksibilne
mre`e i zatvaranje dijalo{kog okvira Property Pages.
306
Vodi~ za programere
7. poglavlje
Vodi~ za programere
307
II. dio
308
svojstvo
postavka
Name
Fg1
Cols
Rows
20
MergeCells
2 Restrict Rows
FormatString
<Region|<Product|<Employees|>Sales
FontName
Arial
Vodi~ za programere
7. poglavlje
Vodi~ za programere
309
II. dio
Sub DoSort()
Fg1.Col = 0
Fg1.ColSel = Fg1.Cols 1
Fg1.Sort = 1
Op}e rastu}e sortiranje.
End Sub
3. Unesite podatke u va{u hijerarhijsku fleksibilnu mre`u. Kako bi to napravili, odredite rutinu koja }e popuniti hijerarhijsku fleksibilnu mre`u primjerima podataka:
Function RandomString (kind As Integer)
Dim s As String
Select Case kind
Case 0
Podru~je.
Select Case (Rnd * 1000) Mod 5
Case 0: s = 1. Northwest
Case 1: s = 2. Southwest
Case 2: s = 3. Midwest
Case 3: s = 4. East
Case Else: s = 5. Overseas
End Select
Case 1
Proizvod.
Select Case (Rnd * 1000) Mod 5
Case 0: s = 1. Chai
Case 1: s = 2. Peppermint
Case 2: s = 3. Chamomile
Case Else: s = 4. Oolong
End Select
Case 2
Djelatnik.
Select Case (Rnd * 1000) Mod 4
Case 0: s = Clare
Case 1: s = Tiffany
Case 2: s = Sally
Case Else: s = Lori
End Select
End Select
RandomString = s
End Function
310
Vodi~ za programere
7. poglavlje
Zatim, trebate omogu}iti korisniku da reorganizira podatke. To zna~i da morate dopustiti hijerarhijskoj fleksibilnoj mre`i prebacivanje pregleda organizacije podataka.
4. Reorganizirajte podatke dodavanjem sljede}e rutine, koja }e odvu}i stupce na nove
polo`aje. Ova rutina koristi svojstvo Tag s spremanje broja stupca kad korisnik pritisne tipku mi{a, pokre}u}i doga|aj MouseDown.
Sub Fg1_MouseDown (Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Fg1.Tag =
If Fg1.MouseRow <> 0 Then Exit Sub
Fg1.Tag = Str(Fg1.MouseCol)
MousePointer = vbSizeWE
End Sub
Vodi~ za programere
311
II. dio
Jednom kad su procedure ovog primjera zavr{ene, podaci se automatski ponovno organiziraju uvijek kad povu~ete stupac na novi polo`aj tijekom izvo|enja aplikacije. Na
primjer, ako povu~ete stupac Employee prema lijevo, izgledat }e ovako:
312
Vodi~ za programere
7. poglavlje
Stvaranje kontrola
Dodajte va{em projektu hijerarhijsku fleksibilnu mre`u, zatim dodajte kontrolu okvira
s tekstom kako bi stvorili odnos roditelj-dijete, kako je prikazano:
postavka
Name
Fg2
Cols
Rows
20
FillStyle
1 Repeat
FocusRect
2 Heavy
FontName
Arial
FontSize
Vodi~ za programere
313
II. dio
Kontrola TextBox
svojstvo
postavka
Name
TxtEdit
FontName
Arial
FontSize
BorderSize
0 None
Visible
False
314
Vodi~ za programere
7. poglavlje
Simuliranje razmaka.
Vodi~ za programere
315
II. dio
5. Dodajte mogu}nost a`uriranja podataka okviru s tekstom dodavanjem sljede}e rutine u njegove doga|aje KeyPress i DblClick:
Sub txtEdit_KeyPress (KeyAscii As Integer)
Brisanje tipke Return za prekid pi{tanja.
If KeyAscii = Asc(vbCr) Then KeyAscii = 0
End Sub
Sub txtEdit_KeyDown (KeyCode As Integer, Shift As Integer)
EditKeyCode Fg2, txtEdit, KeyCode, Shift
End Sub
Sub EditKeyCode (MSHFlexGrid As Control, Edt As _
Control, KeyCode As Integer, Shift As Integer)
Standardna obrada kontrole editiranja.
Select Case KeyCode
Case 27
ESC; sakrij, vrati fokus na MSHFlexGrid.
Edt.Visible = False
MSHFlexGrid.SetFocus
Case 13
ENTER vra}a fokus na MSHFlexGrid.
MSHFlexGrid.SetFocus
Case 38
Gore.
MSHFlexGrid.SetFocus
DoEvents
If MSHFlexGrid.Row > MSHFlexGrid.FixedRows Then
MSHFlexGrid.Row = MSHFlexGrid.Row 1
End If
Case 40
Dolje.
MSHFlexGrid.SetFocus
DoEvents
If MSHFlexGrid.Row < MSHFlexGrid.Rows 1 Then
MSHFlexGrid.Row = MSHFlexGrid.Row + 1
End If
End Select
End Sub
Zatim, trebate re}i hijerarhijskoj fleksibilnoj mre`i {to napraviti s podacima kad su
uneseni u okvir s tekstom. Fokus se vra}a kontroli nakon {to korisnik unese podatke i
pritisne ENTER ili klikne drugu }eliju u hijerarhijskoj fleksibilnoj mre`i. Zbog toga
morate kopirati podatke iz okvira s tekstom u aktivnu }eliju; da bi to napravili, nastavite s sljede}im koracima.
316
Vodi~ za programere
7. poglavlje
Kad su procedure ovog primjera zavr{ene, podaci mogu biti uneseni i pojedine }elije
tijekom izvo|enja aplikacije, kako je ovdje prikazano.
Vodi~ za programere
317
II. dio
Kontrola MSHFlexGrid
svojstvo
postavka
Name
Fg3
Cols
Rows
SelectionMode
1 By Row
FillStyle
1 Repeat
FocusRect
0 None
GridLines
0 None
GridLinesFixed
2 Inset
FormatString
^|Description|>Date|>Amount
FontName
Arial
318
Vodi~ za programere
7. poglavlje
Fg3.AddItem * + t + Airfare
s = + t + SFO-JFK + t + 9-Apr-95 + t + 750.00
For i = 0 To 5
Fg3.AddItem s
Next
Fg3.AddItem * + t + Meals
s = + t + Flints BBQ + t + 25-Apr-95 + t + 35.00
For i = 0 to 5
Fg3.AddItem s
Next
Fg3.AddItem * + t + Hotel
s = + t + Center Plaza + t + 25-Apr-95 + t + 817.00
For i = 0 to 5
Fg3.AddItem s
Next
Dodavanje zbrojeva i oblikovanje unosa zaglavlja.
For i = Fg3.Rows 1 To 0 Step -1
If Fg3.TextArray(i * Fg3.Cols) = Then
tot = tot + Val(fg3.TextArray(i * Fg3.Cols + 3))
Else
Fg3.Row = i
Fg3.Col = 0
Fg3.ColSet = Fg3.Cols 1
Fg3.CellBackColor = &HC0C0C0
Fg3.CellFontBold = True
Fg3.CellFontWidth = 8
Fg3.TextArray(i * Fg3.Cols + 3) = Format(tot 0)
tot = 0
End If
Next
Fg3.ColSel = Fg3.Cols 1
Oblikovanje mre`e.
Fg3.ColWidth(0) = 300
Fg3.ColWidth(1) = 1500
Fg3.ColWidth(2) = 1000
Fg3.ColWidth(3) = 1000
End Sub
Vodi~ za programere
319
II. dio
Tijekom izvo|enja aplikacije, redovi su sortirani u tri odjela, grupirana prema njihovim pojedinim zaglavljima: Air Fare, Meals i Hotels, kako je ovdje prikazano:
320
Vodi~ za programere
7. poglavlje
Kad zavr{ite sve korake ovog primjera, tijekom izvo|enja aplikacije mo`ete {iriti ili
su`avati zaglavlja redova dvostrukim klikom na simbole + ili * u prvom stupcu,
kao {to je ovdje prikazano:
Vodi~ za programere
321
II. dio
Kontrole vodoravne i okomite klizne trake nisu iste kao i ugra|ene klizne trake koje se
mogu prona}i u Windowsima ili trake koje su dodijeljene okvirima s tekstom, okvirima s popisom, kombiniranim okvirima ili MDI formama unutar Visual Basica. Te
klizne trake pojavljuju se automatski uvijek kad dana aplikacija ili kontrola sadr`i vi{e
informacija nego {to mo`e biti prikazano u trenutnoj veli~ini prozora (ili, u slu~aju
okvira s tekstom i MDI formi, kad je svojstvo ScrollBars tako|er postavljeno na True).
U prethodnim verzijama Visual Basica, klizne trake ~esto su kori{tene kao sredstva za
unos. Smjernice Windows su~elja sad savjetuju, me|utim, da se kao sredstva za unos
koriste kontrole kliza~a umjesto kontrola kliznih traka. Kontrola kliza~a uklju~ena je u
Professional i Enterprise verzije Visual Basica.
Kontrole kliznih traka i dalje imaju vrijednost u Visual Basicu jer omogu}uju pomicanje kroz aplikacije ili kontrole koje to ne osiguravaju automatski. Pogledajte Primjer
kontrola kliznih traka: stvaranje pomi~nog grafi~kog prozora, kasnije u ovom poglavlju, za informacije o kori{tenju kliznih traka na takav na~in.
opis
Change
Scroll
Kori{tenje doga|aja Scroll pru`a pristup vrijednosti klizne trake tijekom pomicanja.
Doga|aj Change pojavljuje se nakon otpu{tanja gumba za pomicanje te kad je kliknuta
klizna traka ili strelice za pomicanje.
Svojstvo Value
Svojstvo Value (koje ima predodre|enu vrijednost 0) je cjelobrojna vrijednost koja
odgovara polo`aju gumba za pomicanje na kliznoj traci. Kad je polo`aj tog gumba na
najmanjoj vrijednosti, on se nalazi na krajnjem lijevom polo`aju (na vodoravnoj
kliznoj traci) ili najgornjem polo`aju (na okomitoj kliznoj traci). Kad gumb za pomicanje ima najve}u vrijednost, nalazi se na krajnjem desnom ili donjem polo`aju. Sli~no
tome, vrijednost na pola puta izme|u dna i vrha opsega postavlja gumb za pomicanje
na sredinu klizne trake.
Kao dodatak kori{tenju klikanja mi{em za promjenu vrijednosti klizne trake, korisnik
tako|er mo`e povu}i gumb za pomicanje na bilo koji polo`aj na traci. Rezultiraju}a
vrijednost ovisi o polo`aju gumba, ali uvijek je unutar opsega svojstava Min i Max
koje je odredio korisnik.
Napomena Vrijednost svojstva Min mo`e biti ve}a od vrijednosti svojstva Max
ako `elite da va{a klizna traka prikazuje informacije koje se mijenjaju od ve}e k
manjoj vrijednosti.
322
Vodi~ za programere
7. poglavlje
Po~nite stvaranjem novog projekta u kojem }ete na formi stvoriti dva okvira za sliku,
te po jednu vodoravnu i okomitu kliznu traku, kao {to je prikazano na slici 7.24.
Doga|aj forme Form_Load koristi se za odre|ivanje moda skale, veli~ine dje~jeg okvira za sliku unutar roditeljskog okvira za sliku, polo`aja i veli~ine vodoravne i okomite
klizne trake, te za u~itavanje bitmapirane slike. Dodajte sljede}i kod u potprogram
doga|aja forme Form_Load:
Private Sub Form_Load()
Postavljanje svojstva ScaleMode na piksele.
Form1.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
Vodi~ za programere
323
II. dio
324
Vodi~ za programere
7. poglavlje
Vodi~ za programere
325
II. dio
Kontrola slike
Kao dodatak, kontrole slike odgovaraju na doga|aj Click i mogu se koristiti kao zamjena za naredbene gumbe, kao dijelovi alatne trake, ili za stvaranje jednostavnih animacija.
Za vi{e informacija Pogledajte Grafi~ke kontrole lake kategorije u 3. poglavlju
Forme, kontrole i izbornici, za jednostavnu demonstraciju kori{tenja kontrole slike
kao naredbenog gumba. Pogledajte Stvaranje alatne trake u 6. poglavlju Stvaranje
korisni~kog su~elja za informacije o kori{tenju kontrole slike pri stvaranju alatne trake. Pogledajte Stvaranje jednostavne animacije u 12. poglavlju Rad s tekstom i grafikom za vi{e informacija o kori{tenju kontrole slike za stvaranje jednostavnih animacija.
326
Vodi~ za programere
7. poglavlje
opis
Bitmapirana slika
Bitmapirana slika odre|uje sliku kao uzorak to~aka (piksela). Ima sufiks
imena datoteke .bmp ili .dib. Bitmapirane slike se tako|er zovu i grafika
obojenog tipa. Mo`ete koristiti bitmapirane slike raznih dubina boja,
uklju~uju}i 2, 4, 8, 16, 24 i 32-bitne, ali bitmapirana slika se ispravno
prikazuje samo ako sredstvo prikazivanja podr`ava dubinu boje koju koristi
slika. Na primjer, slika s 8 bitova po pikselu (256 boja) prikazuje samo 16
boja kad se pokazuje na ekranu koji podr`ava samo 4 bita po pikselu
(16 boja).
Ikona
Kursor
Kursori su, kao i ikone, zapravo bitmapirane slike. Me|utim, kursori sadr`e i
vru}u to~ku, piksel koji prati polo`aj kursora svojim x i y koordinatama.
Kursori imaju sufiks imena datoteke .cur.
Metadatoteka
JPEG
GIF
327
II. dio
Kad se slika u~ita u kontrolu slike, kontrola automatski mijenja svoju veli~inu tako da
odgovara slici neovisno o tome koliko je mala ili velika kontrola stvorena na formi.
Mo`ete po`eljeti upotrijebiti datoteke ikona (.ico) ili kursora (.cur) koje sadr`e odvojene slike raznih veli~ina i dubina boja za podr{ku nizu sredstava prikaza. Postavke
funkcije LoadPicture omogu}uju vam odabir slika odre|ene dubine boja i veli~ine iz
.ico ili .cur datoteke. U slu~ajevima kad to~an par tra`enim postavkama nije dostupan,
funkcija LoadPicture u~itava sliku koja najvi{e odgovara tra`enoj.
Za brisanje grafike iz kontrole slike, upotrijebite funkciju LoadPicture bez odre|ivanja
imena datoteke. Na primjer:
Set Image1.Picture = LoadPicture
To }e o~istiti kontrolu slike ~ak i ako je grafika u~itana u svojstvo Picture tijekom
izrade aplikacije.
Kori{tenje odlagali{ta
Grafiku tako|er mo`ete dodati u kontrolu slike tijekom izrade aplikacije tako da je ulijepite iz druge aplikacije. Na primjer, mo`da `elite dodati bitmapiranu sliku koja je
stvorena u aplikaciji Windows Paint. Jednostavno kopirajte sliku u odlagali{te, odaberite kontrolu slike, te upotrijebite pre~icu tipkama CTRL + V ili naredbu Paste iz
izbornika Edit.
Svojstvo Stretch
Svojstvo Stretch odre|uje ho}e li slika biti razvu~ena kad kontrola slike promijeni
veli~inu tijekom izrade aplikacije. Ako je postavljeno na True, slika u~itana u kontrolu
slike svojstvom Picture bit }e razvu~ena. Razvla~enje slike (posebno formata bitmapirane slike) mo`e kao posljedicu imati gubitak kvalitete slike, kao {to je prikazano na
slici 7.27. Metadatoteke, koje su grafika crtanog tipa, bolje su prilago|ene
razvla~enju.
Slika 7.27
328
Vodi~ za programere
7. poglavlje
Kontrola natpisa
Poravnavanje teksta
Svojstvo Alignment omogu}uje vam odre|ivanje poravnavanja teksta unutar kontrole
natpisa na lijevo poravnavanje (Left Justify, 0, standardno), centriranje (Center, 1) ili
desno poravnavanje (Right Justify, 2).
329
II. dio
Kontrola linije
Mo`ete kontrolirati polo`aj, duljinu, boju i stil kontrola linije kako bi prilagodili izgled
aplikacije. Slika 7.30 prikazuje kontrolu linije upotrijebljenu za grafi~ko odvajanje natpisa s tekstom Company Name od ostatka forme.
Slika 7.30
kontrola linije
330
Vodi~ za programere
7. poglavlje
Proziran (transparent)
Pun (solid)
S crtama (dash)
S to~kama (dot)
Crta-to~ka (dash-dot)
Crta-to~ka-to~ka (dash-dot-dot)
Popunjen iznutra (inside solid)
Stil linije mo`ete odrediti tijekom izrade aplikacije odabirom svojstva BorderStyle u
prozoru s svojstvima kontrole linije ili, tijekom rada aplikacije, odre|ivanjem stila
koriste}i odgovaraju}u konstantu Visual Basica u programskom kodu.
Svojstvo BorderColor koristi se za odre|ivanje boje linije.
Tijekom izrade aplikacije, boju linije mo`ete odrediti odabirom svojstva BorderColor u
prozoru s svojstvima kontrole linije te zatim odabirom iz raspolo`ive palete ili iz sistemskih boja.
Kako bi odredili boje tijekom rada aplikacije, upotrijebite konstante boja Visual Basica
(vbGreen, na primjer) ili konstante sistemskih boja (vbWindowBackground, na primjer) ili funkciju RGB za odre|ivanje boje ruba.
Napomena Kad je svojstvo BorderStyle postavljeno na 0 (Transparent), svojstvo
BorderColor se zanemaruje.
Za vi{e informacija Pogledajte Funkcija RGB za informacije o odre|ivanju
RGB boja. Tako|er, pogledajte 12. poglavlje Rad s tekstom i grafikom za detaljne
informacije o stvaranju grafike u Visual Basicu.
Vodi~ za programere
331
II. dio
332
Vodi~ za programere
7. poglavlje
Ili, postavite vrijednost svojstva Value naredbenog gumba na True, {to }e automatski
pozvati potprogram doga|aja:
Private Sub List1_DblClick()
Command1.Value = True
End Sub
Taj na~in pru`a pre~icu korisnicima mi{a, a ipak ne spre~ava korisnike tipkovnice u
izvo|enju iste akcije. Uo~ite da ne postoji akcija tipkovnicom jednaka doga|aju
DblClick.
opis
okvir
stavka
Izraz tipa stringa koji se dodaje popisu. Ako je stavka tekstualni izraz,
zatvorite ga u navodnike.
Vodi~ za programere
333
II. dio
argument
opis
indeks
Odre|uje gdje }e u popis biti uba~ena nova stavka. Indeks jednak 0 predstavlja
prvu poziciju. Ako je indeks izostavljen, stavka }e biti dodana na kraj
(ili prema redoslijedu sortiranja).
Uvijek kad se forma u~ita tijekom rada aplikacije, popis }e izgledati kao na slici 7.33
Slika 7.33
Vodi~ za programere
7. poglavlje
Mo`ete dodati stavke samo na kraj popisa. Dakle, ako `elite abecedno sortirati popis,
postavite svojstvo Sorted na True. Pogledajte Sortiranje popisa u nastavku za vi{e
informacija.
Sortiranje popisa
Dodavanje stavki u popis abecednim redoslijedom mo`ete odrediti postavljanjem svojstva Sorted na True te izostavljanjem indeksa. Sortiranje nije osjetljivo na vrstu slova;
zbog toga }e rije~i japan i Japan biti jednako tretirane.
Kad je svojstvo Sorted postavljeno na True, kori{tenje postupka AddItem s argumentom indeks mo`e dovesti do nepredvidljivih, nesortiranih rezultata.
Za brisanje svih stavki standardnih i podatkovnih verzija okvira s popisom i kombiniranih okvira, upotrijebite postupak Clear:
List1.Clear
Svojstvo Text sadr`i trenutno odabranu stavku u okviru s popisom List1. Programski
kod provjerava je li odabrana stavka Canada te, ako je, prikazuje informaciju u
okviru s tekstom Text1.
Vodi~ za programere
335
II. dio
336
vrijednost
opis
>1
Vodi~ za programere
7. poglavlje
Visual Basic vodi brigu o prijelomu stavki popisa u idu}u liniju te o dodavanju vodoravne klizne trake popisu ako je potrebno; ako popis popunjava jedan stupac, ne dodaje se klizna traka. Prijelom u idu}i stupac tako|er se automatski pojavljuje prema
potrebi. Zapamtite da }e dio teksta stavke biti odrezan ako je tekst stavke {iri od {irine
stupca.
Mo`ete omogu}iti korisnicima da iz popisa odaberu vi{e stavki. Vi{estruki odabir u
standardnim okvirima s popisom obra|uje se odre|ivanjem svojstva MultiSelect, koje
mo`e imati sljede}e vrijednosti.
vrijednost
tip odabira
opis
nikakav
Vodi~ za programere
337
II. dio
Broj kupaca u okviru s popisom prikazuje se u kontroli natpisa koja izgleda kao okvir
s tekstom (svojstvo BorderStyle je postavljeno na 1 Fixed Single). Ovaj natpis a`urira se svaki put kad se ime kupca doda ili obri{e. Budu}i da je svojstvo Sorted okvira s
popisom postavljeno na True, stavke se dodaju u okvir s popisom po abecednom redu.
Stvorite formu s okvirom s tekstom, okvirom s popisom, tri kontrole natpisa, i ~etiri
naredbena gumba. Sljede}a tablica ispisuje postavke svojstava za objekte u aplikaciji.
objekt
svojstvo
postavka
Name Text
txtName (prazno)
gornji natpis
Name Caption
okvir s popisom
Name Sorted
lstCLient True
donji natpis
Name Caption
lblClients # Clients
Name Caption
cmdAdd &Add
Name Caption
cmdRemove &Remove
Name Caption
cmdClear C&lear
Name Caption
cmdClose &Close
338
Vodi~ za programere
7. poglavlje
Vodi~ za programere
339
II. dio
Ako stvorite okvir s popisom dovoljno velik da prikazuje sve stavke u jednom stupcu,
drugi stupac bit }e prazan; ostale stavke }e biti prelomljene, a vodoravna klizna traka
}e se automatski pojaviti samo ako okvir s popisom nije dovoljno dug. Poku{ajte
promijeniti veli~inu gornjem okviru s popisom i dodati mu dodatne stavke u popis da
vidite kako Visual Basic automatski rukuje vi{estrukim stupcima.
Ovaj primjer koristi svojstvo Selected matricu vrijednosti tipa Boolean koja sadr`i
stanja odabira okvira s popisom za odre|ivanje koje su stavke odabrane. Svaki zapis
u matrici odgovara stavci popisa i postavljen je na True ako je stavka odabrana, ili na
False ako nije odabrana. Nakon {to korisnik odabere stavke iz popisa, provjerava se
svaki zapis matrice kako bi se vidjelo je li odabran (True). Ako jest, zapis se dodaje
drugom popisu, normalnom okviru s popisom s jednim stupcem, kori{tenjem postupka
AddItem.
Postavite svojstva objekata u ovom primjeru kao {to je nazna~eno u sljede}oj tablici.
340
objekt
svojstvo
postavka
forma
Caption
Name
Columns
MultiSelect
lstTop
2
2 Extended
Vodi~ za programere
7. poglavlje
objekt
svojstvo
postavka
Name
lstBottom
Name
Caption
cmdTransfer
&Transfer
Name
Caption
cmdClear
C&lear
Name
Caption
cmdClose
&Close
Svojstvo MultiSelect omogu}uje vam odabir niza vrijednosti u okviru s popisom. Ako
kliknete na prvu stavku popisa, te zatim pritisnete SHIFT i kliknete posljednju stavku
u nizu (ili upotrijebite tipke SHIFT + STRELICA DOLJE), bit }e odabrane sve stavke
u nizu.
Vodi~ za programere
341
II. dio
Stvoriti u svojoj aplikaciji oznaku mjesta za objekt. Mo`ete stvoriti objekt koji se
pojavljuje u kontroli OLE spremnika tijekom rada aplikacije, ili mo`ete promijeniti objekt kojeg ste postavili u kontrolu OLE spremnika tijekom izrade aplikacije.
342
Vodi~ za programere
7. poglavlje
Iako kontrola gumba izbora i kontrola kontrolne ku}ice izgledaju kao da djeluju sli~no,
postoji va`na razlika; kad korisnik odabere gumb izbora, ostale kontrole gumba izbora
u istoj grupi bit }e automatski odzna~ene. Suprotno tome, istovremeno mo`e biti odabran bilo koji broj kontrola kontrolne ku}ice.
Za vi{e informacija Pogledajte Grupiranje izbora gumbima izbora u 3. poglavlju
Forme, kontrole i izbornici za prikaz upotrebe gumb izbora.
Vodi~ za programere
343
II. dio
Slika 7.39
Svi gumbi izbora koji su dodani direktno na formu postaju jedna grupa. Kako bi dodali
dodatne grupe, morate ih postaviti unutar kontrola okvira ili okvira za sliku.
Kako bi grupirali kontrole gumb izbora u okviru ili okviru za sliku, najprije stvorite
okvir ili okvir za sliku, pa onda stvorite kontrole gumba izbora unutar njih. Tijekom
izrade aplikacije, gumbi izbora sadr`ani unutar okvira ili okvira za sliku mogu biti
odabrani i pomaknuti kao samostalna jedinica.
Kako bi odabrali vi{e kontrola sadr`anih unutar kontrole okvira, kontrole okvira za
sliku ili forme, dr`ite pritisnutu tipku CTRL dok mi{em crtate okvir oko kontrola.
Za vi{e informacija Pogledajte Kori{tenje kontrole okvira ranije u ovom
poglavlju za vi{e informacija o stvaranju kontrola unutar okvira.
Doga|aj Click
Kad je odabran gumb izbora, pokre}e se doga|aj Click. Ovisno o namjeni u va{oj
aplikaciji, mo`ete odgovoriti ili ne odgovoriti na taj doga|aj. Odgovor na taj doga|aj
koristan je kad `elite a`urirati tekst kontrole natpisa za pru`anje informacija korisniku
o izboru koji je odabran, na primjer.
Svojstvo Value
Svojstvo Value kontrole gumba izbora pokazuje je li gumb izbora odabran. Kad je
odabran, vrijednost ovog svojstva mijenja se na True. Gumb izbora mo`ete odabrati iz
programskog koda postavljanjem njegovog svojstva Value. Na primjer:
optPentium.Value = True
344
Vodi~ za programere
7. poglavlje
Kako bi gumb izbora bio predodre|en unutar grupe gumb izbora, odredite njegovo
svojstvo Value tijekom izrade aplikacije kori{tenjem prozora s svojstvima, ili tijekom
rada aplikacije iz programskog koda, kako je malo prije pokazano.
Kad korisniku poka`ete dijalo{ki okvir koji sadr`i gumbe izbora, tra`ite od njega da
odabere izbore koji }e odrediti daljnji rad aplikacije. Mo`ete upotrijebiti svojstvo
Value svake kontrole gumba izbora kako bi odredili koji je izbor ili izbori odabran te
odgovoriti sukladno tome.
Kontrola okvira za sliku sli~na je kontroli slike po tome {to obje mogu biti upotrijebljene za prikaz grafike u va{oj aplikaciji obje podr`avaju iste grafi~ke formate. Me|utim, kontrola okvira za sliku sadr`ava funkcionalnost koju nema kontrola slike, na
primjer: sposobnost da djeluje kao spremnik za druge kontrole i podr{ka grafi~kim
postupcima.
Za vi{e informacija Pogledajte Rad s kontrolom okvira za sliku u 3. poglavlju
Forme, kontrole i izbornici za prikaz upotrebe okvira za sliku.
Vodi~ za programere
345
II. dio
Mo`ete po`eljeti upotrijebiti datoteke ikona (.ico) ili kursora (.cur) koje sadr`e odvojene slike raznih veli~ina i dubina boja za podr{ku nizu sredstava prikaza. Postavke
funkcije LoadPicture omogu}uju vam odabir slika odre|ene dubine boja i veli~ine iz
.ico ili .cur datoteke. U slu~ajevima kad to~an par tra`enim postavkama nije dostupan,
funkcija LoadPicture u~itava sliku koja najvi{e odgovara tra`enoj.
Za brisanje grafike iz kontrole okvira za sliku, upotrijebite funkciju LoadPicture bez
odre|ivanja imena datoteke. Na primjer:
Set Picture1.Picture = LoadPicture
To }e o~istiti kontrolu okvira za sliku ~ak i ako je grafika u~itana u svojstvo Picture
tijekom izrade aplikacije.
Kori{tenje odlagali{ta
Grafiku tako|er mo`ete dodati u kontrolu okvira za sliku tijekom izrade aplikacije tako
da je ulijepite iz druge aplikacije. Na primjer, mo`da `elite dodati bitmapiranu sliku
koja je stvorena u aplikaciji Windows Paint. Jednostavno kopirajte sliku u odlagali{te,
odaberite kontrolu okvira za sliku, te upotrijebite pre~icu tipkama CTRL + V ili naredbu Paste iz izbornika Edit.
346
Vodi~ za programere
7. poglavlje
Za vi{e informacija Pogledajte Primjer kontrola kliznih traka: stvaranje pomi~nog grafi~kog prozora, ranije u ovom poglavlju, za informacije o kori{tenju okvira za
sliku u stvaranju pomi~nog grafi~kog prozora.
Grafi~ki postupci
Okviri s sliku, kao i forme, mogu biti upotrebljeni za prihva}anje izlaznih rezultata
grafi~kih postupaka kao {to su Circle, Line i Point. Na primjer, mo`ete upotrijebiti
postupak Circle za crtanje kruga u okviru za sliku postavljanjem svojstva AutoRedraw
kontrole na True.
Picture1.AutoRedraw = True
Picture1.Circle (1200, 1000), 750
Postavljanje svojstva AutoRedraw na True omogu}uje crtanje izlaznih rezultata tih postupaka na kontroli te automatsko ponovno iscrtavanje kad kontrola okvira za sliku
promijeni veli~inu ili se ponovno prika`e nakon {to je bila skrivena drugim objektom.
Za vi{e informacija Pogledajte Kori{tenje grafi~kih postupaka u 12. poglavlju
Rad s tekstom i grafikom, za vi{e informacija o kori{tenju kontrole okvira za sliku s
grafi~kim postupcima.
Kad koristite postupak Print mo`ete tako|er promijeniti stil i veli~inu pisma ili upotrijebiti svojstva CurrentX, CurrentY, Height i Width za poravnavanje teksta unutar okvira za sliku.
Za vi{e informacija Pogledajte 12. poglavlje Rad s tekstom i grafikom.
Vodi~ za programere
347
II. dio
Vodi~ za programere
7. poglavlje
349
II. dio
Kontrola lika
Svakom liku kojeg stvorite na formi mo`ete odrediti tip lika, boju, stil popune, boju
ruba i stil ruba.
Za jednostavne primjene, kontrola lika omogu}uje vam stvaranje niza raznih likova
bez pisanja koda. Za naprednije mogu}nosti trebate upotrijebiti postupke Line i Circle.
Za vi{e informacija Pogledajte Kori{tenje grafi~kih postupaka u 12. poglavlju
Rad s tekstom i grafikom, za vi{e informacija o crtanju linija, pravokutnika i popunjenih okvira tijekom rada aplikacije kori{tenjem postupka Line ili ta vi{e informacija o
crtanju krugova, elipsi i lukova tijekom rada aplikacije kori{tenjem postupka Circle.
350
Vodi~ za programere
7. poglavlje
Predodre|eni likovi
Svojstvo Shape kontrole lika omogu}uje vam {est predodre|enih likova. Sljede}a tablica ispisuje sve predodre|ene likove, njihove vrijednosti i odgovaraju}e konstante
Visual Basica:
lik
stil
konstanta
pravokutnik
vbShapeRectangle
kvadrat
vbShapeSquare
elipsa
vbShapeOval
krug
vbShapeCircle
vbShapeRoundedRectangle
vbShapeRoundedSquare
Slika 7.42
Predodre|eni likovi
pravokutnik
kvadrat
elipsa
krug
351
II. dio
Op}enito, kontrola okvira s tekstom trebala bi biti upotrijebljena za tekst koji se mo`e
obra|ivati, iako ga mo`ete u~initi i tekstom samo za ~itanje postavljanjem svojstva
Locked na True. Okviri za tekst vam tako|er omogu}uju prikaz vi{e linija, prijelom
teksta prema veli~ini kontrole te dodavanje temeljnih oblikovanja teksta.
352
Vodi~ za programere
7. poglavlje
Svojstvo Text
Tekst upisan u kontrolu okvira s tekstom sadr`an je u svojstvu Text. U pravilu, u okvir
s tekstom mo`ete unijeti do 2048 karaktera. Ako svojstvo MultiLine ove kontrole
postavite na True, mo`ete unijeti do 32 kilobajta teksta.
Oblikovanje teksta
Kad tekst prekora~i granice kontrole, mo`ete dopustiti kontroli da automatski prelomi
tekst postavljanjem svojstva MultiLine na True te dodati klizne trake postavljanjem
svojstva ScrollBars za dodavanje vodoravne ili okomite klizne trake, ili obje.
Me|utim, automatski prijelom teksta bit }e nedostupan ako dodate vodoravnu traku za
pomicanje jer se vodoravno podru~je obra|ivanja pove}ava prisutno{}u klizne trake.
Kad je svojstvo MultiLine postavljeno na True, mo`ete tako|er prilagoditi poravnanje
teksta na lijevo poravnavanje, centriranje ili desno poravnavanje. Tekst je u pravilu
lijevo poravnan. Ako je svojstvo MultiLine postavljeno na False, postavke svojstva
Alignment nemaju u~inka.
Za vi{e informacija Pogledajte Rad s okvirima s tekstom u stalnoj pomo}i, za
prikaz svojstava MultiLine, ScrollBar i Alignment.
Odabir teksta
Mo`ete kontrolirati mjesto ubacivanja i pona{anje odabranog teksta u okviru s tekstom
svojstvima SelStart, SelLength i SelText.
Za vi{e informacija Pogledajte Rad s okvirima s tekstom u 3. poglavlju Forme,
kontrole i izbornici, za prikaz svojstava SelStart, SelText i SelLength.
Primjer zaporke
Vodi~ za programere
353
II. dio
Svojstvom MaxLength odre|ujete koliko karaktera mo`e biti upisano u okvir s tekstom. Nakon prekora~enja vrijednosti ovog svojstva, ra~unalo ispu{ta pisak i okvir s
tekstom ne prihva}a daljnje karaktere.
354
Vodi~ za programere
7. poglavlje
Kako bi postigli isti u~inak, mo`ete upotrijebiti ASCII karakter (34) za znak navodnika:
Text1.Text = Ona je rekla & Chr(34) _
+ Zaslu`io si ~a{}enje! & Chr(34)
Svaka kontrola mjera~a vremena ima svojstvo Interval koje odre|uje broj milisekundi
koje }e pro}i izme|u jednog doga|aja Timer do drugog. Osim ako nije isklju~en, mjera~ vremena nastavlja s prihva}anjem doga|aja (odgovaraju}e nazvanog doga|aj
Timer) u otprilike jednakim vremenskim razmacima.
Svojstvo Interval ima nekoliko ograni~enja koje morate uzeti u obzir pri programiranju
kontrole mjera~a vremena:
Ako va{a aplikacija ili druga aplikacija ima velike zahtjeve u sustavu kao duge
petlje, temeljita prora~unavanja, ili pristup pogonskom ure|aju, mre`i ili priklju~ku
mo`da ne}e dobivati doga|aje mjera~a tako ~esto kako odre|uje svojstvo Interval.
Vremenski razmak mo`e biti izme|u 0 i 64.767, uklju~ivo, {to zna~i da ~ak i najdulji vremenski razmak ne mo`e biti puno dulji od jedne minute (oko 64,8 sekundi).
Ne postoji jamstvo za istek vremenskog razmaka to~no na vrijeme. Kako bi osigurali to~nost, mjera~ vremena bi trebao provjeravati sistemski sat kad je to potrebno,
umjesto unutarnjeg pra}enja nakupljenog vremena.
Vodi~ za programere
355
II. dio
postavka
Enabled
Ako `elite po~etak rada mjera~a vremena ~im se forma u~ita, postavite ovo svojstvo
na True. Ina~e, ostavite ovo svojstvo postavljeno na False. Mo`ete odabrati da
vanjski doga|aj (kao klik naredbenog gumba) pokrene rad mjera~a vremena.
Interval
356
Vodi~ za programere
7. poglavlje
svojstvo
postavka
Label1
BorderStyle
Fixed Single
Timer1
Interval
Timer1
Enabled
True
Procedura prikazuje sistemsko vrijeme pozivom ugra|ene funkcije Time. Ova funkcija
vra}a vrijednost tipa Variant koja sadr`i trenutno vrijeme kao vrijednost datum/vrijeme
(VarType 7). Kad je dodijelite varijabli stringa ili svojstvu, kao {to je svojstvo Caption
u ovom slu~aju, Visual Basic je pretvara u string kori{tenjem oblika vremena odre|enog u kontrolnom panelu. Ako ju `elite prikazati koriste}i druga~iji oblik, mo`ete
upotrijebiti funkcije Format.
Vodi~ za programere
357
II. dio
358
Vodi~ za programere