WINNEW() funktiolla luodaan taulukko vektorimuuttujasta. Oheisessa esimerkissä esim. ikkunassa Test on taulukko, joka on myös eräänlainen ikkuna.
Funktion DBOHJEL2() toiminnot selitetty lopussa.
[otsikko] Ei käytössä. Tyhjä teksti "" tai pois.
[x] ikkunan vasen 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ä. Näissä ei ole mukana Windowsin mahdollisesti luomia kelauspalkkeja, jotka ovat lisää.
[arvo] on ikkunan erikoistyyli, kt. esimerkki ja kt. tyylit. Yleensä jätetään tyhjäksi
[maski] Ei käytössä. Nolla tai pois.
[id-arvo] Ei käytössä. Nolla tai pois.
[muuttuja]
vektori, jossa on taulukkoon tarkoitetut rivit ja sarakkeet ja niiden määritykset, otsikot ja muut lisätoiminnot.
Muuttujan ns. osoite lähetään funktiolle double() -funktolla.
Kt. esimerkki.
Funktio palauttaa ikkunapidikkeen tai nollan jos funktio epäonnistuu.
Tällä funktiolla luodaan kuvaruutuun taulukko sille annetusta verktorista.
|
use file2 |
|
Taulukko -ikkunoihin voi lähettää erilaisia viestejä winstatus(), sendmessage() ja postmes() -funktiolla erilaisten Windowsin omien viestien lisäksi:
(HUOM! näillä esimerkeillä viittaan ylläolevan esimerkin taulukkoon, tab1)
Kun yritetään mennä alimman rivin alle taulukon aliohjelma saa viestin nappain=-40.
Taulukon aliohjelma saa viestin nappain=3.
Taulukon aliohjelma saa viestin nappain=2.
Taulukon aliohjelma saa viestin nappain=7.
Taulukon aliohjelma saa viestin nappain=46.
Taulukon aliohjelma saa viestin nappain=1037.
winstatus(tab1,num1)
Kun lähetetään oheinen kysely taulukolle funktio palauttaa numeron, joka kertoo missä tietueessa musta tai harmaa palkki on.
Palautusarvoa ei saa olla winstatus() funktiolla: ei näin num1=winstatus(tab1,num1).
winstatus(tab1,num1,num2)
Kun lähetetään oheinen kysely taulukolle funktio tallentaa muuttujaan num1 rivinumeron ja num2 muuttujaan sarakkeen.
Palautusarvoa ei saa olla winstatus() -funktiolle ja parametrit 2 ja 3 pitää olla tavallisia muuttujia - ei vektoreita eikä kenttiä.
postmes(tab1,1024+4,0,double(i2))
Kun lähetetään viesti 1024+4 (eli 1028), kolmas parametri on 0 ja neljäs parametri sisältää uudet arvot ja asetukset double() funktiolla annettuna ohjelma luo koko taulukon uudestaan.
Tällöin on syytä käyttää postmes() -viestifunktiota.
Taulukolla on sisäinen muuttuja, johon voi tallentaa erilaisia asetuksia. Tähän muuttujaan annetaan binäärinumeron osissa erilaisia asetuksia, joista taulukko käyttää ja tarkistaa.
Esim. funktiolla sendmessage(tab1,1024+4,1,1) lähetetään viesti, jossa toinen parametri on 1028 ja kolmas parametri on numero - tässä 1.
Tällöin ohjelma asettaa taulukon editointitilaan eli kenttiä voi muuttaa suoraan kirjoittamalla tai painamalla ensin Enter.
Numero on binäärisenä 00000001 eli kahdeksas osa on 1.
Mikäli halutaan, että aliohjelmalta kysytään saako muutosta tehdä lähetetään 512 eli 10000000.
Eri asetuksia voi yhdistää eli voidaan lähettää esim. 10000001 eli editointitila on asetettu ja lupaa lisäksi kysytään.
Ohessa erilaisia asetuksia:
0000000000 0 Perustila
1000000000 512 = ennen editointia lähetetään aliohjelmalle nappain=4 ja jos tapahtuu lastkey(-1) editointia ei sallita, jos taas esim. lastkey(0) editointi sallitaan.
0000000001 1 = taulukkoa saa editoida
0000000010 2 = editointi on meneillään
0010000000 128 = taulukon sarakkeissa on tapahtunut muutos, esim. leveys on muuttunut
0100000000 256 = kun painetaan näppäimistössä A-Z tai 0-9 tai jotain josta tulee edit ajetaan aliohjelma ensin
0000001000 8 = ei-päivitetä moodi päällä
0000010000 16 = alt+nappain menee taulukon aliohjelmaan. Normaalisti kun painetaan Alt+nappain viesti menee pääikkunalle. Tällä asetukselle määrätään, että viesti menee taulukon aliohjelmalle.
0001000000 64 = Kun taulukon tietoja muutetaan ohjelma lähettää aliohjelmaan viestin -5.
Huom! erilaisia asetuksia voi antaa yhdessä: esim. sendmessage(tab1,1024+4,1,1+16).
sendmessage(tab1,1024+4,3,0)
Kun lähetetään viesti 1024+4 (eli 1028), kolmas parametri on 3 taulun sisäiseen muistiin päivittyy nykyinen tietokanta.
Tätä käytetään silloin kun taulukko on näkyville se suljetaan ja sama tai samanlainen tietokanta avataan uudestaan ilman, että taulukkoa suljettaisiin välillä.
sendmessage(tab1,1024+4,4,65536*610+4)
Kun lähetetään viesti 1024+4 (eli 1028), kolmas parametri on 4 jollekin sarakkeelle asetetaan seuraava toiminto:
kun sarakkeen kenttää ollaan editoimassa lähetetään viesti aliohjelmalle.
Esimerkissä sarakkeelle 4 asetetaan ko. ehto ja lähetettävä viesti on 610 (nappain=610). Neljäs parametri koostuu siis HIWORD 610 numerosta ja LOWORD 4 numerosta.
sendmessage(tab1,1024+4,6,610)
Kun lähetetään viesti 1024+4 (eli 1028), kolmas parametri on 6 ohjelma lähettää viestin (nappain=neljäs parametri) aliohjelmalle, esim. 610.
Normaalisti kun editointi päättyy aliohjelma saa 13, 38 tai 40 (Enter,nuoli-ylös,nuoli-alas).
sendmessage(tab1,1024+4,7,double(apu1))
Kun lähetetään ylläoleva viesti 1024+4 (eli 1028), kolmas parametri on 7 muut asiat ovat kuten yllä
arvo apu1 saa taulukon tämän hetkiset asetukset. Esim. apu1[1,7,4]="9,999.99". Edellytys on, että tässä esimerkissä muuttuja apu1 sisältään vektorirakenteen, joka on sopiva taulukkoasetuksiin.
sendmessage(tab1,1024+5,2,0)
Kun lähetetään ylläoleva viesti 1024+5 (eli 1029), kolmas parametri on joku tietuenumero (tässä esim. 2)
taulukko päivittyy siten, että tietue (tässä 2) tulee ylimmälle riville.
Mikäli taulukko on aktiivinen mitään ei tehdä.
Mikäli taulukko on aktiivinen ja kolmas parametri on nolla ohjelma tarkistaa ollaanko eof() tai bof() tilassa ja tarvittaessa menee ensimmäiseen tai viimeiseen tietueeseen.
sendmessage(tab1,1024+6,2,0)
Kun lähetetään ylläoleva viesti 1024+6 (eli 1030), kolmas parametri on joku tietuenumero (tässä esim. 2)
taulukko päivittyy siten, että tietue (tässä 2) tulee alimmalle riville ja musta palkki menee ensimmäiseen sarakkeeseen.
Mikäli kolmas parametri on nolla taulukko päivittyy siten, että musta palkki menee alimmalle riville ja ensimmäiseen sarakkeeseen.
sendmessage(tab1,1024+7,0,0)
Kun lähetetään ylläoleva viesti 1024+7 (eli 1031) esiin tulee etsintäikkuna. Etsintä etsii kaikista tiedoston tiedoista - ei vain näkyvistä sarakkeista.
sendmessage(tab1,1024+8,0,0)
Kun lähetetään ylläoleva viesti 1024+8 (eli 1032) taulukkoon päivittyy seuraavasti:
Jos kolmas parametri on nolla mennään ensimmäiseen tietueeseen.
Jos kolmas parametri on 1 mennään viimeiseen (alimpaan) tietueeseen.
sendmessage(tab1,1024+9,0,0)
Kun lähetetään ylläoleva viesti 1024+9 (eli 1033) taulukko päivittyy. Tätä on syytä käyttää kun tietue ei ei ole
vaihtunut ja musta palkki on samalla paikalla.
filt={50,10,200,300} && {x-vasen,y-ylä,x-oikea,y-ala}
sendmessage(tab1,1024+10,double(filt),0)
Kun lähetetään ylläoleva viesti 1024+10 (eli 1034) taulukko päivittyy. Tätä on syytä käyttää kun tietue ei ei ole
vaihtunut ja musta palkki on samalla paikalla mutta taulukon ulkomitat ovat muuttuneet.
Ulkomitat annetaan vektorissa double() -funktion sisällä.
sendmessage(tab1,1024+11,0,double(apu1))
Kun lähetetään ylläoleva viesti 1024+4 (eli 1028), neljäs parametri on 7 muut asiat ovat kuten yllä
arvo apu1[1] saa taulukossa mahdollisesti editoitavan ikkunan pidike-numeron.
arvo=winstatus(tab1,num1,num2)
Kun lähetetään oheinen kysely taulukolle funktio palauttaa mitä on rivin num1 sarakkeessea num2 oleva arvo.
Esim. arvo=winstatus(tab1,3,2) tallentaa arvo -muuttujaan "Merimies".
sendmessage(tab1,1024+4,3,0)
Kun lähetetään viesti 1024+4 (eli 1028) taulukon sisäinen tietokantapidike päivittyy aktiiviseksi tietokannaksi.
sendmessage(tab1,1024+5,3,0)
Oheinen käsky siirtää palkin taulukon riville 3. Jos taulukolla on aliohjelma se saa viestin nappain=5000.
sendmessage(tab1,1024+6,0,0)
Oheinen viesti käskee taulukkoa päivittämään taulukon rivit. Tätä käytetään esim. jos taulukon tietoja on jotenkin muutettu.
dbohjel2(2009,tab1)
Oheinen viesti käskee taulukkoa kopioimaan aktiiviselle sarakkeelle tiedot ylemmän rivin sarakkeelta.
dbohjel2(2010,tab1)
Oheinen viesti käskee taulukkoa kopioimaan aktiiviselle riville tiedot ylemmältä riville.
dbohjel2(46,tab1)
Oheinen viesti käskee taulukkoa poistamaan aktiivisen rivin.
dbohjel2(-46,tab1)
Oheinen viesti käskee taulukkoa tuo esille maalattuja rivejä koskevia toimintoja valikossa, esim. poista valitut rivit.
dbohjel2(-1001,tab1)
Funktio palauttaa maalattujen rivien tietuenumerot vektorina.