Dokumentit, näkymät ja kehykset

Koko: px
Aloita esitys sivulta:

Download "Dokumentit, näkymät ja kehykset"

Transkriptio

1 OSA III 249 LUKU LUKU Single document interface sovelluksen luominen MFC:n dokumentti-näkymä rakennetta hyödyntävän sovelluksen kehittäminen Dokumentti-, näkymä-, kehys- ja dokumenttimalliluokat Lisäalkioiden lisääminen vakiovalikkoon

2 250 Mitä dokumentti oikein tarkoittaa? Ensimmäinen dokumentti/näkymä -arkkitehtuuria käyttävä sovellus oli MS Word -tekstinkäsittelyohjelma. Dokumentti-termin (tai Asiakirjan) ei tarvitse rajoittua tähän perinteiseen määrittelyyn. Document-luokassa voi olla mitä tahansa tietoa, jolloin dokumentti/näkymä -arkkitehtuuria voidaan soveltaa mitä erilaisimpiin sovelluksiin. Sovelluksen osat Auton tuotekehitykseen uhratut miljardit ovat saaneet aikaan autoihin varsin vakiintuneen käyttäjäliittymän. Tästä syystä voit siirtyä autosta toiseen ja olet tien päällä minuuteissa. Kun ajamisen perustaidot on kerran hankittu, niiden käyttö uudessa, melkein samanlaisin, korkeintaan ulkonäöltään poikkeavin, hallintalaittein varustetussa autossa. Windows-sovellusten suosio perustuu myös paljon yhtenäisen ulkoasun konseptiin. Tyypillisessä Windows-sovelluksessa on ylinnä otsikkopalkki, jonka alla ovat valikkorivi ja mahdolliset työkalurivit toimien pikavalintoina valikon komentoihin. Työkalurivien alla on ohjelman varsinainen näyttöalue ja aivan alimmaisena on vielä tilarivi. Vaikka sovellukset kuinka poikkeaisivat toisistaan, on niissä yleensä tietyt samat valikon komennot ja työkalurivin painikkeet. Tämä on mahdollistanut siirtymisen tekstinkäsittelyohjelmasta sähköpostin käyttöön muutaman minuutin opiskelulla. Visual C++ -ohjelmoijalla näiden Windows-standardien noudattaminen käy varsin vaivattomasti. MFC-kirjasto tarjoaa valtavan määrän apua jo sovelluksen luomisessa: AppWizard osaa lisätä sovellukseen automaattisesti valikon, työkalurivit, tilarivin ja muita komponentteja. Luomisen jälkeen näitä sovelluksen osia voidaan sitten vielä muokata lisää. AppWizardin luomat luokat toimivat yhdessä muodostaen MFC:lle ominaisen dokumentti/näkymä arkkitehtuurin. Dokumentti/näkymä arkkitehtuurin perusajatus on erottaa sovelluksen data sen esittämisestä käyttäjälle. Tämä saavutetaan eristämällä sovelluksen data omaan luokkaansa (dokumenttiin) ja esittämällä sen perusteella tietoja käyttäjälle toisen luokan kautta (näkymä, view). MFC-kirjaston tarjoama kokonaisuus on paljon muutakin kuin tämä sovellusrunko. Siihen kuuluu useita käyttäjäliittymäominaisuuksia sekä keinot tallettaa ja lukea tietoja tiedostoista. Dokumentti/näkymä arkkitehtuuri jakaantuu kahteen erilaiseen toteutukseen SDI, yksi dokumenttirajapinta ja MDI, monidokumenttirajapinta. Tässä luvussa keskitymme SDI:hin. KATSO MYÖS Lisätietoja MDI-sovelluksista luvussa 21. SDI-sovelluksen luominen Tyypillisen Windows-sovelluksen luominen tuttuine näkyvine ominaisuuksineen, kuten työkalurivit ja tilarivi, saattaisi olla varsin

3 haastavaa, ellei käytössä olisi AppWizardin kaltaista työkalua. AppWizard menee itse asiassa vielä perusasioita pidemmälle saat siihen valinnaisesti lisäominaisuuksia. Eräs näistä on mahdollisuus tietokantaliittymän tekemiseen, toinen sähköpostitoimintojen liittäminen sovellukseen. Tässä luvussa teet SDI-sovelluksen, jonka avulla tutkimme luotuja luokkia sekä dokumentti/näkymä arkkitehtuurin toimintaa. Luo siis aluksi projekti nimeltä SDICoin. OSA III LUKU SDI-sovelluksen luominen AppWizardilla 1. Valitse File-valikosta New. Valitse sitten New project valintaikkunassa Projects-välilehdeltä MFC AppWizard (exe). 2. Anna projektille nimi (tässä SDICoin) ja napauta OK. 3. Valitse MFC AppWizard Step1 ikkunassa Single Document valintapainike ja varmista, että Document/View Architecture Support? on valittuna (kuva 12.1). Napauta Next-painiketta. KUVA 12.1 AppWizard, vaihe Valitse Step 2 ikkunassa None-valintapainike. Tällä sivulla voisit halutessasi liittää sovellukseen tietokantatukea, mutta juuri nyt emme sitä tarvitse. Napauta siis Next-painiketta. 5. Valitse Step 3 ikkunassa None-valintapainike ja rastita ActiveX Controls valintaruutu. Ikkunan muut valinnat liittyvät tässä esimerkissä tarpeettomiin OLE-automaatio-ominaisuuksiin. Napauta Next. 6. Rastita Step 4 ikkunassa seuraavat valinnat: Docking Toolbar, Initial Status Bar, Printing and Print Preview ja 3D

4 252 Sovelluksen osat Controls. Valitse työkalurivin tyyli Normal-valintapainikkeella. Tarkista asetukset vielä kuvasta Napauta Next. KUVA 12.2 AppWizard, vaihe Valitse Step 5 ikkunassa projektin tyyliksi MFC Standard, hyväksy englanninkieliset kommentit lähdekoodiin Yes-valinnalla ja valitse MFC-kirjasto käytettäväksi As a Shared DLL tyyliin. Napauta sitten Next. 8. Napauta Step 6 ikkunassa Finish. Saat esiin kuvan 12.3 mukaisen New Project Information -ikkunan. Tässä ikkunassa on tietoja luoduista luokista ja lähdekooditiedostojen nimistä. Voit myös tarkistaa, mitkä ominaisuudet sovellukseen otettiin. Napauta OK. Nyt uuden projektin pitäisi olla valmis ja avattuna Developer Studiossa. KUVA 12.3 New Project Information valintaikkuna.

5 OSA III LUKU Tulet esittämään valmiissa sovelluksessa kolikkopinon. Valikosta voit valita kolikon lisättäväksi tai poistettavaksi pinosta. Sovelluksen tiedot, tässä siis vain kolikoiden lukumäärä, pidetään dokumenttiluokassa ja niitä käsitellään näkymäluokan kautta tarkoituksena on näyttää kolikkopino. Vaikka tämä on varsin yksinkertainen esimerkki, osannet sen jälkeen antaa arvoa dokumentti/näkymä arkkitehtuurin perustavoitteelle, joka on tiedon paketointi (encapsulation). Paketoituna sovelluksen tiedot talletetaan ainoastaan dokumenttiluokkaan ja luokka tarjoaa tiedon käsittelyyn omat saantifunktionsa, jotta näkymäluokka (view) voi esittää tiedot käyttäjälle sopivassa muodossa. Esimerkiksi kolikkopinokuvan esittämisen sijaan näkymäluokka voi esittää tiedon kolikoiden määrästä pelkkänä numerona, eikä dokumenttiluokkaan tarvitse tehdä tätä varten muutoksia. Ennen kuin käymme projektin paranteluun käsiksi, lienee tarpeen tutustua AppWizardin tekemiin luokkiin hieman tarkemmin. SDI-sovelluksessa on yksi dokumenttiluokka, joka on johdettu MFC:n CDocument-kantaluokasta sekä yksi näkymäluokka, joka voidaan johtaa jostain MFC:n näkymäluokasta. Eri näkymäluokat heijastelevat erityyppisten dokumentti/näkymä-arkkitehtuurin ympärille perustuvien sovellustyyppien eroa. AppWizardin vaiheessa 6 on valittu perusnäkymäluokka. Taulukossa 12.1 on esitetty valittavissa olevat luokat; SDICoin käyttää näistä oletusluokkaa CView. TAULUKKO 12.1 AppWizardista käytettävissä olevat näkymäkantaluokat Luokan nimi CView CScrollView CListView CTreeView CEditView Kuvaus Oletusluokka, joka toteuttaa kaikki näkymään tarvitta vat perusfunktiot, myös toiminnan dokumenttiluokan kanssa. CView-luokasta johdettu luokka, johon on lisätty vieritysmahdollisuus, kun näkymän looginen alue on käytettävissä olevaa fyysistä näyttöalaa suurempi. Käyttää näkymänä luettelokontrollia, jossa sovellus voi esittää kuvakkeita tai tekstisarakkeita. Käyttää näkymänä puukontrollia, jossa sovellus voi esittää tietoa hierarkkisessa muodossa. Käyttää näkymänä monirivistä tekstiruutua, jossa ovat mukana vierityspalkit sekä hakujen käyttömahdollisuus. Dokumentti paketoi sovelluksen tiedot Dokumenttiluokka on johdettu CDocument-kantaluokasta ja sen jäsenmuuttujissa pidetään sovelluksen tietoja. Johdetun CDocument-luokkasi jäsenfunktioilla päästää käsittelemään noita tietoja. Esimerkiksi Serialize()-funktiota käytetään tietojen lataamiseen levyltä ja tallentamiseen sinne.

