Etusivu Aloitus Kontrollit Metodit Muuttujat Ohjausrakenteet Silmukat Matematiikka Debuggaus Virheenkäsittely Vuorovaikutus Valikot Tiedostonkäsittely Ikkunat Leikepöytä Drag and Drop Tiedostopäätteet Linkkejä Harjoitukset
Esimerkkikuvassa ohjelma informoi käyttäjälle, että levytila on lopussa.
Esimerkkikuvassa ohjelma kysyy käyttäjältä haluaako hän yrittää tallennusta uudestaan.
Kuten kahdesta esimerkistä huomasit, viestilaatikkoa voidaan käyttää hyvin eri tavoilla. Alla on esitelty lyhyesti miten voit käyttää viestilaatikkoa erityyppisten viestien esittämiseen:
MsgBox(viesti[, painikkeet] [, otsikko] [, ohjetiedosto, konteksti])
Viestilaatikolla on yksi pakollinen parameteri: viesti. Loput parametrit ovat vapaaehtoisia. Viesti on teksti, joka näkyy käyttäjälle viestilaatikossa. Esim. yllä olevissa esimerkeissä teksti on "Levytila on lopussa!" ja "Tiedon tallennus epäonnistui, haluatko yrittää uudestaan".
"painikkeet" -parametri määrittää neljä asiaa: näytettävä(n/t) painikkee(n/t), ikonin tyypin, oletuspainikkeen ja viestilaatikon modaalisuuden (eli onko viestilaatikko "muiden päällä"). Painikkeita on useita erilaisia, voit näyttää viestilaatikon pelkästään OK -painikkeella tai useammallakin. Alla on listattu painikevakiot ja niiden selitteet:
Painikevakio | Selite |
---|---|
vbOKOnly | Näyttää pelkästään OK -painikkeen |
vbOKCancel | Näyttää OK ja Cancel -painikkeet |
vbAbortRetryIgnore | Näyttää Abort, Retry ja Ignore -painikkeet |
vbYesNoCancel | Näyttää Yes, No ja Cancel -painikkeet |
vbYesNo | Näyttää Yes ja No -painikkeet |
Painikevakioon voidaan yhdistää ikoni (eli kuvake) joka "kertoo" minkätyyppisestä viestistä on kyse. Jos kerrot yleisen viestin, voit käyttää informaatiokuvaketta, kriittisessä tilanteessa (esim. virhe) voit käyttää kriittistä kuvaketta, jne. Alla listaus erityyppistä ikoneista:
Ikonivakio | Selite |
---|---|
vbCritical | Näytä "kriittinen tilanne" -ikoni |
vbQuestion | Näytä "kysymys" -ikoni |
vbExclamation | Näytä "varoitus" -ikoni |
vbInformation | Näytä "informaatio" -ikoni |
Lisäksi on mahdollista määritellä (samaan painikkeet -parametriin) mikä näytettävistä painikkeista on ns. oletuspainike. Käytännössä se tarkoittaa sitä, että jos painat Enter -näppäintä, tarkoittaa se samaa kuin napsauttaisit hiirellä painiketta joka on määritelty oletuspainikkeeksi.
Oletuspainikevakio | Selite |
---|---|
vbDefaultButton1 | 1. painike on oletuspainike |
vbDefaultButton2 | 2. painike on oletuspainike |
vbDefaultButton3 | 3. painike on oletuspainike |
vbDefaultButton4 | 4. painike on oletuspainike |
Ja kaiken tämän päälle voit määritellä vielä modaalisuuden eli kuinka "kauas" viestilaatikko vaikuttaa. Jos valitset esim. ohjelmatason modaalisuuden, käyttäjän tulee painaa viestilaatikkoa jotta ohjelman suoritus jatkuisi. Systeemitason modaalisuus estää järjestelmän muiden ohjelmien toiminnan kunnes käyttäjä painaa painiketta.
Viestilaatikon modaalisuusvakio | Selite |
---|---|
vbApplicationModal | |
vbSystemModal |
Muita vakioita | Selite |
---|---|
vbMsgBoxHelpButton | Lisää ohjepainikkeen viestilaatikkoon (vaatii kontekstitunnisteen) |
vbMsgBoxSetForeground | Määrittää viestilaatikon etualalla olevan ikkunan mukaiseksi |
vbMsgBoxRight | Määrittää viestilaatikon tekstin tasattavaksi oikeaan reunaan |
vbMsgBoxRtlReading | Teksti luetaan oikealta vasemmalle |
Miten painikevakio sitten kirjoitetaan? Jokaisesta taulukosta voit ottaa halutessasi yhden vakion jonka summaat yhteen edellisten kanssa. Seuraavassa esimerkissä luomme viestilaatikon, joka jossa on kaksi painiketta (Yes ja No), ikonina kysymysmerkki, oletuspainike on "kakkospainike" eli No -painike, viestilaatikko on järjestelmätason modaalinen ja teksti sijoitetaan oikeaan reunaan:
MsgBox "Levytila on lopussa! Uudestaan?", vbYesNo + vbQuestion + vbDefaultButton2 + vbSystemModal + vbMsgBoxRight, "Testataan viestilaatikkoa"
Seuraava parametri on otsikko, tämä on viestilaatikon otsikko, sen tulisi tietysti kertoa lyhyesti ja ytimekkäästi mikä em. viestilaatikon "idea" on.
Ohjetiedosto ja konteksti kuuluvat yhteen, molemmat on oltava. Jos määrität viestilaatikkoon lisättäväksi ohjetiedostopainikkeen, tätä napsauttamalla avautuu määritelty ohjetiedosto. Konteksti määrittää ohjeaiheen joka avautuu ohjepainiketta painettaessa.
Viestilaatikolla on muutama paluuarvo riippuen painikkeesta jota käyttäjä on painanut. Voit selvittää mitä painiketta käyttäjä on painanut vertaamalla paluuarvoa seuraavaksi esiteltäviin vakioihin:
Paluuarvovakio | Selite |
---|---|
vbOK | Käyttäjä valitsi OK -painikkeen |
vbCancel | Käyttäjä valitsi Cancel -painikkeen |
vbAbort | Käyttäjä valitsi Abort -painikkeen |
vbRetry | Käyttäjä valitsi Retry -painikkeen |
vbIgnore | Käyttäjä valitsi Ignore -painikkeen |
vbYes | Käyttäjä valitsi Yes -painikkeen |
vbNo | Käyttäjä valitsi No -painikkeen |
Alla on esitetty ohjelma, joka esittää käyttäjälle vaihtoehdon jonka mukaan sitten toimitaan:
Dim Paluuarvo As VbMsgBoxResult tallennaTiedosto: ' Tässä MUKA tallennetaan tiedostoa, toimenpide epäonnistuu ' levytilan puutteen vuoksi. Paluuarvo = MsgBox("Levytila on lopussa! Uudestaan?", vbYesNo + vbQuestion + vbDefaultButton2 + vbSystemModal + vbMsgBoxRight, "Testataan viestilaatikkoa") Select Case Paluuarvo Case VbMsgBoxResult.vbYes GoTo tallennaTiedosto Case VbMsgBoxResult.vbNo MsgBox "Tiedoston tallennus epäonnistui!", vbCritical End SelectAluksi määrittelemme muuttujan, johon otamme paluuarvon talteen. Muuttuja voi olla VbMsgBoxResult -tyyppinen tai ihan "normaali" Long -tyyppinen muuttuja, paluuarvo on kuitenkin vain numeroarvo. Seuraavaksi esitämme viestilaatikon, käyttäjän antama vastaus (eli painike jota käyttäjä napsauttaa) tallennetaan Paluuarvo -muuttujaan. Seuraavaksi vertailemme Select Case -lauseella mikä painikkeista on valittu. Toinen tapa verrata olisi tietty vertaaminen suoraan numeroarvoihin mutta tämä on ehkä liian "kryptistä". Vakioiden käyttäminen taasen kommentoi koodia ja helpottaa näin sen lukemista myöhemmin.
InputBox(viesti[, otsikko][, oletus][, x][, y][, ohjetiedosto, konteksti])
Kuten ehkä huomasit, syntaksi on lähes yksi yhteen viestilaatikon kanssa. Kysymyslaatikossa tarvitsemme myös viestin, joka esitetään käyttäjälle, esim. "Syötä ikäsi". Otsikko taasen kertoo käyttäjälle mikä tämän viestilaatikon tarkoitus onkaan. "oletus" -kenttään voit antaa ns. oletusvastauksen, eli jos käyttäjälle kelpaa oletusvastaus, ei hänen tarvitse muuta kuin painaa OK -painiketta. "x" ja "y" -parametreja käytetään määrittämään kysymyslaatikon sijainti vasemmasta yläkulmait ovat kuten viestilaatikossa. Seuraavassa esimerkissämme on esitelty viestilaatikko, joka kysyy käyttäjän nimen:
InputBox "Syötä nimesi, kiitos", "Nimen syöttäminen", "Teppo Testaaja"
Edellinen esimerkki on selkeä, kysymyslaatikon varsinaisessa viestiosassa on teksti "Syötä nimesi, kiitos". Otsikossa lukee "Nimen syöttäminen" ja oletusvastaus on "Teppo Testaaja". Esimerkissämme on se puutteellisuus, että käyttäjän syöttämää nimeä ei tallenneta mihinkään eli viestilaatikon paluuarvoa ei oteta talteen. Korjaamme virheen seuraavassa esimerkissä:
Dim Paluuarvo As String Paluuarvo = InputBox("Syötä nimesi, kiitos", "Nimen syöttäminen", "Teppo Testaaja") MsgBox "Hei '" & Paluuarvo & "'!", vbInformationKun tarkastelemme esimerkkiä, huomaamme, että olemme ensin määrittäneet Paluuarvo -nimisen (String -tyyppisen) -muuttujan. Muista, että kysyit mitä tahansa tietoa kysymyslaatikkoa käyttäen (esim. käyttäjän ikää), paluuarvo on aina tekstityyppistä! Seuraavaksi esitämme kysymyslaatikon jonka paluuarvo eli käyttäjän vastaus tallennetaan Paluuarvo -muuttujaan. Lopuksi tulostamme tekstin "Hei 'nnnn'!", missä nnnn on käyttäjän syöttämä nimi.
Huom! Jos käyttäjä painaa OK -painiketta, palautetaan käyttäjän vastaus. Muussa tapauksessa palautetaan tyhjää.
Voit käyttää kontrollia asettamalla sen ensin lomakkeelle ja kutsumalla kontrollin metodeja ShowOpen, ShowSave, ShowColor, ShowFont ja ShowHelp. Lisäksi kontrollilla on muutama tärkeä ominaisuus kuten CancelError, Filter ja FileName. Esittelemme ensin metodit ja sitten ominaisuudet.
Metodi | Selite |
---|---|
ShowOpen | Näyttää Avaa -ikkunan (eli käyttäjä valitsee ladattavan tiedoston tms.) |
ShowSave | Näyttää Tallenna -ikkunan (eli käyttäjä valitsee tallennettavan tiedoston nimen tms.) |
ShowColor | Näyttää värinvalintaikkunan |
ShowFont | Näyttää fontinvalintaikkunan |
ShowHelp | Suorittaa PegHelp -ohjelman ja näyttää käyttäjän määrittämän ohjetiedoston |
Ennen ja jälkeen jonkin edellisistä metodikutsuista on hyvä määritellä ja lukea joidenkin ominaisuuksien arvoja. Hyvä esimerkki on tiedoston avaaminen (ShowOpen). Ennen Avaa -ikkunan näyttämistä on ehkä hyvä määritellä näytettävät tiedostopäätteet ja tietysti avaamisen jälkeen on hyvä tutkia mikä tiedosto on valittu tai valittiinko sitä ollenkaan.
Ominaisuus | Selite |
---|---|
CancelError | Jos em. ominaisuus on asetettu ja käyttäjä painaa Cancel -painiketta, syntyy virhe numerolla 32755. Tällä on kätevä selvittä painoiko käyttäjä Cancel -painiketta. |
Color | Tällä voit asettaa värin tai lukea käyttäjän valitseman värin numeron |
DefaultExt | Tällä voit asettaa tai lukea vakiotiedostopäätteen. Käytännössä se tarkoittaa sitä, että jos käyttäjä haluaa esim. tallentaa tiedoston eikä syötä tiedostopäätettä, lisää kontrolli tällöin tiedostonimen perään tässä mainitun päätteen (esim. txt) |
DialogTitle | Määrittää ikkunan otsikon |
FileName | Asettaa tai lukee tiedostonimen. Jos haluat antaa jonkun oletustiedostonimen suoraan, käytä tätä ominaisuutta. Kun käyttäjä valitsee haluamansa (tai oletuksena annetun) tiedostonimen, voit lukea sen tästä ominaisuudesta. Huomaa, että käyttäjän valittua tiedoston sisältää tämä ominaisuus myös tiedostopolun! Toki voit asettaa myös oletuspolunkin pelkän tiedostonimen sijasta mutta ole varovainen, entäpä jos em. polkua ei olekaan? |
FileTitle | Palauttaa valitun tiedostonimen ILMAN polkua. |
Filter | Tämän ominaisuuden asettamalla voit suodattaa näytettäväksi tietyntyyppisiä tiedostoja. Ominaisuus asetetaan seuraavasti: selite|suodatin|selite|suodatin ilman välilyöntejä. Esimerkissä on tehty suodatin, joka näyttää pelkästään txt, doc ja bmp -tiedostot: Tekstitiedostot (*.txt)|*.txt|Word dokumentit|*.doc|Kuvatiedosto|*.bmp |
FilterIndex | Ominaisuus määrittää mikä edellä määritellyistä suodattimista näytetään oletuksena. Huomaa, että ensimmäisen suodattimen indeksinumero on 1. |
Flags | "Lippu" -ominaisus määrittää miten avattava ikkuna esitetään, yms. Liput on selitetty tarkemmin VB:n ohjeissa (hakusana CommonDialog Control) |
Max, Min | Määrittää suurimman ja pienimmän esitettävän fonttikoon |
MaxFileSize | Määrittää suurimman tiedostokoon jonka voi valita, alue on 1-32 kilotavua. |
Mitä CommonDialog -kontrollilla sitten käytännössä tehdään? Yleisimpiä käytön kohteita on avattavan tiedoston valinta, tallennettavan tiedoston valinta, käytettävän värin valinta ja käytettävän fontin valinta. Seuraavassa esimerkissä pyydämme käyttäjää valitsemaan tallennettavan tiedoston:
On Error GoTo Virhekasittely CommonDialog1.CancelError = True CommonDialog1.DialogTitle = "Esimerkki" CommonDialog1.Filter = "Kaikki tiedostot|*.*|Tekstitiedostot (*.txt)|*.txt|Word dokumentit|*.doc|Kuvatiedosto|*.bmp" CommonDialog1.FilterIndex = 3 CommonDialog1.FileName = "Oletustiedosto" CommonDialog1.DefaultExt = "txt" CommonDialog1.ShowSave MsgBox "Valitsit tallennettavaksi tiedostonimeksi: " & CommonDialog1.FileTitle Exit Sub Virhekasittely: MsgBox "Tiedostoa ei tallennettu!", vbOKOnlyEnsimmäisellä rivillä asetamme virhekäsittelyn päälle eli jos syntyy virhe, hypätään virhekäsittelyyn. Toisella rivillä asetamme CommonDialog:in CancelError -ominaisuuden, eli jos käyttäjä painaa Cancel -painiketta, hyppää ohjelmakoodin suoritus virhekäsittelyyn. Sitten määritämme ikkunan otsikon, suodattimen, määritämme oletussuodattimen sekä oletustiedostonimen ja päätteen (joka on voimassa jos suodattimeksi on valittu *.* tai suodattimia ei ole ollenkaan käytössä). Lopuksi kutsumme itse Tallenna -ikkunan avaavaa metodia (ShowSave). Jos käyttäjä valitsee tiedostonimen, tulostamme sen, muussa tapauksessa hyppäämme virhekäsittelyyn.