Professional Documents
Culture Documents
P O G L A V L J E
Sadr`aj
• Rad s pismima
• Prikazivanje teksta na formama i okvirima za sliku
• Oblikovanje brojeva, datuma i vremena
• Rad s odabranim tekstom
• Preno{enje teksta i grafike s objektom Clipboard
• Razumijevanje koordinatnog sustava
• Kori{tenje grafi~kih kontrola
• Kori{tenje grafi~kih postupaka
• Rad s bojama
• Kori{tenje objekta tipa Picture
• Ispis
II. dio [to mo`ete napraviti s Visual Basicom
Rad s pismima
Tekst se prikazuje kori{tenjem pisma (font) – skupa karaktera istog oblika, dostupnih u
odre|enoj veli~ini, stilu i te`ini.
Operativni sustavi Windows 95/98 i Windows NT pru`aju vama i va{im korisnicima
potpun skup standardnih pisama. Pisma tipa TrueType su promjenjive veli~ine, {to zna-
~i da mogu ponovno stvoriti karakter bilo koje veli~ine. Kad odaberete TrueType pis-
mo, ono se iscrtava u odabranoj veli~ini to~aka i prikazuje kao bitmapirana slika na
ekranu.
Kod tiskanja, odabrano TrueType pismo ili pisma se iscrtavaju u odgovaraju}oj veli~i-
ni i zatim {alju pisa~u. Zbog toga, nema potrebe za odvajanjem pisama za ekran i za
pisa~. Me|utim, pisma pisa~a zamijeniti }e TrueType pisma, ako je na raspolaganju
jednako pismo, {to pove}ava brzinu ispisa.
Umjesto toga, kako bi stvorili svoj vlastiti tip pisma ili slike, upotrijebite programski
kod sli~an sljede}em:
Dim MojePismo As New StdFont
With MojePismo
.Bold = True
.Name = “Arial”
End With
Set Text1.Font = MojePismo
Na primjer, sljede}i izrazi postavljaju razna svojstva pisma za kontrolu natpisa s ime-
nom lblGodinaUDatum:
With lblGodinaUDatum.Font
.Name = “Arial” ‘ Promjena pisma u Arial.
.Bold = True ‘ Podebljavanje pisma.
End With
Redoslijed po kojem postavljate svojstva pisma je nebitan, jer sva pisma ne podr`avaju
sve varijacije pisama. Prvo postavite svojstvo Name. Nakon toga mo`ete postaviti bilo
koje od svojstava s vrijedno{}u tipa Boolean, kao Bold i Italic, na vrijednost True ili
False.
Skup svojstava pisma mo`ete tako|er spremiti u objekt Fonts. Mo`ete odrediti objekt
Font kao {to odre|ujete i svaki drugi objekt, kori{tenjem klase StdFont:
Dim MojePismo As New StdFont
With MojePismo
.Name = “Arial”
.Size = 10
.Bold = True
End With
Napomena Prije nego {to stvorite objekt Font, morate upotrijebiti dijalo{ki okvir
References (dostupan iz izbornika Project) za stvaranje pokaziva~a na dodatak
Standard OLE Types.
Nakon toga se mo`ete lako prebacivati s jednog skupa svojstava pisma na drugi,
postavljanjem objekta Font forme ili kontrole na novi objekt:
Set lblGodinaUDatum.Font = MojePismo
Za vi{e informacija Pogledajte “Objekt Font” u priru~niku Microsoft Visual Basic
6.0 Language Reference biblioteke Microsoft Visual Basic 6.0 Language Reference
Library.
Svojstvo FontTransparent
Forme i okviri za sliku imaju dodatno svojstvo pisma, FontTransparent. Kad je svoj-
stvo FontTransparent postavljeno na True, pozadina se prikazuje putem teksta prikaza-
nom na formi ili okviru za sliku. Slika 12.1 pokazuje u~inke svojstva FontTransparent.
Slika 12.1 U~inci svojstva FontTransparent
• Trenutnoj formi:
Print “Ovo je trenutna forma.”
• objektu Printer:
Printer.Print “Ovaj tekst ide na pisa~.”
Argument listaizlaza je tekst koji se pojavljuje na formi ili okviru za sliku. Vi{e stavki
u argumentu listaizlaza moraju biti razdvojene zarezom ili to~ka-zarezom ili s oboje,
kao {to je obja{njeno u odlomku “Prikaz razli~itih stavki u istoj liniji”, kasnije u ovom
poglavlju.
Odrezani tekst
Ako je forma ili okvir za sliku premalen za prikaz cijelog teksta, tekst }e biti odrezan.
Gdje }e forma ili okvir za sliku odrezati tekst ovisi o koordinatama polo`aja na kojem
ste po~eli ispisivati tekst. Ne mo`ete se pomicati kroz formu ili okvir za sliku.
Slojevitost
Kad ispisujete tekst na formu, tekst se pojavljuje u sloju koji se nalazi ispod svih kon-
trola postavljenih na formu. Ispis na formu }e tako obi~no najbolje raditi na formama
posebno stvorenim za sadr`avanje teksta. Za vi{e informacija o tome kako se tekst i
grafika pojavljuju u slojevima na formi, pogledajte “Slojevitost grafike sa svojstvima
AutoRedraw i ClipControls”, kasnije u ovom poglavlju.
U pravilu, svaki postupak Print ispisuje tekst i pomi~e se na idu}u liniju. Ako nema
stavki, postupak Print jednostavno preska~e liniju. Niz izraza Print (u sljede}em pri-
mjeru, za okvir za sliku s imenom picBrojLinije) automatski koristi odvojene linije:
picBrojLinije.Print “Ovo je linija 1.”
picBrojLinije.Print “Ovo je linija 2.”
Me|utim, postavljanjem to~ke-zareza (ili zareza) na kraj prvog izraza, uzrokovat }ete
pojavljivanje izlaza idu}eg izraza Print u istoj liniji:
picBrojLinije.Print “Ovo sve se pojavljuje “;
picBrojLinije.Print “u istoj liniji.”
Postupak Cls
Sav tekst i grafika na objektu koji su stvoreni postupkom Print i grafi~kim postupcima
mogu biti obrisani postupkom Cls. Postupak Cls tako|er obnavlja koordinate crtanja
na po~etak (0, 0), {to je u pravilu gornji lijevi kut. Na primjer, ovi izrazi bri{u:
• Okvir za sliku imena Picture1:
Picture1.Cls
• Trenutnu formu:
Cls
• Trenutna forma:
CurrentX = 0
CurrentY = 0
Svaki novi tekst kojeg ispisujete pojavljuje se iznad svakog teksta i grafike koje se ve}
nalaze na tom polo`aju. Kako bi obrisali samo dio teksta, nacrtajte okvir postupkom
Line i popunite ga bojom pozadine. Imajte na umu da koordinate crtanja odre|ene
svojstvima CurrentX i CurrentY obi~no mijenjaju polo`aj kad koristite grafi~ke po-
stupke.
U pravilu, forme i okviri za sliku koriste koordinatni sustav gdje svaka jedinica pred-
stavlja twip (1440 twipova jednako je in~u, a otprilike 567 twipova jednako je centi-
metru). Mo`da }ete trebati promijeniti svojstvo Scale forme, okvira za sliku ili objekta
Printer iz twipova u to~ke (points), zato {to se visina teksta mjeri u to~kama. Kori{te-
nje iste jedinice mjere za tekst i za objekt u koji }ete ispisivati tekst olak{ava izra~una-
vanje polo`aja teksta.
Za vi{e informacija Za vi{e informacija o twipovima i koordinatama crtanja,
pogledajte “Razumijevanje koordinatnog sustava”, kasnije u ovom poglavlju.
Pretpostavljaju}i da ne postoje oznake kraja reda u uzorku teksta, trebate koristiti ovu
sintaksu za postavljanje svojstva CurrentY na n-tu liniju:
CurrentY = [objekt.] TextHeight (string) * (n – 1)
Ako je izostavljen argument objekt, postupak se primjenjuje za trenutnu formu.
Argument objekt mo`e biti forma, okvir za sliku ili objekt Printer.
Postupak TextWidth vra}a {irinu stringa, uzimaju}i u obzir veli~inu i stil pisma objek-
ta. Ovaj postupak je koristan zato {to ve}ina pisama ima karaktere razmjerne {irine.
Postupak TextWidth poma`e vam u otkrivanju je li {irina stringa ve}a od {irine forme,
okvira za sliku ili objekta Printer.
Na primjer, sljede}i izrazi koriste postupke TextWidth i TextHeight za centriranje teks-
ta u okvir postavljanjem svojstava CurrentX i CurrentY. Ime okvira u ovom primjeru
je Jelovnik.
CurrentX = (BoxWidth – TextWidth(“Jelovnik”)) / 2
CurrentY = (BoxHeight – TextHeight(“Jelovnik”)) / 2
Imenovani oblici
Visual Basic pru`a nekoliko standardnih oblika za kori{tenje s funkcijom Format.
Umjesto ozna~avanja simbola u argumentu oblik, mo`ete odrediti te oblike imenom u
argumentu oblik funkcije Format. Uvijek zatvorite ime oblika u dvostruke navodnike
(“”).
Sljede}a tablica ispisuje imena oblika koje mo`ete upotrebljavati.
imenovani oblik opis
General Number Prikazuje brojeve bez razdvojnika tisu}a.
Currency Prikazuje brojeve s razdvojnikom tisu}a, ako je potrebno; prikazuje dvije znamenke
desno od decimalnog razdvojnika. Izlaz se temelji na postavkama sustava korisnika.
Fixed Prikazuje najmanje jednu znamenku lijevo i dvije znamenke desno od decimalnog
razdvojnika.
Funkcija Format podr`ava puno drugih posebnih znakova, kao {to su oznaka mjesta
postotka i potencije.
Za vi{e informacija Pogledajte odlomak “Funkcija Format” u priru~niku Microsoft
Visual Basic 6.0 Language Reference.
Oblici brojeva
Sljede}a pretvaranja brojeva pretpostavljaju da je u kontrolnom panelu Windowsa
dr`ava postavljena na “English (United States)”.
sintaksa oblika rezultat
Format(8315.4, “00000.00”) 08315.40
Format(8315.4, “#####.##”) 8315.4
Format(8315.4, “##,##0.00”) 8,315.40
Format(315.4, “$##0.00”) $315.40
Ako svojstvu SelText dodijelite novi string, taj string zamjenjuje odabrani tekst, a
mjesto ubacivanja postavlja se to~no nakon kraja novouba~enog teksta. Na primjer,
sljede}i izraz zamjenjuje odabrani tekst stringom “Upravo sam uba~en!”:
Text1.SelText = “Upravo sam uba~en!”
dohva}anje
teksta
GetText
Postupak SetText kopira tekst u odlagali{te, zamjenjuju}i svaki tekst koji je tu prije bio
spremljen. Postupak SetText koristite kao izraz. Sintaksa je:
Clipboard.SetText podaci [, oblik]
Postupak GetText vra}a tekst spremljen u odlagali{tu. Koristite ga kao funkciju:
odredi{te = Clipboard.GetText()
Kombiniranjem postupaka SetText i GetText sa svojstvima odabiranja predstavljenim u
odlomku “Rad s odabranim tekstom”, mo`ete lako napisati naredbe za kopiranje, reza-
nje i lijepljenje za okvir s tekstom. Sljede}i potprogrami doga|aja ostvaruju te naredbe
za kontrole s imenima mnuKopiraj, mnuIzre`i i mnuUlijepi:
Private Sub mnuKopiraj_Click()
Clipboard.Clear
Clipboard.SetText Text1.SelText
End Sub
Napomena Primjer najbolje radi ako postoje kontrole izbornika, jer mo`ete
koristiti izbornike dok kontrola Text1 ima fokus.
U naredbi Ulijepi, postupak GetText vra}a string teksta koji je trenutno u odlagali{tu.
Izraz dodjeljivanja zatim kopira taj string u odabrani dio okvira s tekstom
(Text1.SelText). Ako trenutno nema odabranog teksta, Visual Basic postavlja taj tekst
na mjesto ubacivanja u okviru s tekstom:
Text1.SelText = Clipboard.GetText()
Ovaj kod pretpostavlja da se sav tekst prebacuje u i iz okvira s tekstom Text1, ali
korisnik mo`e kopirati, izrezivati i uljepljivati izme|u okvira Text1 i kontrola na
drugim formama.
Budu}i da cijelo okru`enje koristi odlagali{te, korisnik tako|er mo`e prenositi tekst
izme|u okvira Text1 i bilo koje aplikacije kori{tenjem odlagali{ta.
Ova dio koda mo`ete upotrijebiti kao i svaki drugi pokaziva~ na kontrolu. Ako znate
da je kontrola okvir s tekstom, mo`ete ukazati na bilo koje od svojstava podr`anih od
okvira s tekstom, uklju~uju}i svojstva Text, SelText i SelLength. Sljede}i kod pretpo-
stavlja da je okvir s tekstom aktivna kontrola, i koristi svojstvo SelText:
Private Sub mnuKopiraj_Click()
Clipboard.Clear
Clipboard.SetText Screen.ActiveControl.SelText
End Sub
Screen.ActiveControl.Text = “”
ElseIf TypeOf Screen.ActiveControl Is PictureBox Then
Screen.ActiveControl.Picture = LoadPicture()
ElseIf TypeOf Screen.ActiveControl Is ListBox Then
Screen.ActiveControl.RemoveItem Screen.ActiveControl.ListIndex
Else
‘ Ni jedna akcija nema smisla za ostale kontrole.
End If
End Sub
Else
‘ Ne mo`e se izrezivati ili kopirati iz
‘ ostalih tipova kontrola.
mnuIzre`i.Enabled = False
mnuKopiraj.Enabled = False
End If
End Sub
(y)
Obja{njenje twipova
U pravilu, sva pomicanja, promjene veli~ine, te izrazi za grafi~ko crtanje Visual Basica
koriste jedinicu od jednog twipa. Twip je jedna dvadesetina (1/20) to~ke ispisa (1440
twipova jednako je jednom in~u, a 567 twipova jednako je jednom centimetru). Ovak-
ve mjere odre|uju veli~inu objekta kod ispisa. Stvarni fizi~ki razmaci na ekranu razli-
~iti su ovisno o veli~ini monitora.
gdje svaki predstavlja stupac u grafikonu. Sljede}i odlomci obja{njavaju kako postaviti
podrazumijevana, standardna i korisni~ka mjerila za promjenu koordinatnog sustava.
Ovi izrazi odre|uju gornji lijevi kut kao (100, 100). Iako ovi izrazi ne mijenjaju izrav-
no veli~inu ili polo`aj tih objekata, mijenjaju u~inak kasnijih izraza. Na primjer, slje-
de}a naredba koja postavi svojstvo Top kontrole na 100 postavit }e tu kontrolu na sam
vrh njezinog spremnika.
Ovi izrazi odre|uju vodoravnu jedinicu kao jednu tisu}inku (1/1000) trenutne unutar-
nje {irine forme te okomitu jedinicu kao jednu petstotinku (1/500) trenutne unutarnje
visine forme. Ako forma kasnije promijeni veli~inu, jedinice ostaju iste.
kako se pove}ava
Y, polo`aj se
pomi~e prema
dolje
Ovaj izraz odre|uje formu kao 100 jedinica {iroku i 100 jedinica visoku. S ovako
postavljenim mjerilom, sljede}i izraz pomi~e kontrolu lika jednu petinu puta preko
forme:
shpPokreta~.Left = shpPokreta~.Left + 20
Odre|ivanje vrijednosti x1 ve}e od x2 (x1 > x2) ili vrijednosti y1 ve}e od y2 (y1 > y2)
ima isti u~inak kao postavljanje svojstava ScaleWidth ili ScaleHeight na negativne vri-
jednosti.
Pretvaranje mjerila
Upotrijebite postupke ScaleX i ScaleY za pretvaranje iz jednog moda mjerila u drugi
mod mjerila. Ovi postupci imaju sljede}u sintaksu:
[objekt.]ScaleX (vrijednost [, izMjerila [, uMjerilo] ]
[objekt.]ScaleY (vrijednost [, izMjerila [, uMjerilo] ]
Odredi{ni objekt je forma, okvir za sliku ili objekt tipa Printer. Vrijednost je izra`ena u
koordinatnom sustavu odre|enom modom mjerila izMjerila. Vra}ena vrijednost je izra-
`ena u modu mjerila odre|enom argumentom uMjerilo, ili modom mjerila objekta ako
je argument uMjerilo izostavljen. Ako je izostavljen argument izMjerila, mod mjerila
za vrijednost je HIMETRI^AN.
HIMETRIJA je mod mjerila koji odre|uje fizi~ke veli~ine. Na primjer, broj HIMET-
RI^NIH jedinica u liniji od 10 centimetara je 10 000. Rezultiraju}a linija nacrtana na
ekranu je duga deset centimetara, neovisno o veli~ini podru~ja slikovnog prikaza. Za
informacije o HIMETRI^NOM modu mjerila i fizi~kim veli~inama, pogledajte do-
datak Microsoft Windows SDK.
Sljede}i izraz razvla~i sadr`aj kontrole okvira za sliku MojaSlika na dvostruku {irinu.
MojaSlika.Picture.Width vra}a {irinu slike sadr`ane u kontroli okvira za sliku, {to je
HIMETRI^KA vrijednost koja treba biti pretvorena u mod mjerila forme Form1.
Form1.PaintPicture MojaSlika.Picture, X, Y, _
Form1.Scale(MojaSlika.Picture.Width) * 2
Sljede}i primjer pokazuje dva jednako vrijedna na~ina za odre|ivanje svojstva Width
forme na {irinu od np piksela.
‘ Svojstvo ScaleMode forme je postavljeno na piksele.
ScaleMode = vbPixels
‘ Na~in 1:
‘ Privremeno postavljanje svojstva ScaleMode forme na twipove.
ScaleMode = vbTwips
‘ ScaleX() vra}a vrijednost u twipovima.
Width = Width – ScaleWidth + ScaleX(np, vbPixels)
‘ Vra}anje svojstva ScaleMode forme na piksele.
ScaleMode = vbPixels
‘ Na~in 2:
‘ Pretvaranje iz piksela u twipove bez
‘ mijenjanja svojstva ScaleMode forme.
Width = Width + ScaleX(np – ScaleWidth, vbPixels, vbTwips)
Novu sliku mo`ete u~itati na formu, u okvir za sliku ili kontrolu slike kad god to
`elite. U~itavanje nove slike potpuno zamjenjuje postoje}u sliku, iako izvorne
datoteke slika nikad nisu pogo|ene.
• Upotrijebite funkciju LoadResPicture za dodjeljivanje slike iz datoteke .res projekta
u svojstvo Picture.
Sljede}i izraz u~itava bitmapiranu sliku izvornog ID-a 10, iz datoteke izvora u okvir
za sliku imena picIzvor:
Set picIzvor.Picture = LoadResPicture(10, vbResBitmap)
Trajne slike
Operativni sustav Microsoft Windows upravlja ekranskom slikom kako bi stvorio pri-
vid preklapaju}ih prozora. Kad se jedan prozor pomakne iznad drugog, privremeno ga
skrivaju}i, te se zatim ponovno pomakne na stranu, prozor i njegov sadr`aj trebaju biti
ponovno prikazani. Windowsi vode ra~una o ponovnom prikazivanju prozora i kontro-
la. Va{a Visual Basic aplikacija ipak mora rukovati ponovnim prikazivanjem slika na
formi ili u okviru za sliku.
Ako stvorite sliku na formi kori{tenjem grafi~kih postupaka, obi~no `elite da se
ponovno pojavi to~no kako ste ju postavili (trajna slika). Za stvaranje stalne slike
mo`ete upotrijebiti svojstvo AutoRedraw.
Kad je svojstvo AutoRedraw forme postavljeno na True, Visual Basic primjenjuje gra-
fi~ke postupke na “slikarskom platnu” u memoriji. Aplikacija kopira sadr`aj te memo-
rije slikarskog platna za ponovno prikazivanje slike privremeno sakrivene drugim pro-
zorom. U ve}ini slu~ajeva, veli~ina tog slikarskog platna za forme je veli~ina ekrana.
Ako je svojstvo MaxButton forme postavljeno na False, a rub forme nije promjenjive
veli~ine, veli~ina slikarskog platna jednaka je veli~ini forme.
Ovo slikarsko platno tako|er omogu}uje aplikaciji da snimi slike koje se pru`aju izvan
rubova forme kad je forma promjenjive veli~ine. U~inci postavljanja svojstva Auto-
Redraw na True su prikazani na slici 12.7.
Slika 12.7 U~inci postavljanja svojstva AutoRedraw na True
grafika djelomi~no sakrive- grafika ostaje nakon pomi-
grafika u prozoru
na drugim prozorom canja drugog prozora
• Kontrole lika
• Kontrole linije
• Kontrole slike
• Kontrole natpisa
• Svih ActiveX grafi~kih kontrola
Postavljanjem svojstva ClipControls na False, mo`ete pobolj{ati brzinu kojom se for-
ma iscrtava na ekranu. Pobolj{anje brzine je najve}e na formama s puno kontrola koje
se ne preklapaju, kao dijalo{ki okviri.
Podru~ja rezanja
Rezanje je proces odre|ivanja podru~ja na formi ili spremniku koje }e biti iscrtano kad
se prika`e forma ili spremnik. Obris koji se koristi za odre|ivanje podru~ja na formi ili
spremniku koja }e biti iscrtana ili “izrezana”, odre|uje podru~je rezanja za tu formu ili
spremnik. Podru~ja rezanja su korisna kad aplikacije temeljene na Windowsima trebaju
spremiti jedan dio prikaza te istovremeno ponovno iscrtati ostatak.
Normalna slojevitost
Obi~no, slojevi forme ili drugih spremnika su, od vrha prema dolje, sljede}i:
sloj sadr`i
Prednji Negrafi~ke kontrole kao naredbeni gumbi, kontrolne ku}ice i kontrole datoteka.
Srednji Grafi~ke kontrole i kontrole natpisa.
Stra`nji Prostor za crtanje na formi ili spremniku. Ovdje se pojavljuju rezultati grafi~kih postupaka.
Sve na jednom sloju prekriva sve na sloju iza, pa }e se grafika koju stvorite grafi~kim
kontrolama pojavljivati iza ostalih kontrola na formi, a sva grafika koju stvorite gra-
fi~kim postupcima pojavljivat }e se iza svih grafi~kih i negrafi~kih kontrola. Normalan
raspored slojeva prikazan je na slici 12.9.
srednji sloj
prednji sloj
kontrola linije
naredbeni gumb
U~inci slojevitosti
Mo`ete proizvesti normalnu slojevitost kori{tenjem nekog od nekoliko pristupa. Kom-
biniranje postavki svojstava AutoRedraw i ClipControls te postavljanje grafi~kih po-
stupaka unutar ili izvan doga|aja Paint utje~e na slojevitost i izvo|enje aplikacije.
Sljede}a tablica ispisuje u~inke stvorene razli~itim kombinacijama svojstava
AutoRedraw i ClipControls te postavljanjem grafi~kih postupaka.
AutoRedraw ClipControls grafi~ki postupci Pona{anje slojevitosti
unutar/izvan
doga|aja Paint
True True Doga|aj Paint Normalna slojevitost.
(standardno) zanemaren
True False Doga|aj Paint Normalna slojevitost. Forme s puno
zanemaren kontrola koje se ne preklapaju mogu se br`e
iscrtavati zato {to se ne izra~unava ili stvara
podru~je rezanja.
False True Unutar Normalna slojevitost.
(standardno) (standardno)
False True Izvan Negrafi~ke kontrole na vrhu. Grafi~ki postupci i
grafi~ke kontrole pojavljuju se pomije{ano u
srednjem i stra`njem sloju. Nije preporu~eno.
False False Unutar Normalna slojevitost, utje~e samo na piksele koji
su prethodno pokriveni ili se pojavljuju kod
promjene veli~ine forme.
False False Izvan Grafi~ki postupci i sve kontrole pojavljuju se
izmije{ano u sva tri sloja. Nije preporu~eno.
svojstvo Top
svojstvo Left
Kontrolu mo`ete pomaknuti promjenom postavki svojstava Left i Top izrazima sli~nim
ovim:
txtPolje1.Left = txtPolje1.Left + 200
txtPolje1.Top = txtPolje1.Top – 300
Apsolutno pomicanje
Apsolutno pomicanje se pojavljuje kad pomaknete objekt na odre|ene koordinate u
njegovom spremniku. Sljede}i izraz koristi apsolutno pomicanje kako bi pomaknuo
kontrolu imena txtPolje1 na koordinate (100, 200):
txtPolje1.Move 100, 200
Relativno pomicanje
Relativno pomicanje se pojavljuje kad pomaknete objekt odre|ivanjem udaljenosti za
koju se treba pomaknuti od svog trenutnog polo`aja. Sljede}i izraz koristi relativno po-
micanje za pomak kontrole txtPolje1 na polo`aj 100 twipova prema dolje i desno od
njegovog trenutnog polo`aja:
txtPolje1.Move txtPolje1.Left + 100, txtPolje1.Top + 100
Ovaj dio pokazuje pomicanje kontrole u primjeru aplikacije Blanker. Primjer Rebound
pomi~e okvir za sliku dijagonalno po formi, pa okvir za sliku izgleda kao da se “odbi-
ja” od rubova forme. Ovaj primjer koristi okvir za sliku umjesto kontrole slike zato {to
treptanje kontrole slike tijekom pomicanja tra`i njezino ponovno iscrtavanje.
Slika 12.11 prikazuje glavnu formu aplikacije Blanker (formu DemoForm) te okvir za
sliku koji se koristi u ovom primjeru.
Ime okvira za sliku je picBall. Ova kontrola po~inje se micati po formi nakon {to
odaberete naredbu Rebound iz izbornika Options te kliknete gumb Start Demo. Pot-
program doga|aja tog naredbenog gumba zatim poziva potprogram CtlMoveDemo.
Potprogram CtlMoveDemo nasumce odabire jedan po~etni smjer iz ove ~etiri
mogu}nosti:
• Lijevo i gore
• Desno i gore
• Lijevo i dolje
• Desno i dolje
Okvir za sliku picBall pomi~e se du` odabranog smjera sve dok kontrola ne dosegne
jedan od ~etiri ruba forme. Nakon toga okvir za sliku mijenja smjer udaljavaju}i se od
ruba koji je dosegnuo; varijabla Motion nadzire smjer. Na primjer, kad se okvir za sli-
ku pomi~e lijevo i gore, taj dio potprograma mijenja vrijednost varijable Motion i za-
povijeda programskom kodu da pomakne okvir picBall u drugom smjeru.
Sljede}i izrazi dolaze iz potprograma CtlMoveDemo aplikacije Blanker:
Select Case Motion
Case 1
‘ Ako je kretanje prema lijevo i gore,
‘ pomicanje kontrole za 20 twipova.
picBall.Move picBall.Left – 20, picBall.Top – 20
‘ Ako kontrola dotakne lijevi rub,
‘ promjena pomicanja prema desno i gore.
If picBall.Left <= 0 Then
Motion = 2
Uo~ite da linija koda koja pomi~e kontrolu picBall oduzima 20 twipova od trenutnih
vrijednosti njezinih svojstava Left i Top kako bi uspostavila nov polo`aj kontrole. Tako
je osigurano da se kontrola uvijek pomi~e relativno prema njezinom trenutnom
polo`aju.
Brzina i glatko}a pomicanja kontrole ovise o broju twipova (ili drugih jedinica) kori-
{tenih u postupku Move. Pove}avanje broja twipova pove}ava brzinu, ali smanjuje
glatko}u pomicanja. Smanjivanje broja twipova smanjuje brzinu, ali pobolj{ava
glatko}u pomicanja kontrole.
Za vi{e informacija Za dodatne informacije o postupku Move, pogledajte
“Postupak Move” u priru~niku Microsoft Visual Basic 6.0 Language Reference.
U ovom primjeru, naredbeni gumb imena cmdRasti postaje sve ve}i svaki put kad ga
korisnik klikne:
Private Sub cmdRasti_Click()
cmdRasti.Height = cmdRasti.Height + 300
cmdRasti.Width = cmdRasti.Width + 300
End Sub
Sljede}i izraz mijenja svojstvo Picture kontrole slike s imenom imgStanjePo{te kako bi
prebacio njezinu sliku s neotvorene omotnice na otvorenu omotnicu.
imgStanjePo{te.Picture = imgOtvorenaPo{ta.Picture
Primjer aplikacije Blanker uklju~uje animaciju koja prikazuje rotiraju}i mjesec. Pri-
mjer Spinning Moon koristi matricu od devet kontrola slike za stvaranje animacije. Da
bi vidjeli kako slike u matrici kontrola me|usobno djeluju tijekom izvo|enja aplikaci-
je, odaberite Spinning Moon iz izbornika Options, te kliknete gumb Start Demo, koji
poziva potprogram ImageDemo.
• Trenutnoj formi
PSet (500, 500)
Svako podru~je crtanja ima svoj vlastiti koordinatni sustav koji odre|uje koje }e se
jedinice primjenjivati za koordinate. Kao dodatak, svako podru~je crtanja ima svoj
vlastiti kompletan skup grafi~kih svojstava.
Za vi{e informacija Pogledajte “Ispis iz aplikacije”, kasnije u ovom poglavlju, za
vi{e informacija o objektu tipa Printer. Pogledajte “Razumijevanje koordinatnog susta-
va”, ranije u ovom poglavlju, za vi{e informacija o koordinatama.
Crtanje to~aka
Nadziranje pojedinog piksela je jednostavna grafi~ka operacija. Postupak PSet postav-
lja boju piksela na odre|enoj to~ki:
[objekt.]PSet (x, y)[, boja]
Argumenti x i y su jednostruke preciznosti, pa mogu prihvatiti unos cijelog broja ili
razlomka. Unos mo`e biti svaki broj~ani izraz, uklju~uju}i varijable.
Ako ne uklju~ite argument boja, postupak PSet postavlja piksel na boju crtanja
(ForeColor). Na primjer, sljede}i izrazi postavljaju razne to~ke na trenutnoj formi
(formi kojoj je pridodan taj programski kod), MojaForma, te okviru za sliku picSlika1:
PSet (300, 100)
PSet (10.75, 50.33)
MojaForma.PSet (230, 1000)
picSlika1.PSet (1.5, 3.2)
Aplikacija Blanker crta to~ke u nasumce odabranim bojama kako bi stvorila primjer
Confetti. potprogram PSetDemo stvara konfete:
Sub PSetDemo()
‘ Postavljanje varijable Red na nasumi~nu vrijednost.
R = 255 * Rnd
‘ Postavljanje varijable Green na nasumi~nu vrijednost.
G = 255 * Rnd
‘ Postavljanje varijable Blue na nasumi~nu vrijednost.
B = 255 * Rnd
‘ Postavljanje vodoravnog polo`aja.
XPos = Rnd * ScaleWidth
‘ Postavljanje okomitog polo`aja.
YPos = Rnd * ScaleHeight
‘ Crtanje to~ke s nasumi~nom bojom.
PSet (XPos, YPos), RGB(R, G, B)
End Sub
Kao {to je opisano u idu}em odlomku “Crtanje linija i likova”, ispred (x, y) koordinata
mo`e napisati klju~nu rije~ Step, {to ~ini to~ku relativnom prema posljednjem nacr-
tanom polo`aju.
Postupak Point je blisko povezan s postupkom PSet, ali vra}a vrijednost boje na
odre|enom polo`aju:
PointColor = Point (500, 500)
Crtanje linija
Kako bi nacrtali liniju izme|u dvije koordinate, upotrijebite jednostavan oblik postup-
ka Line, koji ima ovu sintaksu:
[objekt.]Line [(x1, y1)]–(x2, y2)[, boja]
Objekt je neobavezan; ako je izostavljen, postupak crta na formi kojoj je pridodan pro-
gramski kod (trenutnoj formi). Prvi par koordinata je tako|er neobavezan. Kao kod
svih vrijednosti koordinata, argumenti x i y mogu biti cijeli brojevi ili razlomci. Na
primjer, ovaj izraz crta standardnu liniju na formi:
Line (500, 500)-(2000, 2000)
Visual Basic crta liniju koja uklju~uje prvu krajnju to~ku, ali ne posljednju krajnju
to~ku. Takvo pona{anje je korisno kod crtanja zatvorenog oblika od to~ke do to~ke.
Kako bi nacrtali posljednju to~ku, upotrijebite ovu sintaksu:
PSet [Step] (0, 0)[, boja]
Prvi par koordinata (x1, y1) je neobavezan. Ako izostavite te koordinate, Visual Basic
koristi trenutan x, y polo`aj objekta (koordinate crtanja) kao krajnju to~ku. Trenutan
polo`aj mo`e biti odre|en svojstvima CurrentX i CurrentY, ali ina~e je jednak posljed-
njoj to~ki nacrtanoj grafi~kim ili Print postupkom. Ako niste prethodno koristili neki
grafi~ki ili Print postupak ili niste odre|ivali svojstva CurrentX i CurrentY, podrazumi-
jevani polo`aj je gornji lijevi kut objekta.
Na primjer, sljede}i izrazi crtaju trokut povezivanjem tri to~ke.
‘ Postavljanje x-koordinate po~etne to~ke.
CurrentX = 1500
‘ Postavljanje y-koordinate po~etne to~ke.
CurrentY = 500
‘ Crtanje linije prema dolje i desno od po~etne to~ke.
Line -(3000, 2000)
‘ Crtanje linije prema lijevo od trenutne to~ke.
Line -(1500, 2000)
‘ Crtanje linije gore i desno prema po~etnoj to~ki.
Line -(1500, 500)
je jednak ovom:
Line (100, 200)-Step(50, 50)
U ve}ini situacija, klju~na rije~ Step po{te|uje vas neprekidnog pra}enja posljednje
nacrtane to~ke. ^esto }e vam biti zanimljiviji relativni polo`aji dvije to~ke nego nji-
hovi apsolutni polo`aji.
Ako izostavite argument boja, boju crtanja odre|uje svojstvo ForeColor objekta gdje
se crta linija.
Crtanje okvira
Upotrebom postupka Line mo`ete nacrtati popunjene okvire. Sljede}i primjer crta
okvir s gornjim lijevim kutom na (500, 500) i mjeri 1000 twipova na svakoj strani:
Line (500, 500)-Step(1000, 0)
Line -Step(0, 1000)
Line -Step(-1000, 0)
Line -Step(0, -1000)
Me|utim, Visual Basic pru`a puno jednostavniji na~in crtanja okvira. Kad upotrijebite
opciju B s postupkom Line, Visual Basic crta pravokutnik, tretiraju}i odre|ene to~ke
kao suprotne kutove pravokutnika. Stoga, mo`ete zamijeniti ~etiri linije prethodnog
primjera sljede}om linijom:
Line (500, 500)-Step(1000, 1000), B
Uo~ite da su prije opcije B potrebna dva zareza, kako bi ukazali da je presko~en argu-
ment boje. Sintaksa postupka Line je pokrivena u odlomku “Crtanje linija i likova”,
ranije u ovom poglavlju.
Crtanje krugova
Postupak Circle crta razne kru`ne i elipti~ne (ovalne) likove. Kao dodatak, postupak
Circle crta lukove (dijelove kru`nice) i odsje~ke kruga. Mo`ete proizvesti puno vrsta
savijenih linija kori{tenjem varijacija postupka Circle.
Kako bi nacrtali krug, Visual Basic treba polo`aj sredi{ta kruga te du`inu njegova po-
lumjera. Sintaksa za savr{en krug je:
[objekt.]Circle [Step](x, y), polumjer[, boja]
Uglate zagrade pokazuju da su objekt i klju~na rije~ Step neobavezni. Ako ne odredite
objekt, pretpostavlja se trenutna forma. Argumenti x i y su koordinate sredi{ta, a polu-
mjer je polumjer kruga. Na primjer, ovaj izraz crta krug sa sredi{tem na (1200, 1000)
te polumjerom od 750:
Circle (1200, 1000), 750
To~an u~inak ovog izraza ovisi o veli~ini i koordinatnom sustavu forme. Budu}i da je
veli~ina forme nepoznata, ne znate ho}e li krug biti vidljiv. Kori{tenje svojstava
podru~ja crtanja postavlja sredi{te kruga u sredi{te forme:
Circle ((ScaleWidth + ScaleLeft) / 2, (ScaleHeight + _
ScaleTop) / 2)), ScaleWidth / 4
Za sad, sve {to trebate znati o svojstvima ScaleWidth i ScaleHeight je da ona poma`u
kod postavljanja slike u sredi{te forme.
Za vi{e informacija Odlomak “Promjena koordinatnog sustava objekta”, ranije u
ovom poglavlju, raspravlja detaljno svojstva ScaleWidth i ScaleHeight.
Napomena Polumjer kruga je uvijek odre|en u granicama vodoravnih jedinica.
Ako va{ koordinatni sustav koristi iste vodoravne i okomite jedinice ({to u pravilu
~ini), mo`e zanemariti ovu ~injenicu. Me|utim, ako upotrebljavate korisni~ko mje-
rilo, vodoravne i okomite jedinice mogu odgovarati razli~itim udaljenostima. U
prethodnim primjerima, polumjer je odre|en u vodoravnim jedinicama, a stvarna
visina kruga je zajam~eno jednaka njegovoj stvarnoj {irini.
Aplikacija Blanker stvara krugove kao dio primjera Rainbow Rug. Taj primjer crta
nizove krugova linijama od crtica koji se nalaze oko sredi{ta forme. Vremenom }e kru-
govi nalikovati istkanom kru`nom prostira~u. Potprogram CircleDemo stvara krugove
u primjeru Rainbow Rug sa sljede}im izrazima:
Sub CircleDemo()
Dim Radius
‘ Postavljanje varijable Red na nasumi~nu vrijednost.
R = 255 * Rnd
‘ Postavljanje varijable Green na nasumi~nu vrijednost.
G = 255 * Rnd
Crtanje lukova
Kako bi nacrtali lukove postupkom Circle, za odre|ivanje po~etka i kraja luka trebate
pru`iti argumente kuta u radijanima. Sintaksa za crtanje luka je:
[objekt.]Circle [Step](x, y), polumjer, [boja], po~etak, kraj[, omjer]
Ako su argumenti po~etak ili kraj negativni, Visual Basic crta liniju koja povezuje
sredi{te kruga s negativnom krajnjom to~kom. Na primjer, sljede}i potprogram crta
tortu s izrezanim odsje~kom.
Private Sub Form_Click()
Const PI = 3.14159265
Circle (3500, 1500), 1000, -PI / 2, – PI / 3
End Sub
Crtanje elipsi
Omjer slike kruga nadzire ho}e li se krug pojaviti savr{eno zaokru`en (krug) ili rasteg-
nut (elipsa). Potpuna sintaksa postupka Circle je:
[objekt.]Circle [Step](x, y), polumjer, [boja], po~etak, kraj[, omjer]
Argumenti po~etak i kraj su neobavezni, ali potrebni su zarezi ako `elite presko~iti
argumente. Na primjer, ako uklju~ite argumente polumjer i omjer, ali ne i argumente
boja, po~etak i kraj, morate dodati ~etiri zareza za redom kako bi nazna~ili da preska-
~ete tri argumenta:
Circle (1000, 1000), 500, , 2
Argument omjer odre|uje omjer okomite prema vodoravnoj dimenziji. Ovdje je omjer
pozitivan broj s plivaju}im zarezom. To zna~i da mo`ete odrediti cjelobrojne ili razlo-
ma~ke vrijednosti, ali ne i negativne vrijednosti. Velike vrijednosti omjera proizvode
elipse razvu~ene po okomitoj osi, dok male vrijednosti omjera proizvode elipse razvu-
~ene po vodoravnoj osi. Budu}i da elipsa ima dva polumjera – jedan vodoravan x-
polumjer i jedan okomit y-polumjer – Visual Basic pridru`uje jedini argument polum-
jer naredbe Circle du`oj osi. Ako je omjer manji od jedan, polumjer je x-polumjer; ako
je omjer ve}i ili jednak jedan, polumjer je y-polumjer.
Napomena Argument omjer uvijek odre|uje omjer izme|u okomite i vodoravne
dimenzije u granicama stvarne fizi~ke udaljenosti. Kako bi osigurao da se to doga|a
(~ak i kad upotrebljavate korisni~ko mjerilo), polumjer je odre|en u granicama
vodoravnih jedinica.
Sljede}i potprogram pokazuje kako razli~ite vrijednosti omjera odre|uju ho}e li nared-
ba Circle upotrijebiti argument polumjer kao x-polumjer ili y-polumjer elipse:
Private Sub Form_Click()
‘ Crtanje popunjene elipse.
FillStyle = 0
Circle (600, 1000), 800, , 3
‘ Crtanje prazne elipse.
FillStyle = 1
Circle (1800, 1000), 800, , 1 / 3
End Sub
Slika 12.19 prikazuje tri kontrole lika s razli~itim vrijednostima svojstva BorderWidth.
Slika 12.19 U~inci mijenjanja svojstva BorderWidth
Mod crtanja Xor Pen (i ve}ina ostalih postavki svojstva DrawMode) radi uspore|uju}i
svaki pojedini piksel u uzorku crtanja (nazvan “Olovka” (Pen)) s pripadaju}im pikse-
lom u postoje}em podru~ju (nazvan “Odredi{te”). Na jednobojnim sustavima, piksel se
uklju~uje ili isklju~uje, a Visual Basic izvodi jednostavnu logi~ku operaciju: uklju~uje
piksel ako je uklju~en piksel olovke ili odredi{ta, ali ne ako su oba uklju~ena.
Rad s bojama
Visual Basic upotrebljava dosljedan sustav za sva svojstva boje i grafi~ke postupke.
Boja je predstavljena cijelim brojem tipa Long, i ta vrijednost ima isto zna~enje u svim
sklopovima koji odre|uju boju.
Ovaj odlomak raspravlja kako upotrebljavati funkcije RGB i QBColor kao jednostavne
na~ine odre|ivanja boje. Pogledajte “Kori{tenje svojstava boje” kasnije u ovom po-
glavlju za informacije o kori{tenju konstanti za odre|ivanje boje ili o izravnom unosu
vrijednosti boje.
Odre|ivanje boja
Svojstva boje mogu upotrijebiti svaki od nekoliko postupaka za odre|ivanje vrijednosti
boje. Funkcija RGB opisana u odlomku “Rad s bojama”, ranije u ovom poglavlju, je
jedan na~in odre|ivanja boja. Ovaj dio raspravlja dva daljnja na~ina odre|ivanja boja:
• Kori{tenje definiranih konstanti
• Kori{tenje izravnih postavki boje
Kori{tenje definiranih konstanti
Ne trebate razumjeti kako se stvaraju vrijednosti boja ako upotrijebite ugra|ene kon-
stante ispisane u pretra`iva~u objekata. Kao dodatak, ugra|ene konstante ne trebaju
biti prethodno odre|ene. Na primjer, mo`ete upotrijebiti konstantu vbRed uvijek kad
`elite odrediti crveno kao argument boje ili postavku svojstva boje:
BackColor = vbRed
Palete boja
Palete boja pru`aju bazu za podr{ku 256 boja u aplikacijama Visual Basica. U ra-
spravljanju o paletama, va`no je razumjeti odnos izme|u razli~itih tipova palete.
Hardverska paleta sadr`i 256 unosa odre|uju}i stvarne RGB vrijednosti koje }e biti
prikazane na ekranu. Hardverska kopirana paleta (halftone palette) sadr`i unaprijed
odre|eni niz od 256 RGB vrijednosti na raspolaganju samim Windowsima. Logi~ka
paleta je skup do 256 RGB vrijednosti sadr`anih unutar bitmapirane ili slike druga-
~ijeg tipa.
Windowsi mogu crtati koriste}i 256 boja u hardverskoj paleti. Dvadeset od tih 256
boja, nazivane stati~ke boje, rezervirane su od sustava i ne mogu biti promijenjene od
aplikacije. Stati~ke boje uklju~uju 16 boja u standardnoj VGA paleti (iste kao i boje
odre|ene funkcijom QBColor Visual Basica), uz ~etiri dodatne nijanse sive. Sistemska
kopirana paleta uvijek sadr`i te stati~ke boje.
Prozor prednjeg plana (prozor s fokusom) odre|uje 236 nestati~kih boja u hardverskoj
paleti. Svaki put kad se promijeni hardverska paleta, svi prozori u pozadini ponovno se
iscrtavaju kori{tenjem tih boja. Ako boje u logi~koj paleti pozadinskog prozora pot-
puno ne odgovaraju bojama koje su trenutno u hardverskoj paleti, Windowsi }e dodi-
jeliti najbli`i par.
prikaz
Iako je podrazumijevana paleta Visual Basica sistemska kopirana paleta, prikaz boja
mo`ete tako|er nadzirati svojstvima PalleteMode i Pallete formi, korisni~kih kontrola i
korisni~kih dokumenata. U tom slu~aju, uskla|ivanje boja je isto, osim {to }e te boje
biti uskla|ene s najsli~nijom bojom u hardverskoj paleti.
Svojstvo PaletteMode
Kad oblikujete aplikacije koje se mogu izvoditi na sustavima s 256 boja, mo`ete nadzi-
rati na~in kojim Windowsi odabiru kontrole prikaza odre|ivanjem svojstva
PaletteMode forme, korisni~ke kontrole ili korisni~kog dokumenta (korisni~ke kontrole
i korisni~ki dokumenti dostupni su samo u verzijama Professional i Enterprise). Sve
kontrole sadr`ane na formi, korisni~koj kontroli ili korisni~kom dokumentu bit }e
prikazane temeljeno na svojstvu PaletteMode. Sljede}a tablica prikazuje raspolo`ive
postavke svojstva PaletteMode:
mod konstanta primjena za
Halftone vbPaletteModeHalftone forme, korisni~ke kontrole, korisni~ki dokumenti
UseZOrder vbPaletteModeUseZOrder forme, korisni~ke kontrole, korisni~ki dokumenti
Custom vbPaletteModeCustom forme, korisni~ke kontrole, korisni~ki dokumenti
Container vbPaletteModeContainer korisni~ke kontrole
None vbPaletteModeNone korisni~ke kontrole
Object vbPaletteModeObject activeX kreatori koji sadr`e paletu
Alternativno, mo`ete upotrijebiti objekt tipa Picture za postizanje istog u~inka bez
dodatne kontrole slike:
Dim objPic As Picture
Set objPic = LoadPicture(App.Path & “\Pastela.bmp”)
‘ Dodjela palete objekta slike formi.
Form1.Palette = objPic
‘ Kori{tenje moda Custom
Form1.PaletteMode = vbPaletteModeCustom
Postavka Custom svojstva PaletteMode je va{ najbolji izbor ako `elite odr`avati jedin-
stvenu paletu kroz svoju aplikaciju.
Napomena Kori{tenje postavke Custom svojstva PaletteMode mo`e tako|er po-
bolj{ati izvo|enje va{e aplikacije u slu~ajevima kad ne koristite nikakve slike sa
256 boja. Ako postavite svojstvo PaletteMode forme na Custom i ostavite svojstvo
Palette prazno, va{a forma }e se u~itavati br`e jer se ne pojavljuje slaganje paleta.
Za vi{e informacija Kako bi nau~ili vi{e o objektu tipa Picture, pogledajte
“Kori{tenje objekta tipa Picture”, kasnije u ovom poglavlju.
Objekt tipa Picture podr`ava bitmapirane slike, slike tipa GIF, slike tipa JPEG,
metadatoteke i ikone.
Ispis
Ispis je jedan od najslo`enijih zadataka koje izvode aplikacije temeljene na Win-
dowsima. Dobri rezultati ovise o zajedni~kom radu svih dijelova procesa. Slabi rezul-
tati mogu iza}i iz problema u va{oj aplikaciji, razlikama u pogoniteljima pisa~a, ili
ograni~enim sposobnostima pisa~a. Iako je dobra ideja ispitati svoju aplikaciju sa uobi-
~ajeno kori{tenim pisa~ima te pogoniteljima pisa~a, ne mo`ete ispitati sve mogu}e
kombinacije koje mogu imati korisnici.
Ispis iz va{e aplikacije sadr`ava ova tri dijela:
• Programski kod u va{oj aplikaciji koji po~inje proces tiskanja.
• Pogonitelji pisa~a instalirani i na va{ sustav i na sustav korisnika va{e aplikacije.
• Sposobnosti pisa~a dostupnih korisnicima va{e aplikacije.
Programski kod u va{oj aplikaciji odre|uje tip i kvalitetu izlaznih rezultata tiskanja
dostupnih iz va{e aplikacije. Na kvalitetu ispisa tako|er mogu utjecati pogonitelji
pisa~a i pisa~i korisnika. Ovaj dio bavi se omogu}avanjem ispisa iz aplikacije Visual
Basica. Za informacije o ispisu iz razvojnog okru`enja Visual Basica, pogledajte “Ispis
informacija u prozoru za trenutan upis naredbi” u 13. poglavlju “Tra`enje i obrada
pogre{aka”.
Ispis iz aplikacije
Visual Basic pru`a tri tehnike za ispis teksta i grafike.
• Mo`ete proizvesti izlazne rezultate koje `elite na formi te zatim ispisati formu
kori{tenjem postupka PrintForm.
• Mo`ete poslati tekst i grafiku pisa~u odre|ivanjem standardnog pisa~a iz ~lanova
zbirke Printers.
• Mo`ete poslati tekst i grafiku objektu tipa Printer te ih zatim tiskati kori{tenjem
postupaka NewPage i EndDoc.
Sljede}i odlomci istra`uju prednosti i mane ova tri pristupa.
Neovisno o tome koji postupak tiskanja upotrebljavate, svi izlazni rezultati za ispis iz
aplikacije Visual Basica usmjereni su objektu tipa Printer, kojeg po~etno predstavlja
podrazumijevani pisa~ odre|en u kontrolnom panelu Windowsa. Unato~ tome, kao
podrazumijevani pisa~ mo`ete odrediti bilo koji pisa~ u zbirci Printers.
Kako bi odabrali pisa~ iz zbirke, upotrijebite sljede}u sintaksu:
Set Printer = Printers(n)
Sljede}i izrazi ispisuju imena ure|aja svih pisa~a na operativnom sustavu u prozor za
trenutan upis naredbi:
Private Sub Command1_Click()
Dim x As Printer
For Each x In Printers
Debug.Print x.DeviceName
Next
End Sub
Vrijednosti kvalitete ispisa kre}u se u opsegu od -4 do -1, ili mogu biti pozitivan cijeli
broj koji odgovara razlu~ivosti tiskanja u to~kama po in~u (dots per inch, DPI). Na
primjer, sljede}i kod }e postaviti razlu~ivost pisa~a na 300 DPI:
Printer.PrintQuality = 300
Svojstva mjerila
Objekt tipa Printer ima ova svojstva mjerila:
• ScaleMode
• ScaleLeft i ScaleTop
• ScaleWidth i ScaleHeight
• Zoom
Svojstva ScaleLeft i ScaleTop odre|uju x i y koordinate, gornjeg lijevog kuta ispisane
stranice. Promjenom vrijednosti svojstava ScaleLeft i ScaleTop, mo`ete stvoriti lijeve i
gornje margine na ispisanoj stranici. Na primjer, mo`ete upotrijebiti svojstva ScaleLeft
i ScaleTop za centriranje tiskane forme (PFrm) na stranici kori{tenjem ovih izraza:
Printer.ScaleLeft = -((Printer.Width – PFrm.Width) / 2)
Printer.ScaleTop = -((Printer.Height – PFrm.Height) / 2)
Ve}ina pisa~a podr`ava svojstvo Zoom. Ovo svojstvo odre|uje postotak veli~ine u ko-
joj }e izlazni rezultat biti ispisan. Podrazumijevana vrijednost svojstva Zoom je 100,
{to nazna~uje da }e izlazni rezultat biti tiskan sa 100 posto svoje veli~ine (u stvarnoj
veli~ini). Svojstvo Zoom mo`ete upotrijebiti za stvaranje stranice koju tiskate manjom
ili ve}om od stvarne veli~ine papira. Na primjer, postavljanjem svojstva Zoom na 50
va{a tiskana stranica }e biti velika pola {irine i pola duljine stranice papira. Sljede}a
sintaksa postavlja svojstvo Zoom na polovicu veli~ine podrazumijevanog objekta
Printer:
Printer.Zoom = 50
Napomena Visual Basic automatski poziva postupak EndDoc ako va{a aplikacija
zavr{i a da ga izri~ito ne pozove.
Opoziv ispisa
Mo`ete zavr{iti trenutan posao ispisa upotrebom postupka KillDoc. Na primjer, kori-
sniku mo`ete dijalo{kim okvirom postaviti upit da odlu~i `eli li dokument ispisati ili
zavr{iti ispis:
Sub TiskajIliNe()
Printer.Print “Ovo je prva linija za _
pokazivanje postupka KillDoc”
Printer.Print “Ovo je druga linija za _
pokazivanje postupka KillDoc”
Printer.Print “Ovo je tre}a linija za _
pokazivanje postupka KillDoc”
Ako upravitelj ispisom, Printer Manager, operativnog sustava rukovodi poslom ispisa,
postupak KillDoc bri{e cijeli posao koji ste poslali pisa~u. Me|utim, ako upravitelj
ispisom ne nadzire posao ispisa, prva stranica je mo`da ve} poslana pisa~u, i postupak
KillDoc na nju ne}e imati utjecaja. Koli~ina podataka poslanih pisa~u neznatno se
mijenja ovisno o pogoniteljima pisa~a.
Napomena Ne mo`ete upotrijebiti postupak KillDoc za zavr{avanje posla ispisa
koji je pokrenut postupkom PrintForm.