6 254 Sovelluksen osat Luokan nimi Kuvaus CRichEditView Käyttää näkymänä rich edit -kontrollia, jossa tekstin muokkausmahdollisuudet ovat tekstiruutuakin paremmat. CFormView Käyttää näkymänä valintaikkunapohjaa, jolloin sovellus voi esittää tietonsa tietokantalomakkeena. CRecordView CFormView-luokasta johdettu näkymä, jota on parannettu mahdollisuudella kytkeytyä joukkoon tietokannan tietueita. Tämä luokka on käytettävissä vain, jos sovellusta luodessa on valittu käytettäväksi tietokantatukea. CHtmlView Auttaa luomaan webbiselainsovelluksia Internet Explorer näkymän avulla. KATSO MYÖS Lisätietoja CListView, CTreeView, CRichEditView ja CHtmlView-luokista luvusta 19. Tietoja CScrollView-luokasta luvusta 18. Tietoja CFormView- ja CRecordView-luokista luvusta 24. Lisätietoja tiedostokäsittelystä dokumentti/näkymä-arkkitehtuurissa luvusta 23. Lisätietoja tietokantatuen käyttämisestä luvusta 24. Tietoja OLE automaatiosta luvusta 25. SDI-sovelluksen luokat SDI-sovelluksen luokkarakenne poikkeaa valintaikkunasovelluksesta selvästi. Jos tutkit SDICoin-projektin ClassView-ikkunaa, huomaat AppWizardin luoneen neljä luokkaa käsittelemään sovelluksen rakennetta. Näiden luokkien sukulaisuussuhteet selviävät kuvasta 12.4.

7 OSA III LUKU KUVA 12.4 SDI-sovelluksen luokkahierarkia. CWinApp-kantaluokasta johdetulla CSDICoinApp-luokalla on useita rooleja ja sen toteutus poikkeaa valintaikkunaprojektin sovellusoliosta. Luokka hallitsee sovelluksen alustamista. Se vastaa liitynnästä dokumentti-, näkymä- ja kehysluokkien välillä. Se vastaanottaa myös Windowsin sanomat ja ohjaa ne edelleen oikeaan kohdeikkunaan. Kuten aiemmin todettiin, SDI-sovelluksessa luodaan ainoastaan yksi CDocument-luokasta johdetun CSDICoinDoc-luokan olio. Tämä luokka tulee toimimaan sovelluksen tietosäilönä. Sovelluksen tieto voi toki olla missä tahansa muodossa: kolikkoesimerkissämme ei tarvita muuta kuin kolikoiden lukumäärä, mutta usein sovelluksen tarvitsemat tiedot ovat huomattavasti mutkikkaampia. Tekstinkäsittelyohjelmassa sovelluksen tiedot koostuvat asiakirjan tekstisisällöstä sekä siihen kohdistetusta muotoilusta ja CAD-sovelluksessa käsiteltävän kuvan osien koordinaateista. CObject on hyvä kantaisä CObject on melkein kaikkien MFC-kirjaston luokkien kantaluokka. Kaikki CObjectluokasta johdetut luokat osaavat tarkistaa olion luokan ohjelman ajon aikana, tulostaa diagnostiikkatietoa ja tukea serialisointia.

8 256 Sovelluksen osat Tiedontallennustapa dokumenttiin on täysin sovelluksen ohjelmoijan käsissä. Ihanteellisin tapa olisi käyttää oliolähestymistapaa, jolloin itse tiedot ovat täysin erillään käyttöliittymästä. Tällä tavoin koodista saadaan mahdollisimman siirrettävä ja joustava. Kolikkoesimerkissä näkymiä on vain yksi, mutta joskus saatat tarvita niitä useita ja vieläpä saman dokumentin tietojen käsittelyyn. Elleivät näkymät ole samantyyppisiä, tulee dokumenttiluokkaan suunnitella tarkkaan, millaisena tieto näkymälle lähetetään. Kehysikkunan tyylien muokkaminen Voit muuttaa pääkehysikkunan tyylejä ennen sen piirtämistä korvaamalla PreCreateWindow()- funktion. Tälle funktiolle välitetään viittaus CREATESTRUCT-tietorakenteeseen, jossa styleattribuutti sijaitsee. Voit muuttaa sitä ennen tietorakenteen välittämistä edelleen kantaluokan versiolle funktiosta. CSDICoinView-luokka vastaa dokumentin tietojen näyttämisestä käyttäjälle sekä käyttäjän toimien välittämisestä dokumentin tietoihin. Kukin näkymä voi käsitellä vain yhtä dokumenttia, mutta yhdellä dokumentilla voi olla useita näkymiä. Näkymäluokka saa tietonsa dokumentista dokumenttiluokan jäsenfunktioilla. CMainFrame-luokka antaa sovelluksen käyttöön ikkunan. Luokka periytyy CFrameWnd-kantaluokasta, joka on yksinkertaisen ikkunan toiminnot paketoiva luokka. Oletuksena ikkunan tyylimäärittelyissä on mukana WS_OVERLAPPEDWINDOW, jolloin kehysikkuna saa otsikkopalkin painikkeineen, järjestelmävalikon ja mahdollisuuden tulla siirrettäväksi tai suurennettavaksi/pienennettäväksi käyttäjän toimesta. Kehysikkunan tyyleihin kuuluu myös FWS_ADDTOTITLE, jolloin ikkunaan ladatun dokumentin nimi tulee ikkunan otsikkopalkkiin. CMainFrameluokka osaa myös käsitellä työkalu- ja tilarivien luomisen, alustamisen ja tuhoamisen. KATSO MYÖS Lisätietoja SDI- ja MDI-luokkien eroista luvussa 21. SDI-sovelluksen näkyvät osat Kun AppWizardin ikkunassa Step 4 hyväksytään SDI-sovellusta luotaessa oletusasetukset, saadaan sovellus, jossa ikkunalla on otsikkopalkki painikkeineen, valikko tulostus- ja esikatselumahdollisuuksineen, työkalurivi sekä tilarivi. Kaikki näistä eivät suinkaan ole pakollisia; valinnat näkyvät tarkemmin kuvassa Lisää valintoja voidaan tehdä vaiheen 4 valintaikkunan Advancedpainiketta napauttamalla (kuva 12.5). Näillä voidaan räätälöidä vielä kehysikkunan tyyliä.

9 OSA III LUKU KUVA 12.5 AppWizardin vaiheen 4 lisäasetukset (Advanced Options). Kehysikkunan työalue ei tarkkaan ottaen toteuta sovelluksen näkymää. Näkymällä on aivan oma, reunaton ja valikoton kehysikkunan lapsiikkuna. Nämä näkymäikkuna korvaa kehysikkunan koko työalueen (kuva 12.6). Näkymä on toteutettu näin, jotta sama malli olisi hyödynnettävissä sekä SDI- että MDI-sovelluksissa, tosin MDI-sovelluksella on eri luokat kehys- ja lapsi-ikkunoille. Juuri kehysikkuna saa kehysikkuna- ja valikkosanomat Kehysikkunan sanomat Tiettyjä sanomia lähetetään ainoastaan kehystetyille ikkunoille. Näitä ovat koon muuttaminen, siirtäminen, ikkunan pienentäminen tai suurentaminen ja sovellusikkunan työalueen ulkopuolelle kohdistuvat sanomat. KUVA 12.6 SDI-sovelluksen näkyvät osat. 1 CMainFrame 2 CToolbar 3 CSDICoinView 4 CStatusBar 5 Näkymäikkuna 4 3 Ikkunan osat ovat siis seuraavat: CMainFrame. Periytyy CFrameWnd-luokasta ja tarjoaa sovellukselle kehysikkunan. CToolbar. Toteuttaa kehysikkunaan telakoidut työkalurivit. CSDICoinView. Toteuttaa näkymän kehysikkunan lapsiikkunana.

