WINNEW() funktiolla luodaan ikkunoita ja ikkunoiden objekteja. Tällä versiolla luodaan aktiiviseen ikkunaan
kalenterinäkymä.
uuden kalenteri-objektin saa luotua vetämällä hiiren kakkosnapilla alaspainettuna sopivan laatikon. Laatikkoon
tallentuu tietoa, joka välittyy myös ohjelmalle.
[x] ikkunan oikea reuna pikseleissä kuvaruuden reunasta katsoen. Jos jätetään pois ohjelma käyttää nollaa.
[y] ikkunan yläreuna pikseleissä kuvaruuden yläreunasta katsoen. Jos jätetään pois ohjelma käyttää nollaa.
[leveys] ja [korkeus] ikkunan ulkomitat tai [korkeus] pikseleissä.
"KALEN" on ikkunan tyyli.
[arvot] Vektorimuuttuja listan nimikkeistä.
Funktio palauttaa ikkunapidikkeen tai nollan jos funktio epäonnistuu.
|
oldwin=setwindow() |
|
Kalenteri -ikkunoihin voi lähettää erilaisia viestejä sendmessage() ja postmes() -funktiolla erilaisten Windowsin omien viestien lisäksi:
(HUOM! näillä esimerkeillä viittaan ylläolevan esimerkin ikkunoihin)
Kun hiirellä on vedetty kalenteriin laatikko ja hiirinappi vapautetaan ohjelma saa viestin (esim. esimerkissä):
apu=1025 ja getlist saa tällöin nolla. Tällöin kalenteria luodessa annettuun vektoriin (tässä oo) tallentuu seuraavasti:
oo[4,1]=alkupäivä, esim 17.10.2015
oo[4,2]=alkukellonaika, esim. 13:01
oo[4,3]=loppukellonaika, esim. 13:14
oo[4,4]=väri ja palkin korkeus ja leveys, esim. "FF00803 32 222"
Yllä oleva leveys ja korkeus on suhteutettu pikselietäisyyteen päiväreunasta ja päiväleveysteen 170. Jos kalenteri
on skaalattuna eri kokoisesti palautusarvo on silti sama. Esim. 32 tarkoittaa, että laatikko alkaa n. 32
pikseliä päiväreunasta ja jatkuu sitten 222 pikseliä oikealle eli jatkuu seuraavaan päivään.
Jos pistenappia on klikattu apu=1026 ja getlist saa kuudennen parametrin sisäisestä vektorista, esim. 21 (esimerkissä).
jut={}
aadd(jut,{date(),"18:15","18:45","FF00FF 50 150","Lisää",21})
postmes(obs,273,299,double(jut))
Kun lähetetään viesti 299 ja neljäs parametri on vektori kuten yllä kalenterissä on uusi laatikko
vektori on muotoa: {päivä,"alkukellonaika","loppukellonaika","väri x-reuna leveys","Laatikon teksti",arvo,..}
Huom! kuudes arvo vektorissa palautetaan kun klikataan pistenappia laatikossa.
Väri on RGB arvo hexadesimaalina RRGGBB.
Laatikon sisälle tulevassa tekstissä on olla rivinvaihto CR+LF.
Uuden arvon (samalla voi lähettää useammankin) lähettämiseen on syytä käyttää POSTMES() -funktiota ja sen jälkeen
kalenetri tulisi päivittää.
sendmessage(obs,273,1024+4,0)
Kun lähetetään viesti 1024+4 (eli 1028) ikkunalle se muuttuu aktiiviseksi.
posmes(obs,273,300,0)
Kun lähetetään viesti 300 kalenterin näkymä vierittyy päivän eteenpäin.
posmes(obs,273,301,0)
Kun lähetetään viesti 301 kalenterin näkymä vierittyy päivän taaksepäin.
sendmessage(obs,273,1024+5,0)
Kun lähetetään viesti 1024+5 (eli 1029) ikku päivittyy.
oo={20,10,150,300} /* {vasen reuna,yläreuna,leveys,korkeus} */
sendmessage(obs,273,1024+6,double(oo))
Kun lähetetään viesti 1024+6 (eli 1030) ikku päivittyy ja sen koko muuttuu.
oo={0,0} /* {päiväleveys,rivikorkeus} */
sendmessage(obs,273,1024+7,double(oo))
Kun lähetetään viesti 1024+7 (eli 1031) annettuun vektoriin tallentuu pikseleissä {päiväleveys,rivikorkeus}
sendmessage(obs,1024+4,1,0)
Kun lähetetään viesti 1024+4 ja kolmas parametri on ykkönen neljännellä parametrilla voidaan
säätää voiko laatikon vetää oiekan rajan yli (nolla=ei voi, 1= voi). Perusasetus on nolla eli ei voi.
sendmessage(obs,1024+5,rgb(255,0,128),100)
Kun lähetetään viesti 1024+5 kolmas parametri on väri ja neljäs päiväleveys.
sendmessage(obs,1024+6,1,double({10})
Kun lähetetään viesti 1024+6 kolmas parametri 1, neljäs parametri asettaa (kasvattaa) päiväleveyttä.
Jos läheteään negatiivinen luku leveys pienenee - ei kuitenkaan alle 20 pikseliä.
Jos annetaan nolla arvoon tallentuu nykyinen leveys (double -funktion sisällä pitää olla muuttuja).
sendmessage(obs,1024+6,2,double({10})
Kun lähetetään viesti 1024+6 kolmas parametri 2, neljäs parametri asettaa (kasvattaa) päiväkorkeutta.
sendmessage(obs,1024+6,3,double({10})
Kun lähetetään viesti 1024+6 kolmas parametri 3, neljäs parametri asettaa (kasvattaa) tuntikorkeutta.
sendmessage(obs,1024+6,4,double({10})
Kun lähetetään viesti 1024+6 kolmas parametri 4, neljäs parametri asettaa (kasvattaa) varttikorkeutta.