10 258 Sovelluksen osat CStatusBar. Tekee kehysikkunaan liitetyn tilarivin. Näkymäikkuna. Korvaa kehysikkunan työalueen. Mistä ihmeestä valikko ja työkalurivi sitten ilmestyivät? Nämä ovat AppWizardin sovellukseen tuomia resursseja. Jos tutkit projektisi ResourceView-sivua, löydät siitä neljä IDR_MAINFRAME-nimistä resurssia (pikavalintataulukko accelerator, kuvake icon, valikko menu ja työkalurivi toolbar). Pääset muokkaamaan näitä resursseja kaksoisnapauttamalla resurssin tunnusta. Mukana on myös erikoinen IDR_MAINFRAME-niminen merkkijonotaulukko (string table). Tämän taulukon merkkijono jakautuu seitsemään rivivaihdon (\n) erottamaan osaan. Kukin osista vastaa sovelluksen dokumentin tiettyä attribuuttia, ensimmäinen esimerkiksi sovelluksen ikkunan otsikkoa. SDI-dokumenttimallit Toistaiseksi olemme keskittyneet dokumentti/näkymä-sovelluksen yksittäisiin luokkiin ja näkyviin ominaisuuksiin. Kaikki nämä kokoaa yhteen ja niitä hallitsee dokumenttimalliluokka (document template). Jo kuvasta 12.4 löydät CSingleDocTemplate:n SDI-sovelluksen luokkahierarkiasta. Kyseessä on juuri SDI-sovelluksen käyttämä dokumenttimalliluokka. CSingleDocTemplate-luokan ilmentymä luodaan ja sitä käytetään CSDICoin::InitInstance-funktiossa (listaus 12.1). MFC-sovellusrunko kutsuu InitInstance-funktiota juuri ohjelman suorituksen alussa sovelluksen alustamiseksi. 1 MFC kutsuu tätä ohjelman suorituksen alussa. 2 Alustaa dokumenttimallin resurssitunnuksella sekä dukumentti-, kehys- ja näkymäluokalla. LISTAUS 12.1 LST12_1.CPP InitInstance-funktio. 1 BOOL CSDICoinApp::InitInstance() 1 2 { 3 // Tästä on poistettu rivejä selkeyden parantamiseksi 4 // Register the application's document templates. // Document templates 5 // serve as the connection between documents, // frame windows and views. 6 CSingleDocTemplate* pdoctemplate; 7 pdoctemplate = new CSingleDocTemplate( 8 IDR_MAINFRAME, 2 9 RUNTIME_CLASS(CSDICoinDoc), 10 RUNTIME_CLASS(CMainFrame), // main SDI frame window

11 OSA III LUKU RUNTIME_CLASS(CSDICoinView)); 12 AddDocTemplate(pDocTemplate); 13 // Parse command line for standard shell commands, DDE, file open 14 CCommandLineInfo cmdinfo; 15 ParseCommandLine(cmdInfo); 3 16 // Dispatch commands specified on the command line 17 if (!ProcessShellCommand(cmdInfo)) 4 18 return FALSE; 19 // The one and only window has been initialized, so show and update it. 20 m_pmainwnd->showwindow(sw_show); 5 21 m_pmainwnd->updatewindow(); 3 Tulkitsee komentorivin argumentit. 4 Käsittelee komentorivin argumentit ja luo uuden dokumentin tai avaa olemassaolevan tiedoston. 5 Näyttää ja päivittää sovelluksen pääikkunan. 22 return TRUE; 23 } Rivillä 7 luodaan CSingleDocTemplate-olio neljän syötetyn parametrin perusteella. Ensimmäinen näistä on resurssitunnus IDR_MAINFRAME. SDICoin-sovelluksessa IDR_MAINFRAME-tunnuksella viitataan neljään eri resurssiin: sovelluksen kuvakkeeseen, valikkoon, työkaluriviin sekä näppäimistöpikavalintojen taulukkoon. Seuraavat parametrit ovat osoittimia dokumentti-, näkymä- ja kehysluokan ajonaikaisten luokkien tietoihin. Nämä osoittimet tehdään RUNTIME_CLASS-makrolla. Tämä kaikki on mahdollista, koska AppWizard tukee näiden luokkien dynaamista luomista käyttämällä DECLARE_DYNCREATE- ja IMPLEMENT_DYNCREATE makroja. Tässä vaiheessa ei vielä luoda itse dokumentti-, näkymä- tai kehysolioita. Tämä koodi alustaa CSingleDocTemplate-olion tarvittavilla tiedoilla resurssien lataamista varten sekä antaa mahdollisuuden varata tarvittaessa muistia dokumenteille, näkymille sekä kehyksille. Dokumenttimalliluokkaa (document template) kutsutaankin luokkatehtaaksi (class factory). Itse dokumenttimalliluokan oliota säilytetään sovellusluokassa. Rivillä 12 AddDocTemplate-funktiolla rekisteröidään vasta luotu dokumenttimalliolio CWinApp-luokkaan. Luokkatehdasmetodi Dokumenttimalliluokka on esimerkki luokkatehtaasta eli luokasta, joka määrittää, kuinka luodaan ilmentymiä toisista luokista. Näin ollen luokkatehdas osaa tuottaa sovelluskohtaisia luokkien ilmentymiä, olioita. CWinApp-luokka säilyttää CSingleDocTemplate-oliota kunnes se tuhoaa itsensä, eli sovelluksen päättyessä. Tuhoamisen aikana CWinAppvapauttaa dokumenttimallioliolle varatun muistin, joten sinun ei tarvitse huolehtia siitä. KATSO MYÖS Lisätietoja ajonaikaisista luokkatiedoista luvusta 23.

12 260 Omien komentoriviargumenttien tulkitseminen Helpoin tapa käsitellä omat komentoriviargumentit on johtaa luokka CCommandLineInfosta ja korvata ParseParam-funktio. Sovelluksen osat Dokumentti/näkymä-sovellusrungon funktioiden käyttö Dokumentti/näkymä-arkkitehtuurin vaikeimmin ymmärrettävä ja käytettävä ominaisuus on ehkä mukana olevien olioiden luontijärjestyksen ja tämän aikana kutsuttavien virtuaalifunktioiden seuraaminen. Syy ei ole monimutkaisuudessa, vaan näkyvän koodin takana piilevässä toiminnallisuudessa. Hyvää tässä on, että sovellusrunko tekee paljon asioita puolestasi. Kuitenkin toiminnan ymmärtämiselle on eduksi, jos opit tuntemaan piilossa oleviakin toimintoja. Listauksessa 12.1 olevan CSingleDocTemplate-olion luomisen ja alustamisen jälkeen riveillä 6-12 käsitellään komentorivin parametrit ja sovellusikkuna näytetään. CCommandLineInfo-luokka (rivi 14) huolehtii sovellukselle komentorivillä syötetyistä argumenteista. Funktio CWinApp:: ParseCommandLine (rivillä 15) käyttää parametrinä viittausta CCommandLineInfo-olioon. Kullekin argumentille kutsutaan ParseParam-funktiota ja CCommandLineInfo-olio täytetään näin argumenttien arvoilla. Taulukossa 12.2 esitetään komentorivin oletusparametrit ja niiden merkitys. TAULUKKO 12.2 Komentorivin argumentit Argumentti Tarkoitus Ei argumentteja Luo uusi dokumentti/asiakirja. Tiedosto Avaa annettu tiedosto. /p tiedosto Tulosta annettu tiedosto. /pt tiedosto Tulosta annettu tiedosto määrätyllä tulostimella. tulostinportti /dde Käynnistä DDE-istunto. /automation Käynnistä sovellus OLE-palvelimena. /embedding Käynnistä sovellus toisessa sovelluksessa olevan OLE-objektin muokkaukseen. Kuten taulukosta 12.2 huomaat, ilman argumentteja luodaan sovelluksen käynnistyessä uusi dokumentti. Tämä on luonnollisesti oletustoiminto. Dokumentin ohella luodaan myös kehysikkuna sekä näkymä. Tämä kaikki tapahtuu CWinApp::ProcessShellCommands-

13 funktiossa rivillä 21. Listauksessa 12.2 on esitelty mukana olevat tapahtumat. Huomaa, että listauksen varsinainen koodiosa on ohitettu kolmella pisteellä ja siinä on keskitytty kuvaamaan ainoastaan luomistyötä. LISTAUS 12.2 LST12_2.CPP Dokumentin, näkymän ja kehyksen luomiskertomus OSA III LUKU BOOL CWinApp::ProcessShellCommands(CCommandLineInfo& rcmdinfo) 1 2 { 3 if(fcmdinfo.newfile) 4 { 5 OnFileNew(); 6 } 7 if(fcmdinfo.openfile) 8 { 9 OpenDocumentFile(rCmdInfo.strFileName); 10 } } 13 void CWinApp::OnFileNew() 14 { 15 m_pdocmanager->onfilenew(); 16 } 17 void CDocManager::OnFileNew() 18 { 19 ptemplate->opendocumentfile(null); 2 20 } 21 CSingleDocTemplate::OpenDocumentFile(LPCTSTR lpszpathname) 22 { 23 if(m_ponlydoc!= NULL) 24 pdocument->savemodified(); 3 25 else 26 { 27 pdocument = CreateNewDocument(); 28 pframe = CreateNewFrame(pDocument): 4 29 } pdocument->onnewdocument(); 5 32 InitialUpdateFrame(pFrame, pdocument); 6 1 Tätä kutsuu InitInstancefunktio. 2 ptemplate on osoitin jo rekisteröityyn CSingleDocTemplate-olioon. 3 Jos dokumentti on olemassa se alustetaan uudelleen. 4 Dokumentti ja kehys muodostetaan ajonaikaisten luokkatietojen perusteella dokumenttimallissa. 5 Tämä virtuaalifunktio korvataan omalla dokumentin alustamista varten. 6 Alustaa kehysikkunan kutsumalla LoadFrame-funktiota. Aktivoi näkymän ja lähettää WM_INITIALUPDATE-sanoman, joka aiheuttaa CView::OnInitialUpdatekäsittelijän kutsumisen. Riveillä 1-12 esitetty CWinApp::ProcessShellCommand-funktio käynnistää komentoriviparametrien perusteella tarvittavia funktioita. Rivin 13 funktiota CWinApp::OnFileNew kutsutaan, ellei komentorivillä ole annettu argumentteja. Tätä kutsutaan myös käyttäjän valitessa Tiedosto-valikosta Uusi (File/New), minkä AppWizard kytkeekin automaattisesti valikkoon.

14 262 Sovelluksen osat Listauksessa 12.2 esitetään uuden dokumentin luominen sovelluksen käynnistyessä, eikä ero tämän ja tiedoston avaamisen välillä ole kovin suuri. Ero tehdään alussa, jolloin CWinApp::ProcessShellCommandfunktio joko löytää annetun tiedoston tai kysyy sitä käyttäjältä valintaikkunassa. Tiedoston paikantamisen jälkeen sen hakemistopolku ja nimi syötetään rivin 21 samalla CSingleDocTemplate:: OpenDocumentFile-funktiolle. Ilman tiedostoa funktio saisi NULLarvon eli loisi uuden dokumentin. CWinApp::OnFileNew antaa välittömästi suoritusvastuun (rivillä 15) CDocManager::OnFileNew-funktiolle, joka hakee käyttöönsä osoittimen juuri luotuun CSingleDocTemplate-olioon. Osoittimen avulla kutsutaan OpenDocumentFile-funktiota NULL-parametrillä. Tämä funktio tekeekin sitten varsinaisen työn. OLE-dokumentit Jos määrität AppWizardissa sovelluksesi OLE-säilöksi tai OLE-palvelimeksi, dokumenttiluokkasi johdetaan jostain CDocumentin kolmesta aliluokasta: COleDocument, COleLinkingDoc tai COleServerDoc. Kukin näistä pohjaa toimintansa edellisen toiminnoille. Perusero tavallisiin dokumentteihin on kyky käsitellä dokumenttia OLEobjektiluettelona. CSingleDocTemplate::OpenDocumentFile SDI-sovelluksen dokumenttiolio luodaan vain kerran (kun OpenDocumentFile-funktiota kutsutaan ensimmäisen kerran). Uudet tämän funktion kutsut Tiedosto-valikon Uusi tai Avaa-komentojen (File/New, File/Open) seurauksena alustavat avoimen dokumentin uudelleenkäyttöä varten. Uudelleenalustaminen tehdään SaveModified-funktiossa, joka aluksi tarkistaa dokumentin muutetun tilan. Kaikkien dokumenttien kantaluokalla CDocument on BOOLtyylinen jäsenmuuttuja, jossa on tieto siitä, onko dokumenttia muutettu. Tämä jäsenmuuttuja voidaan asettaa SetModifiedFlag-funktiolla. Jos käsiteltävää dokumenttia muutetaan, käyttäjää pyydetään tallettamaan dokumentti ennen jatkamista. Sanomaruudussa käyttäjä voi jatkaa toimintaa tallettamalla dokumentin, tallettamatta dokumenttia tai perumalla koko OpenDocumentFile-funktion käytön. Dokumentti talletetaan niin haluttaessa OnSaveDocument-funktiolla ja se alustetaan DeleteContents-funktiolla; näitä molempia käsitellään hieman myöhemmin. Jos dokumentti joudutaan luomaan, se tehdään funktiolla CreateNewDocument (rivillä 27). Tämä luo sovelluskohtaisen dokumenttiolion dokumenttimallin ajonaikaisen luokan tietojen perusteella. Kyseinen funktio myös lisää uuden dokumentin nykyisten dokumenttien luetteloon. Kun dokumentti on luotu, luodaan myös kehys ja näkymä toisella dokumenttimallin funktiolla, CreateNewFrame. CreateNewFrame-funktio (rivillä 28) tekee kehysikkuna- ja näkymäoliot

15 myös dokumenttimallin ajonaikaisen luokan tietojen perusteella. Kehyksen luomisen jälkeen kutsutaan CFrameWnd::LoadFrame-funktiota, jolle välitetään parametreinä dokumenttimallin muodostimessa määritetty resurssitunnus. Kuten muistanet, tämä oli IDR_MAINFRAME. LoadFrame-funktio lataa eri resurssit (valikon, työkalurivin, kuvakkeen, pikavalintataulukon ja merkkijonot) ja liittää ne kehysikkunaan. Huomaa myös, että resurssien lataamisen epäonnistuminen aiheuttaa koko LoadFrame-funktion epäonnistumisen, jolloin annetaan debuggaussanoma Warning: CDocTemplate couldn t create a frame. Nyt kun kaikki oliot on muodostettu, dokumentti alustetaan OnNewDocument-funktiossa rivillä 31 (funktio selitetään tarkemmin myöhemmin). Luomistoiminnon lopuksi kutsutaan dokumenttimallin funktiota InitialUpdateFrame (rivi 32). Tämä asettaa vasta luodun näkymän aktiiviseksi ja lähettää sitten WM_INITIALUPDATE-sanoman kehysikkunan lapsille, myös näkymäikkunalle. Tämän sanoman saamisesta seuraa CView::OnInitialUpdate-virtuaalifunktion kutsuminen. On hyvin tavallista, että tämä funktio korvataan omalla näkymän alustuksella. Muista myös, että yleensä on tarpeen kutsua lisäksi kantaluokan versiota kyseisestä funktiosta. OSA III LUKU CDocument::OnNewDocument Tätä funktiota kutsutaan uutta dokumenttioliota luotaessa. Tämä voi tapahtua jo sovelluksen käynnistymisvaiheessa tai käyttäjän valitessa Tiedosto-valikosta Uusi-komennon (File/New). Funktio kutsuu DeleteContents-funktiota dokumentin sisällön siistimiseksi ja tilatiedon asettamiseksi FALSE-arvoon (eli dokumenttia ei ole muutettu). Se myös tyhjentää merkkijonon, jossa dokumentin tiedostonimi oli. CDocument::OnOpenDocument Tätä funktiota kutsutaan avattaessa dokumenttia tiedostosta. Tämä voi tapahtua jo sovelluksen käynnistymisvaiheessa komontorivin parametrien perusteella tai käyttäjän valitessa Tiedosto-valikosta Avaa-komennon (File/Open). Funktio kutsuu DeleteContentsfunktiota dokumentin sisällön tyhjentämiseksi. Oletustoteutuksessa annettu tiedosto avataan ja Serialize-funktiota kutsutaan dokumentin tietojen lukemiseksi sovellukseen. Tietojen lataamisen jälkeen tiedosto suljetaan ja muuttamistieto nollatan FALSE-arvoon ( ei muutettu ).

16 264 Sovelluksen osat CDocument::OnSaveDocument Tätä funktiota kutsutaan tiedostoa talletettaessa. Tämä tapahtuu käyttäjän valitessa Tiedosto-valikosta Tallenna tai Tallenna nimellä -komennon (File/Save, File/Save As). Tätä kutsutaan myös käyttäjän sulkiessa dokumentin ja valitessa muuttuneen dokumentin tallennuksen siinä vaiheessa. Funktio saa yhden parametrin, osoittimen tiedostonimeen. Oletustoteutuksessa tiedosto avataan ja dokumentin tiedot talletetaan Serialize-funktiolla. Tietojen tallentamisen jälkeen tiedosto suljetaan ja dokumentin muuttamistilaksi asetetaan FALSE ( ei muutettu ). CDocument::DeleteContents Tätä funktiota kutsuvat OnNewDocument, OnOpenDocument ja OnCloseDocument. Funktio huolehtii nykyisen dokumentin sisällön tuhoamisesta. Oletustoteutusta ei ole, koska dokumentin tiedot ovat aina sovelluskohtaisia. Joudut siis korvaamaan tämän funktion omallasi, jonka pitäisi vapauttaa dokumenttisi varaamat jäsenmuuttujat sekä alustaa muuttujat uudelleen. CDocument::OnCloseDocument Tätä funktiota kutsutaan dokumenttia suljettaessa. SDI-sovelluksessa tämä tapahtuu käyttäjän avatessa uuden tiedoston tai luodessa uuden dokumentin sekä sovelluksen sulkeutuessa. Aluksi funktio sulkee kaikki dokumenttiin liitetyt näkymät ja kutsuu sitten DeleteContents-funktiota ennen dokumenttiolion tuhoamista. KATSO MYÖS Lisätietoja OLE-automaatiosta luvusta 25. Tietoja tiedostonkäsittelystä ja serialisoinnista luvun 23 alusta. Dokumenttien ja näkymien yhteiskäyttö Dokumentti/näkymä-arkkitehtuuri on hyvä pohja toiminnallisesti eri kokoisille sovelluksille. Tiedonkäsittelykoodin erottaminen käyttöliittymästä luo helpommin hallittavan ja ylläpidettävän, modulaarisen sovelluksen. Esimerkiksi dokumentin tietojen esittäminen jollain uudella tavalla onnistuu yksinkertaisesti luomalla uusi näkymäluokka, joka

17 hakee tarvitsemansa tiedot nykyisen dokumentin rajapinnan kautta. Yhteistoiminnan suunnittelu dokumentti- ja näkymäluokkien välille on erityisen tärkeä toimi. Yleensä kokeneidenkin ohjelmoijien on vaikea päättää, mitkä tiedot kuuluvat dokumenttiin, mitkä näkymään. Tähän ei ole olemassa selkeitä sääntöjä ja päätös riippuu myös sovelluksesta. Ihanteellisessa tapauksessa näkymässä ei tarvittaisi olenkaan omia tietoja, vaan se saisi kaikki tarvitsemansa dokumentista. Näin muutokset tehtäisiin vain yhteen paikkaan, josta dokumenttiin liitetyille näkymille tiedotettaisiin tiedon muuttumisesta. Tämä lähtökohta ei kuitenkaan ole aina selkein ja tehokkain. Esimerkiksi tekstinkäsittelysovellukset pitävät usein kopiota osasta tiedoista itsellään, jotta dokumenttiin ei tarvitsisi koskea aivan jokaisen näppäimenpainalluksen jälkeen (vaikuttaa sovelluksen nopeuteen). On useita tilanteita, jolloin dokumentin tietojen välivarastointi on suotavaa. Tämän tekemiseen ei ole mitään estettä, voithan koodata sovelluksesi niin kuin haluat. Tarpeeton tiedon kaksinkertainen tallettaminen kuitenkin hankaloittaa ohjelmointityötä, joten sitä kannattaa välttää. OSA III LUKU Dokumentin tietojen alustaminen CDocument on abstrakti luokka, joten joudut periyttämän siitä oman dokumenttiluokkasi. Sovelluksesi tiedot pidetään tuon dokumenttiluokan jäsenmuuttujissa. Aivan yksinkertaisimpia sovelluksia lukuun ottamatta dokumenteissa tarvitaan useita jäsenmuuttujia, usein taulukoina tai linkitettyinä listoina. Muista, että SDI-sovelluksissa dokumenttiolio muodostetaan vain kerran ja sitä käytetään uudelleen seuraavien dokumenttien sitä vaatiessa. Tästä syystä dokumentin tietojen alustamista ei kannata sijoittaa dokumenttiolion muodostimeen, eihän sitä enää kutsuta seuraavien dokumenttien kohdalla. Aiemmin dokumentti/näkymä-arkkitehtuurin funktioista puhuttaessa huomasit, että dokumentin virtuaalifunktiota DeleteContentskutsutaan automaattisesti funktioista OnNewDocument, OnOpenDocument ja OnCloseDocument. Näissä tilanteissa dokumentin sisältö vaihtuu. DeleteContents vastaa dokumentin tyhjentämisestä, joten sen jälkeen on hyvin sopiva hetki alustaa dokumentin jäsenmuuttujat uudelleen. MFC-kokoelmaluokat MFC-kirjastossa on useita apuluokkia mutkikkaiden tietorakenteiden suunnitteluun. Näitä kokoelmia (collection) ovat muun muassa CArray ja CObList. Käytä näitä valmiita toimintoja aina, kun se on mahdollista.

18 266 Dokumentin muuttujien suojaaminen Dokumenttiluokassasi tulee olla protected-tyyppisiä jäsenmuuttujia, joita käsitellään julkisten public-tyyppisten saantifunktioiden kautta. Sovelluksen osat Jäsenmuuttujien lisääminen dokumenttiin Dokumenttiluokka on samanlainen kuin projektin muutkin luokat, joten myös siihen voidaan lisätä jäsenmuuttujia ClassView-sivun Add Member Variable pikavalikosta. Jos lisäät useita muuttujia, saattaa olla helpompaa lisätä ne suoraan ohjelmakoodiin. Saat avattua dokumenttiluokan otsikkotiedoston (.h) kaksoisnapauttamalla dokumenttiluokan nimeä ClassView-sivulla. Jotta tieto pysyisi ehyenä, tulee dokumentin jäsenmuuttujat määritellä suojatuiksi (protected). Suojattua muuttujaa voi muuttaa ainoastaan oman luokan tai luokasta perityn luokan jäsenfunktio. Kun muut luokat eivät pääse muuttamaan muuttujia, käyttöön jää vain yksi paikka, josta muutoksia voidaan tehdä ja näkymän liittäminen dokumenttiin tulee helpommaksi. Jotta näkymät voisivat käsitellä dokumentin tietoja, tulee dokumenttiluokassa olla tietojen käsittelyfunktiot, jotka palauttavat viittaukset dokumentin jäsenmuuttujiin. Kun nyt tunnet dokumentti/näkymä-arkkitehtuuria, on aika kehittää aloittaa SDICoin-esimerkin työstäminen. Tässä kappaleessa käsittelet dokumenttiluokkaa CSDICoinDoc. Dokumenttiluokan tarvitsema data koostuu pelkästään kolikoiden nykyisestä lukumäärästä, mikä mahtuu yhteen jäsenmuuttujaan. Kun näkymä joutuu piirtämään kolikkokasan, sen tulee tietää tämä kolikoiden määrä. Yksinkertaisin tapa saada tämä tieto käyttöön olisi määritellä dokumenttiluokkaan globaali muuttuja, jota näkymäluokka voisi suoraan käsitellä. Haittana olisi kuitenkin näkymäluokan koodin saama mahdollisuus muuttaa kolikoiden määrästä kertovaa muuttujaa, esimerkiksi vahingossa. Parempi tapa toimia onkin asettaa lukumääräjäsenmuuttuja suojatuksi ja varustaa dokumenttiluokka muuttujan käsittelyfunktioilla. Lisää siis tähän tarvittava koodi seuraavasti. Dokumentin tiedon tallennuksen sekä saantimetodien toteutus 1. Valitse ClassView-sivulla CSDICoinDoc-luokka ja se pikavalikosta Add Member Variable. Saat esiin vastaavan ikkunan. 2. Syötä muuttujan tyypiksi Variable Type ruutuun int. Anna muuttujan nimeksi Variable Name ruutuun m_ncoins ja valitse Protected Access valintapainike. Napauta OK.

19 3. Valitse CSDICoinDoc-luokan pikavalikosta Add Member Function. 4. Syötä funktion tyypiksi int ja Function Declaration ruutuun GetCoinCount. Valitse myös Public Access valintapainike. 5. Syötä GetCoinCount-funktion sisällöksi seuraava koodirivi: return m_ncoins; 6. Käynnistä ClassWizard näppäilemällä Ctrl+W tai valitsemalla View-valikosta ClassWizard. 7. Valitse Message Maps-välilehti. 8. Valitse Class Name yhdistelmäruudusta CSDICoinDoc. 9. Valitse Object IDs luetteloruudusta CSDICoinDoc. 10. Valitse Messages-luetteloruudusta DeleteContents ja napauta Add Function painiketta. 11. Sulje ClassWizard napauttamalla OK. 12. Syötä seuraava koodirivi DeleteContents-funktioon TODOkommenttien jälkeen: m_ncoins = 1; CSDICoinDoc-luokassa on nyt suojattu jäsenmuuttuja m_ncoins, joka alustetaan korvaamassasi DeleteContents-funktiossa. Olet myös lisännyt saantifunktion GetCoinCount, jolla näkymä saa m_ncoinsmuuttujan arvon. OSA III LUKU Dokumentin tietojen hakeminen näkymästä Jotta näkymä saisi käsittelyyn dokumentin tietoja, sen tulee ensin päästä käsiksi itse dokumenttiolioon. Tämä käy automaattisesti MFCsovellusrungon avulla lisäämällä sovelluskohtaiseen näkymäluokkaan GetDocument-funktiokutsun. Tämä funktio palauttaa osoittimen dokumenttimallissa näkymään liitettyyn dokumenttiin. Oikeastaan sovellusrunko tarjoaa kaksikin GetDocument-funktiota. Tässä esimerkissä huomaat, että CSDICoinView-luokalla on GetDocument-toteutus SDICoinView.cpp-tiedostossa sekä SDICoinView.h-tiedostossa, kuten seuraavassa esitetään. Nämä kaksi funktiota toimivat täsmälleen samoin, ainoa ero on, että ensimmäistä käytetään projektin kehitysaikaisessa (debug)-versiossa ja toista varsinaisessa julkaisuversiossa (release). Syy tähän on, että koodin sekaan kirjoitetut inline-funktiot toimivat tehokkaammin, ja tätä funktiota tullaan todennäköisesti kutsumaan useasti suorituksen aikana. Inline-funktioiden käyttö saattaa nopeuttaa ohjelmaa inline-avainsanalla kääntäjä korvaa funktiokutsun funktion koodilla. Ohjelma nopeutuu, koska funktion kutsumista ei tarvita. Huomaa, että inlinefunktioita ei voi debuggerissa käydä läpi rivi riviltä.

20 268 Sovelluksen osat SDICoinView.cpp #ifdef _DEBUG CSDICoinDoc* CSDICoinView::GetDocument() { ASSERT(m_pDocument->IsKindOf( RUNTIME_CLASS(CSDICoinDoc))); return (CSDICoinDoc*) m_pdocument; } #endif // _DEBUG SDICoinView.h #ifndef _DEBUG // _DEBUG-versio oli SDICoinView.cpp:ssä inline CSDICoinDoc* CSDICoinView::GetDocument() { return (CSDICoinDoc*) m_pdocument; } #endif CSDICoinView-luokka vastaa kolikkopinon näyttämisestä. Itse kolikon kuvan piirtävä koodi on varsin yksinkertainen ja se sijaitsee CSDICoinView::OnDraw-funktiossa. AppWizard on jo luonut tuon funktion rungon valmiiksi. MFC-sovellusrunko kutsuu OnDrawfunktiota aina, kun näkymä pitää piirtää näytölle esimerkiksi kehysikkunan kokoa muutettaessa. OnDraw-funktiota kutsutaan myös tulostettaessa sekä tulostuksen esikatselutoiminnassa. Erona näytölle ja tulostimelle piirtämisessä on piirtofunktiolle välitettävä eri piirtopinta (device context). Muokkaa nyt CSDICoinView::OnDraw-funktio listauksen 12.3 mukaiseksi. LISTAUS 12.3 LST12_3.CPP Dokumentin datan lukeminen näkymän piirtämiseksi 1 Hae osoitin dokumenttiluokkaan kutsumalla näkymäluokan GetDocument()-funktiota. 2 Hae osoitin pdcpiirtopinnalla valittuna olevaan siveltimeen. 3 Luo keltainen sivellin. 4 Valitse uusi sivellin piirtopinnalle. 1 void CSDICoinView::OnDraw(CDC* pdc) 2 { 3 // ** Retrieve a pointer to the document 4 CSDICoinDoc* pdoc = GetDocument(); 1 5 ASSERT_VALID(pDoc); 6 7 // TODO: add draw code for native data here 8 // ** Save the current brush 9 CBrush* poldbrush = pdc->getcurrentbrush(); // ** Create a solid yellow brush 12 CBrush br; 13 br.createsolidbrush(rgb(255,255,0)); // ** Select the yellow brush in to the device context 16 pdc->selectobject(&br); 4 17

21 OSA III LUKU // ** Retrieve the number of coins from the document 19 // ** and draw two ellipses to represent each coin 20 for(int ncount = 0; ncount < pdoc->getcoincount(); ncount++) 5 21 { 22 int y = * ncount; 23 pdc->ellipse(40, y, 100, y-30); 6 24 pdc->ellipse(40, y-10, 100, y-35); 25 } // ** Restore the current brush 28 pdc->selectobject(poldbrush); 7 29 } 5 Käy läpi kaikki piirrettävät kolikot. Kolikoiden lukumäärä saadaan saantifunktiolla GetCoinCount(). 6 Piirrä kaksi ellipsiä. Ellipsien y-suuntainen paikka määräytyy kolikon numeron mukaan. 7 Valitse alkuperäinen piirtopinnan sivellin takaisin käyttöön. AppWizard tekee automaattisesti funktion kaksi ensimmäistä riviä (4 ja 5). GetDocument palauttaa osoittimen dokumenttiolioon ja tämä talletetaan muuttujaan pdoc. Osoitinta käytetään rivin 20 forsilmukassa hakemaan kolikoiden sen hetkinen lukumäärä saantifunktion GetCoinCount avulla. Rivillä 9 talletetaan osoitin piirtopinnalla valittuna olevaan siveltimeen (brush) muuttujaan poldbrush, joka palautetaan ennalleen funktion lopussa rivillä 28. Riveillä 12, 13 ja 16 luodaan keltainen sivellin paikalliseen muuttujaan br ja se valitaan piirtopinnan siveltimeksi, valmiiksi piirtämään kolikoita. Kukin kolikko piirretään kahdella ellipsillä, toinen toisensa päälle, jolloin saadaan kolmiulotteinen vaikutelma kolikosta. Tämä tehdään käytännössä CDC::Ellipse-funktiota käyttäen, riveillä 23 ja 24. KATSO MYÖS Lisätietoja piirtopinnasta luvusta 15. Lisätietoja grafiikan piirtämisestä luvusta 16. Vakiomallin resurssien käyttö Kuten jo aiemmin mainittiin, projektiin on lisätty automaattisesti useita resursseja SDI-sovelluksen näkyviä osia varten. Näitä ovat valikko, työkalurivi, kuvake, näppäimistöpikavalinnat sekä merkkijonotaulukko. Kaikki nämä vakioresurssit ovat täysin toimivia. Esimerkiksi Filevalikon New-komento kutsuu CWinApp::OnFileNew-käsittelijää, joka luo uuden dokumentin, kuten tekee myös työkalurivin New-kuvake. Tämä ei tarkoitta, ettetkö voisi muuttaa näiden valintojen oletus-

22 270 Sovelluksen osat käyttäytymistä. Voit toki korvata haluamasi funktiot omillasi ja tehdä funktiossa mitä haluat. Saat jopa poistaa koko valikon ja työkalurivin, elleivät ne sovi sovellukseesi. On kuitenkin tavallisempaa jättää vakiotoiminnot ennalleen ja ainoastaan lisätä omat sovelluskohtaiset valinnat. Tämä käy helposti, koska kaikkia resursseja voidaan muokata resurssieditorissa ja ne voidaan liittää komentoja käsitteleviin funktioihin ClassWizardilla. Pikavalintojen lisääminen valikon komentoihin Kun muokkaat valikkoa resurssieditorissa, voit määrittää valikon komennolle näppäinyhdistelmän valikkotekstin perään. Jos esimerkiksi valikon komennon teksti määritellään &Toolbar\tCtrl+T, saadaan työkalurivi (toolbar) näkyviin Ctrl+T-näppäilyllä. joudut myös lisäämään pikavalintataulukkoon (accelerator table) ID_VIEW_TOOLBAR-tunnuksen ja määrittämään sille näppäinyhdistelmän Ctrl ja T. Joudut lisäämään kaksi valikon komentoa SDICoin-esimerkkiin, toisen kolikon lisäämistä, toisen poistamista varten. Kun valitset toisen komennoista, se kutsuu dokumenttiluokan funktiota, joka joko kasvattaa tai vähentää kolikoiden lukumäärää ja varmistaa, että näkymä päivitetään. Lisää komennot valikkoon seuraavasti. Valikon komentojen lisääminen 1. Avaa ResourceView-sivulla Menu-kansio ja kaksoisnapauta IDR_MAINFRAME-alkiota. Saat esiin valikkoresurssin resurssieditoriin. 2. Napauta Edit-alkiota resurssieditorissa ja saat esiin alasvetovalikon. 3. Kaksoisnapauta alasvetovalikon alinta tyhjää alkiota. Saat tällöin esiin Menu Item Properties valintaikkunan (kuva 12.7). 4. Syötä valikon komennon ID-tunnukseksi tässä esimerkissä ID_EDIT_ADD_COIN. 5. Anna valikkoteksti Caption-ruutuun, esimerkiksi Add a Coin. 6. Syötä komennon ohjetekstiksi Prompt-ruutuun Increase the number of coins. 7. Kaksoisnapauta uudestaan alasvetovalikon alinta tyhjää alkiota. 8. Syötä komennon ID-tunnukseksi ID_EDIT_REMOVE_COIN.

23 OSA III LUKU KUVA 12.7 Menu Item Properties valintaikkuna. 9. Anna valikkoteksti Caption-ruutuun, esimerkiksi Remove a Coin. 10. Syötä komennon ohjetekstiksi Prompt-ruutuun Decrease the number of coins. 11. Käynnistä ClassWizard näppäilemällä Ctrl+W tai valitsemalla View-valikosta ClassWizard. 12. Valitse Message Maps välilehti. 13. Valitse luokan nimeksi Class Name yhdistelmäruutuun CSDICoinDoc. 14. Valitse Object IDs luetteloruudussa ID_EDIT_ADD_COIN. 15. Valitse Messages-luetteloruudussa COMMAND ja napauta Add Function painiketta. Napauta OK Add Member Function valintaikkunassa. 16. Valitse Object IDs luetteloruudussa ID_REMOVE_ADD_COIN. 17. Valitse Messages-luetteloruudussa COMMAND ja napauta Add Function painiketta. Napauta OK Add Member Function valintaikkunassa. 18. Napauta Edit Code painiketta.

24 272 Sovelluksen osat Näkymän päivittäminen Miltei aina, kun dokumentin tietoja on muutettu, on tarpeen esittää tämä myös näkymässä. Toiminto saadaan aikaan kutsumalla funktiota, joka saa aikaan näkymän piirtämisen uudelleen. Edellisessä kappaleessa lisäsit kaksi komentoa valikkoon sekä käsittelijäfunktiot niille dokumenttiluokkaan. Muokkaa nyt käsittelijäfunktiot listauksen 12.4 mukaisiksi. LISTAUS 12.4 LST12_4.CPP - Näkymän päivittäminen dokumentista 1 Tätä valikon komennon käsittelijää kutsutaan valittaessa Add a Coin -komento. 2 Kasvattaa dokumentin jäsenmuuttujaa, jossa pidetään yllä kolikoiden lukumäärää. 3 Saa aikaan dokumenttiin liitettyjen näkymien OnUpdate()- funktion kutsumisen, jonka seurauksena näkymät piirretään uudelleen. 1 void CSDICoinDoc::OnEditAddCoin() 1 2 { 3 // TODO: Add your command handler code here 4 // ** Increment the number of coins 5 m_ncoins++; 2 6 // ** Update view to redraw coin stack 7 UpdateAllViews(NULL); 3 8 } 9 void CSDICoinDoc::OnEditRemoveCoin() 10 { 11 // TODO: Add your command handler code here 12 // ** Decrement the number of coins 13 if(m_ncoins > 0) 14 m_ncoins--; 15 // ** Update view to redraw coin stack 16 UpdateAllViews(NULL); 17 } Kuten huomaat, lisäämäsi käsittelijäfunktio joko kasvattaa tai vähentää m_ncoins-muuttujan arvoa, joka onkin dokumentin koko data. Tämän jälkeen kutsutaan UpdateAllViews-funktiota parametrillä NULL. NULL parametrin arvona tarkoittaa, että kaikki dokumenttiin liitetyt näkymät päivitetään, kutsumalla kunkin näkymän omaa OnUpdatefunktiota. Tämä asettaa näkymäikkunan työalueen (client area) sisällön vanhentuneeksi ja saa aikaan OnDraw-funktion kutsumisen. Käännä ja aja nyt SDICoin-projektisi. Kokeile valikon Add a Coin ja Remove a Coin komentojen käyttöä. Näkymän tulisi olla kuvan 12.8 näköinen.

25 OSA III LUKU KUVA 12.8 SDICoin-sovellus.

26 274 Sovelluksen osat

MDI-sovellusten kehittäminen

MDI-sovellusten kehittäminen OSA V 491 LUKU 21 21 LUKU MDI-sovelluksen luominen Siirtyminen dokumentti, näkymä- ja kehysluokan välillä Sovelluksen kehittäminen MFC;n monidokumentti/näkymä-arkkitehtuurilla 492 Kehittyneet dokumentti/näkymä-tekniikat

Lisätiedot

Usean näkymän luominen

Usean näkymän luominen OSA V 471 LUKU 20 20 LUKU Dynaamisten ja staattisten jakajaikkunoiden käyttö Resurssienhallinnan kaltaisen käyttöliittymän tekeminen sovelluksiin ja hallinta ilman ikkunan jakamista 472 Kehittyneet dokumentti/näkymä

Lisätiedot

Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö

Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö OSA V 439 LUKU 19 19 LUKU Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelon tietojen ylläpito List View näkymässä

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Hiirisanomiin vastaaminen

Hiirisanomiin vastaaminen OSA II LUKU 8 163 8 LUKU Reagointi käyttäjän painaessa tai vapauttaessa hiiren painikkeen Omien funktioiden käyttö, kun hiiri liikkuu Hiirikoordinaattien käsittely ja valitun alueen tutkiminen 164 Näppäinpainallusten

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

HELIA 1 (1) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu :04

HELIA 1 (1) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu :04 HELIA 1 (1) Luento 7 Graafisen käyttöliittymän peruselementit... 2 Ikkunat... 2 Sovellusikkunat (Application Windows)... 2 Asiakirjaikkunat (Document Windows)... 3 Toissijaiset sovellusikkunat (Secondary

Lisätiedot

Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana

Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana OSA II LUKU 5 85 5 LUKU Tekstin ja sanomien esittäminen valintaikkunoissa Tekstin muokkaaminen suorituksen aikana Tiedon tarkistaminen syötön aikana Kontrollien toiminnan laajentaminen aliluokkien avulla

Lisätiedot

Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä

Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä OSA I LUKU 2 23 2 LUKU Developer Studio kehitysympäristön alkeet Liikkuminen projektin työtilassa ja sen eri näkymissä Projektien hallinnan vaatimat asetukset 24 Developer Studio - ympäristön räätälöinti

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Visual C++ -ohjelman tekeminen ja suunnittelu

Visual C++ -ohjelman tekeminen ja suunnittelu Visual C++ -ohjelman tekeminen ja suunnittelu OSA I LUKU 1 5 1 LUKU Visual C++ -ohjelman tekeminen ja suunnittelu Windows sovellusten tekeminen AppWizardilla Sovelluksen muokkaaminen resurssieditorilla

Lisätiedot

Web Services tietokantaohjelmoinnin perusteet

Web Services tietokantaohjelmoinnin perusteet ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

ActiveX-kontrollien käyttö

ActiveX-kontrollien käyttö OSA II LUKU 9 181 9 LUKU Kehittyneiden ActiveX-kontrollien lisääminen projektiisi Kontrollin ominaisuuksien ja tyylien muokkaaminen Kontrollista saadun tiedon hyödyntäminen ohjelmassa 182 ActiveX-kontrollit

Lisätiedot

Sovelluksen toimintojen toteuttaminen

Sovelluksen toimintojen toteuttaminen 161 L U K U 5 Sovelluksen toimintojen toteuttaminen Oppitunti 1: Dialogien käyttäminen 162 Oppitunti 2: Sovelluksen tietojen näyttäminen ja tulostaminen 183 Oppitunti 3: Useiden säikeiden käyttäminen 197

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

Opera Hotel Edition. Arvonlisäverokantojen muutos Operaan 01.07.2010. Finland. Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk

Opera Hotel Edition. Arvonlisäverokantojen muutos Operaan 01.07.2010. Finland. Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk Opera Hotel Edition Arvonlisäverokantojen muutos Operaan 01.07.2010 Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk Sivu / Page: 1 / 15 Document revision history Version Revision Author

Lisätiedot

OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ

OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ Tässä ohjeessa esitetään kuinka Excel-taulukkolaskentaan luodaan makro ja annetaan muutama vinkki makron käyttöön. Ohje koostuu seuraavasti: 1. Mikä makro

Lisätiedot

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

ASENNUS- JA KÄYTTÖOHJE

ASENNUS- JA KÄYTTÖOHJE ASENNUS- JA KÄYTTÖOHJE YKSIKKÖHINTA SOPIMUKSEN TOTEUTUNEET MÄÄRÄT-SOVELLUS CMPRO5 VERSIO 2.8 PÄIVITETTY HEINÄKUU 2010 COPYRIGHT 2010 ARTEMIS FINLAND OY. ALL RIGHTS RESERVED. KÄYTTÖOHJE SIVU 2 (12) SISÄLLYSLUETTELO

Lisätiedot

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy Opiskelijoiden OneDriveohje Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy Ohjeen nimi Opiskelijoiden OneDrive-ohje Vastuuhenkilö Mari Jokiniemi

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Piirtopinnalle piirtäminen

Piirtopinnalle piirtäminen OSA IV 333 LUKU 15 15 LUKU Erilaiset piirtopinnat ja niiden käyttö Piirtotilan ja piirtopinnan asetukset ja käyttö Koordinaatistojen kohdistustapojen käyttö piirrettäessä tuumina tai sentteinä 334 Piirtopintatietorakenteet

Lisätiedot

Virtuaalifunktiot ja polymorfismi

Virtuaalifunktiot ja polymorfismi Virtuaalifunktiot ja polymorfismi 16 Virtuaalifunktiot ja polymorfismi Polymorfismi on niin tehokas olio-ohjelmoinnin ominaisuus, että tulet varmastikin käyttämään sitä lähes kaikissa C++-ohjelmissasi.

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

Sovellusten ohjelmointi Microsoft Foundation Classes -luokkien avulla

Sovellusten ohjelmointi Microsoft Foundation Classes -luokkien avulla 73 L U K U 3 Sovellusten ohjelmointi Microsoft Foundation Classes -luokkien avulla Oppitunti 1: Yleiskatsaus MFC:hen 74 Oppitunti 2: Win32-sovellusarkkitehtuuri 84 Oppitunti 3: MFC-sovelluskehys 89 Oppitunti

Lisätiedot

Tulostaminen ja esikatselu

Tulostaminen ja esikatselu OSA V 521 LUKU 22 22 LUKU Tulostamisen ja esikatselu toteuttaminen vakiosovellusrunkoa räätälöimällä Monisivuisten raporttien toteuttaminen Eri sivusuhteiden ja laitteiden mittojen käsitteleminen Tulostaminen

Lisätiedot

Taulukot. 2002 Päivi Vartiainen 1

Taulukot. 2002 Päivi Vartiainen 1 Taulukot Taulukon lisääminen FrontPagessa tapahtuu samalla tavoin kuin Word tekstinkäsittelyohjelmassakin. Valitse vakiotyökaluriviltä Lisää taulukko painike. Kun olet napsauttanut painikkeen alas voit

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Käyttäjän käsikirja. LIB 500 ja LIB 510 v.4.0.2. 8.2. Releasettelutyökalu. 8.2.1. Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl

Käyttäjän käsikirja. LIB 500 ja LIB 510 v.4.0.2. 8.2. Releasettelutyökalu. 8.2.1. Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl 1MRS751368-RUM Käyttäjän käsikirja 8.1. Releyksikön valitseminen Releyksiköt esitetään asemakuvassa painikkeina. 8 $VHPDNXYDMRVVDQlN\\UHOH\NVLNN Jos kohteita tarvitsee päivittää, avataan ikkuna (Kuva 8.1.-2)

Lisätiedot

Väitöskirja -mallipohja

Väitöskirja -mallipohja JYVÄSKYLÄN YLIOPISTO Väitöskirja -mallipohja Word 2007/2010 IT-palvelut hannele.rajaniemi@jyu.fi https://koppa.jyu.fi/avoimet/thk/vaitoskirja sovellustuki@jyu.fi Sisältö Miten toimii väitöskirja/asiakirjamallipohja?

Lisätiedot

Versio 1.1 P/N 137-40340-20. Copyright 2002, ATI Technologies Inc. Kaikki oikeudet pidätetään.

Versio 1.1 P/N 137-40340-20. Copyright 2002, ATI Technologies Inc. Kaikki oikeudet pidätetään. HydraVision Käyttöopas Versio 1.1 P/N 137-40340-20 Copyright 2002, ATI Technologies Inc. Kaikki oikeudet pidätetään. ATI, kaikki ATI-tuotteiden ja tuotteen ominaisuuksien nimet ovat Ati Technologies Inc:in

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton 2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.

Lisätiedot

Graafisen käyttöliittymän ohjelmointi

Graafisen käyttöliittymän ohjelmointi TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Luento 4 Valikot ja dialogit Juha-Matti Vanhatupa Sisältö Pääikkuna Valikot Dialogit Pääikkuna (top-level window)

Lisätiedot

Tietokantojen ja tietuenäkymien käyttö

Tietokantojen ja tietuenäkymien käyttö Tietokantojen ja tietuenäkymien käyttö OSA VI 579 LUKU 24 24 LUKU Tietokantojen ja tietuenäkymien käyttö ODBC-tietolähteen määrittäminen Liittyminen tietokantoihin MFC-sovelluksista Tietuejoukkojen kyseleminen

Lisätiedot

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE HERVANNAN KIRJASTON TIETOTORI Insinöörinkatu 38 33720 Tampere 040 800 7805 tietotori.hervanta@tampere.fi TALLENNETAAN MUISTIKULLE JA MUISTIKORTILLE 1 Muistitikun

Lisätiedot

Kuva 1. Jokaisen tavallisen kuvan tasotyökalussa näkyy vain yksi taso, tässä nimellä tausta.

Kuva 1. Jokaisen tavallisen kuvan tasotyökalussa näkyy vain yksi taso, tässä nimellä tausta. Gimp alkeet XII 9 luokan ATK-työt/HaJa Sivu 1 / 6 GIMP:in tasotyökalu Lue ensin nämä ohjeet! Harjoitus lopussa! GIMP:in tasotyökalu on nimensä mukaisesti työkalu, jolla hallitaan tasoja, niiden läpinäkyvyyttä,

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

1. HARJOITUS harjoitus3_korjaus.doc

1. HARJOITUS harjoitus3_korjaus.doc Word - harjoitus 1 1. HARJOITUS harjoitus3_korjaus.doc Kopioi itsellesi harjoitus3_korjaus.doc niminen tiedosto Avaa näyttöön kopioimasi harjoitus. Harjoitus on kirjoitettu WordPerfet 5.1 (DOS) versiolla

Lisätiedot

Fonttien käyttö LUKU. Tekstin esittäminen värein ja tyylein. Fonttien käyttö sovelluksen viimeistelyyn OSA IV LUKU 17.

Fonttien käyttö LUKU. Tekstin esittäminen värein ja tyylein. Fonttien käyttö sovelluksen viimeistelyyn OSA IV LUKU 17. OSA IV 389 LUKU 17 17 LUKU Tekstin esittäminen värein ja tyylein sovelluksen viimeistelyyn 390 Grafiikan piirtäminen William Caxtonin keksittyä painetun sanomalehden olemme olleet pääsemättömissä painotuotteista.

Lisätiedot

Tiedostojen lataaminen netistä ja asentaminen

Tiedostojen lataaminen netistä ja asentaminen s. 1/5 Tiedostojen lataaminen netistä ja asentaminen Yleistä Internetissä on paljon hyödyllisiä ilmaisohjelmia, jotka voi ladata ja asentaa omalle koneelle. Osa ohjelmista löytyy suomenkielisiltä sivuilta,

Lisätiedot

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009 Verkkosivut perinteisesti Tanja Välisalo 11.2.2009 WWW-sivujen vieminen omaan kotisivutilaan yliopiston mikroverkossa https://salasana.jyu.fi Klikkaa painiketta Activate WWW Klikkaa painiketta Activate

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ Windows XP-käyttöjärjestelmän asetuksilla sekä Word-asetuksilla voit vaikuttaa tietokoneen näytön ulkoasuun, selkeyteen ja helppokäyttöisyyteen.. 1) ASETUKSET

Lisätiedot

Uutiskirjesovelluksen käyttöohje

Uutiskirjesovelluksen käyttöohje Uutiskirjesovelluksen käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com 2 Sisällys Johdanto... 1 Päänavigointi...

Lisätiedot

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

Siirtyminen Outlook 2010 -versioon

Siirtyminen Outlook 2010 -versioon Tämän oppaan sisältö Microsoft Microsoft Outlook 2010 näyttää hyvin erilaiselta kuin Outlook 2003. Tämän oppaan tarkoituksena on helpottaa uuden ohjelman opiskelua. Seuraavassa on tietoja uuden käyttöliittymän

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Datan tallentaminen, lataaminen ja siirtäminen

Datan tallentaminen, lataaminen ja siirtäminen Datan tallentaminen, lataaminen ja siirtäminen OSA VI 547 LUKU 23 23 LUKU Datan tallentaminen, lataaminen ja siirtäminen Dokumentin tietojen tallentaminen ja lataaminen Tiedostojen luominen, lukeminen

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Tilastokeskuksen rajapintapalveluiden käyttöönotto QGISohjelmistossa

Tilastokeskuksen rajapintapalveluiden käyttöönotto QGISohjelmistossa 1(13) Tilastokeskuksen rajapintapalveluiden käyttöönotto QGISohjelmistossa (QuantumGIS) Ohjeita laatiessa on käytetty QuantumGIS:n versiota 2.0.1. Ruudunkaappauskuvat ovat englanninkielisestä versiosta,

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

UpdateIT 2010: Editorin käyttöohje

UpdateIT 2010: Editorin käyttöohje UpdateIT 2010: Editorin käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com Sisällys Editorin käyttöohje...

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

6 XML-työkalut 1. 6 XML-työkalut

6 XML-työkalut 1. 6 XML-työkalut 6 XML-työkalut 1 6 XML-työkalut XML:n periaatteiden tutustumisen jälkeen on helpompi tutustua XML-dokumenttien käsittelyyn ja katseluun suunniteltuja työkaiuja. XML:n yleistymisen pahin pullonkaula on

Lisätiedot

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

TYYLIT. Word Tyylit

TYYLIT. Word Tyylit Word 2013 Tyylit TYYLIT TYYLIT... 1 Pikatyylien käyttäminen... 1 Tyylimuotoilun poistaminen... 2 Tyylin muokkaaminen... 2 Uuden tyylin luominen muotoillusta tekstistä... 2 Uuden tyylin luominen valintataulussa...

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Valitse ruudun yläosassa oleva painike Download Scilab.

Valitse ruudun yläosassa oleva painike Download Scilab. Luku 1 Ohjeita ohjelmiston Scilab käyttöön 1.1 Ohjelmiston lataaminen Ohjeet ohjelmiston lataamiseen Windows-koneelle. Mene verkko-osoitteeseen www.scilab.org. Valitse ruudun yläosassa oleva painike Download

Lisätiedot

Omapalvelu. Omapalvelussa voit

Omapalvelu. Omapalvelussa voit Omapalvelussa voit Omapalvelu tehdä vammaispalveluhakemuksen vammaispalvelulain mukaisista palveluista ja taloudellisesta tuesta sekä vaikeavammaisten kuljetuspalveluhakemuksen samoilla lomakkeilla voit

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Planssit (layouts) ja printtaus

Planssit (layouts) ja printtaus 1 / 21 Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto 17.11.2015 Planssit (layouts) ja printtaus Yksittäisen kuvan printtaus 2 / 21 Ennen printtausta valitse näkymä, jonka haluat printata, klikkaamalla

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Näin asennat MS-DOS käyttöjärjestelmän virtuaalikoneeseen

Näin asennat MS-DOS käyttöjärjestelmän virtuaalikoneeseen Näissä ohjeissa käydään läpi Microsoftin MS-DOS 6.22 -käyttöjärjestelmän asennus Microsoftin Virtual PC 2007 -virtuaalikoneeseen. Asennusta varten sinulla on oltava Virtual PC 2007 asennettuna tietokoneellasi

Lisätiedot

UML ja luokkien väliset suhteet

UML ja luokkien väliset suhteet UML ja luokkien väliset suhteet -Luokan kuvaaminen UML-tekniikalla -Yhteyssuhde ja koostumussuhde 1 Luokan kuvaaminen UML-tekniikalla : Luokka - attribuutti1 : tietotyyppi # attribuutti2 : tietotyyppi

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Käyttöliittymän luominen

Käyttöliittymän luominen 119 L U K U 4 Käyttöliittymän luominen Oppitunti 1: Windows-sovelluksen käyttöliittymät 120 Oppitunti 2: Dialogien luominen 139 Laboratorio 4: STUploadin käyttöliittymän luominen 150 Kertaus 159 Tässä

Lisätiedot

Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Koordinaattieditori

Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Koordinaattieditori Testitapaukset - Koordinaattieditori Sisällysluettelo 1. Johdanto...3 2. Testattava järjestelmä...4 3. Toiminnallisuuden testitapaukset...5 3.1 Uuden projektin avaaminen...5 3.2 vaa olemassaoleva projekti...6

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

,QWHUQHWVHODLPHQNl\WWlPLQHQ±,QWHUQHW([SORUHU

,QWHUQHWVHODLPHQNl\WWlPLQHQ±,QWHUQHW([SORUHU ,QWHUQHWVHODLPHQNl\WWlPLQHQ±,QWHUQHW([SORUHU Tässä pääsette tutustumaan Internet Explorerin (IE) käyttöön. Muitakin selainversioita löytyy, kuten esimerkiksi Netscape, Opera ja Mozilla. Näiden muiden selainten

Lisätiedot

GPRS-lisäpalvelu INTERNET-ASETUKSET

GPRS-lisäpalvelu INTERNET-ASETUKSET GPRS-lisäpalvelu INTERNET-ASETUKSET GPRS-lisäpalvelu Internet-asetukset 2(22) Sisällysluettelo 1 INTERNET-ASETUKSET MICROSOFT WINDOWS 95/98... 3 1.1 MODEEMIN ASENNUS... 3 1.2 APN:N ASETTAMINEN... 3 1.3

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Tulostinajurin ja paperikoon konfigurointiohjeet AutoCad 2006-2007 ohjelmille

Tulostinajurin ja paperikoon konfigurointiohjeet AutoCad 2006-2007 ohjelmille Tulostinajurin ja paperikoon konfigurointiohjeet AutoCad 2006-2007 ohjelmille Erilaisista tulostusjärjestelmistä johtuen kopiolaitokset suosittelevat eri tulostinajureita tulostustiedostojen tekemiseen.

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko

Lisätiedot

KEMI-TORNIONLAAKSON KOULUTUSKUNTAYHTYMÄ LAPPIA LANGATON VIERAILIJAVERKKO 2(7) VERKKOYHTEYDEN MÄÄRITTELY WINDOWS XP:LLE (WINDOWS XP SP3)

KEMI-TORNIONLAAKSON KOULUTUSKUNTAYHTYMÄ LAPPIA LANGATON VIERAILIJAVERKKO 2(7) VERKKOYHTEYDEN MÄÄRITTELY WINDOWS XP:LLE (WINDOWS XP SP3) LANGATON VIERAILIJAVERKKO 1(7) LANGATTOMAN VIERAILIJAVERKON KÄYTTÖ Kemi-Tornionlaakson koulutuskuntayhtymä Lappia tarjoaa vierailijoiden, opiskelijoiden ja henkilökunnan käyttöön suojatun langattoman verkon

Lisätiedot

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Google-dokumentit. Opetusteknologiakeskus Mediamylly Google-dokumentit 1 2 3 Yleistä 1.1 Tilin luominen 4 1.2 Docs-päävalikkoon siirtyminen 7 Dokumentit-päävalikko 2.1 Kirjaudu Dokumentteihin 9 2.2 Lähetä tiedosto Google-dokumentteihin 11 2.3 Uuden asiakirjan

Lisätiedot

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. XNA grafiikka laajennus opas Paavo Räisänen www.ohjelmoimaan.net Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei

Lisätiedot

KÄYTTÖOHJE. Servia. S solutions

KÄYTTÖOHJE. Servia. S solutions KÄYTTÖOHJE Servia S solutions Versio 1.0 Servia S solutions Servia Finland Oy PL 1188 (Microkatu 1) 70211 KUOPIO puh. (017) 441 2780 info@servia.fi www.servia.fi 2001 2004 Servia Finland Oy. Kaikki oikeudet

Lisätiedot

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 8. Quick Start - opas Condes 8. olfellows www.olfellows.fi 1.

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 8. Quick Start - opas Condes 8. olfellows www.olfellows.fi 1. Condes Suunnistuksen ratamestariohjelmisto Versio 8 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO Sähköposti: jouni.laaksonen@olfellows.fi www.olfellows.fi olfellows

Lisätiedot

EASY Tiedostopalvelin - mobiilin käyttöopas

EASY Tiedostopalvelin - mobiilin käyttöopas EASY Tiedostopalvelin - mobiilin käyttöopas ios www.storageit.fi - Äyritie 8 D, 01510 VANTAA Salorantie 1, 98310 KEMIJÄRVI Sisältö 1. Lataaminen ja asennus 2. Kansiot ja tiedostot Uusien tiedostojen luonti

Lisätiedot

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager Missio: 1. Asentaminen 2. Valokuvien tarkastelu, tallennus/formaatit, koko, tarkkuus, korjaukset/suotimet, rajaus 3. Kuvan luonti/työkalut (grafiikka kuvat) 4. Tekstin/grafiikan lisääminen kuviin, kuvien/grafiikan

Lisätiedot

Nettiposti. Nettiposti käyttöohje

Nettiposti. Nettiposti käyttöohje YKSIKÄÄN ASIAKAS EI OLE MEILLE LIIAN PIENI TAI MIKÄÄN HAASTE LIIAN SUURI. Nettiposti Nettiposti käyttöohje Tässä käyttöohjeessa kuvataan selainkäyttöisen Nettiposti sähköpostiohjelman toiminnot. Käyttöohje

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen

Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen Asko Ikävalko, k0201291 22.2.2004 TP02S-D Ohjelmointi (C-kieli) Projektityö Työn valvoja: Olli Hämäläinen Asko Ikävalko LOPPURAPORTTI 1(11) Ratkaisun kuvaus Käytetyt tiedostot Tietuerakenteet Onnistuin

Lisätiedot