IBM Lotus Symphony
|
![]() |
Seuraavassa kuvattu lisäosien avulla toteutettava Lotus Symphony Spreadsheets -ohjelman laajennustapa on vanhentunut. Liittymät ovat edelleen tuettuja, jotta voidaan varmistaa aikaisempien lisäosien yhteensopivuus, mutta uusien lisäosien ohjelmoinnissa tulee käyttää uusia API-funktioita. |
Lotus Symphony Spreadsheets -ohjelmaa voi laajentaa lisäosien avulla. Lisäosat ovat ulkoisia ohjelmointimoduuleja, jotka sisältävät lisäfunktioita laskentataulukoiden käsittelyyn. Lisäosien luettelo on ohjatun funktiotoiminnon Lisäosa-luokassa. Jos haluat ohjelmoida lisäosan itse, saat tässä osassa tietoja siitä, mitkä funktiot ulkoisen DLL-kirjaston on vietävä, jotta lisäosan voi liittää onnistuneesti.
Lotus Symphony etsii sopivan DLL-kirjaston kokoonpanossa määritetystä lisäosakansiosta. Jotta Lotus Symphony tunnistaa DLL-kirjaston, kirjastolla on oltava tietyt ominaisuudet, jotka selitetään jäljempänä. Näiden tietojen avulla voit ohjelmoida omia lisäosia Lotus Symphony Spreadsheets -ohjelman ohjattuun funktiotoimintoon.
Kukin lisäosakirjasto sisältää useita funktioita. Joitakin funktioita käytetään hallintatarkoituksiin. Voit valita funktioillesi lähes minkä nimen tahansa. Funktioiden on kuitenkin noudatettava tiettyjä parametrien välitystä koskevia sääntöjä. Tarkat nimeämis- ja kutsukäytännöt vaihtelevat käyttöympäristön mukaan.
Kirjastossa on oltava ainakin hallintafunktiot GetFunctionCount ja GetFunctionData. Niiden avulla voidaan määrittää funktiot, parametrien lajit ja paluuarvot. Paluuarvo voi olla pitkä liukuluku tai merkkijono. Parametrina voi lisäksi käyttää pitkiä liukulukuja sisältävän taulukon, merkkijonotaulukon tai solutaulukon solualueita.
Parametrit välitetään viittausten avulla. Siksi näitä arvoja voi periaatteessa muuttaa. Lotus Symphony Spreadsheets -ohjelma ei kuitenkaan tue arvojen muuttoa, koska se ei ole järkevää laskentataulukoissa.
Kirjastot voi ladata uudelleen ohjelman ajon aikana, ja hallintafunktiot voivat analysoida niiden sisältöä. Funktioista on saatavana tiedot niiden sisäisestä ja ulkoisesta nimestä sekä parametrien määrästä ja lajista. Lisäksi nähtävissä on funktion hallintanumero.
Funktiot kutsutaan tahdistetusti, ja ne palauttavat tulokset heti. Funktiot voivat olla myös reaaliaikaisia (asynkronisia). Tällaiset funktiot ovat kuitenkin monimutkaisia, joten niitä ei selitetä yksityiskohtaisesti.
Lotus Symphony Spreadsheets -ohjelmaan liitettävässä lisäosafunktiossa voi olla enintään 16 parametria: yksi paluuarvo ja enintään 15 funktion syöteparametria.
Tietolajit määritetään seuraavasti:
Tietolaji | Määritelmä |
---|---|
CALLTYPE | Windows-järjestelmät: FAR PASCAL (_far _pascal) Muut järjestelmät: oletusasetus (käyttöjärjestelmäkohtainen) |
USHORT | 2-tavuinen etumerkitön kokonaisluku |
DOUBLE | 8-tavuinen ympäristöriippuvainen muoto |
Paramtype | Ympäristöriippuvainen (kuten int) PTR_DOUBLE =0: osoitin pitkään liukulukuun PTR_STRING =1: osoitin nollaan päättyvään merkkijonoon PTR_DOUBLE_ARR =2: osoitin pitkiä liukulukuja sisältävään taulukkoon PTR_STRING_ARR =3: osoitin merkkijonotaulukkoon PTR_CELL_ARR =4: osoitin solutaulukkoon NONE =5 |
Seuraavassa on kuvaus ulkoisessa DLL-kirjastossa aloitettavista funktioista.
Seuraavat seikat koskevat kaikkia DLL-funktioita:
void CALLTYPE fn(tulos, syöte_1, syöte_2, ...)
Tulos: tulosarvo
Syöte: mikä tahansa lajia (double&, char*, double*, char**, solualue) oleva numero, missä solualue on pitkiä liukulukuja sisältävä taulukko, merkkijonotaulukko tai solutaulukko.
Tämä funktio palauttaa funktioiden määrän viittausparametrin hallintafunktioita lukuun ottamatta. Kullakin funktiolla on ainutkertainen numero 0 - (nMäärä-1). GetFunctionData- ja GetParameterDescription-funktio käyttävät myöhemmin tätä numeroa.
Syntaksi
void CALLTYPE GetFunctionCount(USHORT& nMäärä)
Parametri
USHORT &nMäärä:
Lähtö: Viittaus lisäosafunktioiden määrän sisältävään muuttujaan. Esimerkki: Jos lisäosassa on viisi Lotus Symphony Spreadsheets -ohjelman funktiota, nMäärä on 5.
Tämä funktio määrittää kaikki lisäosan tärkeät tiedot.
Syntaksi
void CALLTYPE GetFunctionData(USHORT& nNo, char* pFunkNimi, USHORT& nParamMäärä, Paramtype* peLaji, char* pSisäinenNimi)
Parametri
USHORT& nNo:
Syöte: Funktion numero 0 - (nMäärä-1) nämä numerot mukaan lukien.
char* pFunkNimi:
Lähtö: Ohjelmoijan näkemä DLL-kirjastoon määritetty funktion nimi. Tämä ei ole sama kuin ohjatussa funktiotoiminnossa käytettävä nimi.
USHORT& nParamMäärä:
Lähtö: Lisäosafunktion parametrien määrä. Tämän numeron on oltava suurempi kuin 0, koska funktio palauttaa aina arvon. Enimmäisarvo on 16.
Paramtype* peLaji:
Lähtö: Osoitin täsmälleen 16 Paramtype-lajia olevaa muuttujaa sisältävään taulukkoon. Ohjelma täyttää ensimmäiset nParamMäärä-merkinnät sopivanlajisilla parametreilla.
char* pSisäinenNimi:
Lähtö: Käyttäjän näkemä funktion nimi eli ohjatussa funktiotoiminnossa näkyvä nimi. Nimessä voi käyttää laajennetun merkistön sisältämiä merkkejä, kuten ä- ja ö-merkkejä.
Parametrit pFunkNimi ja pSisäinenNimi ovat merkkijonotaulukoita. Lotus Symphony Spreadsheets toteuttaa ne käyttämällä kokoa 256.
Tämä funktio sisältää lisäosafunktion ja sen parametrien lyhyen kuvauksen. Valinnaisesti tätä funktiota voi käyttää tuomaan lisäosafunktion ja sen parametrien kuvauksen näkyviin ohjatussa funktiotoiminnossa.
Syntaksi
void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pNimi, char* pKuvaus)
Parametri
USHORT& nNo:
Syöte: Funktion numero kirjastossa. Arvo voi olla 0 - (nMäärä-1).
USHORT& nParam:
Syöte: Ilmaisee, mille parametrille kuvaus annetaan. Parametrien numerot alkavat numerosta 1. Jos nParam-arvo on 0, pKuvaus sisältää varsinaisen kuvauksen. Tällöin pNimi-parametrin arvo on merkityksetön.
char* pNimi:
Lähtö: Parametrin nimi tai laji, esimerkiksi sana "Numero", "Merkkijono" tai "Päivämäärä". Lotus Symphony Spreadsheets -ohjelmassa tämä toteutetaan muodossa char[256].
char* pKuvaus:
Lähtö: Parametrin kuvaus, esimerkiksi "Maailmankaikkeudelle laskettava arvo". Lotus Symphony Spreadsheets -ohjelmassa tämä toteutetaan muodossa char[256].
pNimi ja pKuvaus ovat merkkijonotaulukoita, jotka on Lotus Symphony Spreadsheets -ohjelmassa toteutettu käyttämällä kokoa 256. Huomaa, että ohjatussa funktiotoiminnossa käytettävissä oleva tilan määrä on rajallinen, joten koko 256 merkin pituutta ei voi käyttää.
Seuraavissa taulukoissa on tietoja siitä, mitkä tietorakenteet ulkoiselle ohjelmamoduulille on annettava, jotta se voi välittää solualueita. Lotus Symphony Spreadsheets jakaa taulukot kolmeen ryhmään niiden tietolajin mukaan.
Parametrina voi välittää solualueen, jonka arvot ovat numeroita tai pitkiä liukulukuja. Pitkiä liukulukuja sisältävä taulukko määritetään Lotus Symphony Spreadsheets -ohjelmassa seuraavasti:
Siirtymä | Nimi | Kuvaus |
---|---|---|
0 | Sar_1 | Solualueen vasemmassa yläkulmassa olevan sarakkeen numero. Numerointi alkaa nollasta. |
2 | Rivi_1 | Solualueen vasemmassa yläkulmassa olevan rivin numero. Numerointi alkaa nollasta. |
4 | Taul_1 | Solualueen vasemmassa yläkulmassa olevan taulukon numero. Numerointi alkaa nollasta. |
6 | Sar_2 | Solualueen oikeassa alakulmassa olevan sarakkeen numero. Numerointi alkaa nollasta. |
8 | Rivi_2 | Solualueen oikeassa alakulmassa olevan rivin numero. Numerointi alkaa nollasta. |
10 | Taul_2 | Solualueen oikeassa alakulmassa olevan taulukon numero. Numerointi alkaa nollasta. |
12 | Määrä | Seuraavien elementtien määrä. Ohjelma ei laske eikä välitä tyhjiä soluja. |
14 | Sar | Elementin sarakenumero. Numerointi alkaa nollasta. |
16 | Rivi | Elementin rivinumero. Numerointi alkaa nollasta. |
18 | Taul | Elementin taulukkonumero. Numerointi alkaa nollasta. |
20 | Virhe | Virhenumero. Arvo 0 tarkoittaa, ettei virheitä ole. Jos elementti on peräisin kaavasolusta, kaava määrittää virheen arvon. |
22 | Arvo | 8-tavuinen IEEE-muuttuja, jonka tietolaji on pitkä liukuluku tai liukulukumuuttuja. |
30 | ... | Seuraava elementti. |
Solualue, joka sisältää tekstitietolajin arvoja ja jonka funktio välittää merkkijonotaulukkona. Merkkijonotaulukko määritetään Lotus Symphony Lotus Symphony Spreadsheets -ohjelmassa seuraavasti:
Siirtymä | Nimi | Kuvaus |
---|---|---|
0 | Sar_1 | Solualueen vasemmassa yläkulmassa olevan sarakkeen numero. Numerointi alkaa nollasta. |
2 | Rivi_1 | Solualueen vasemmassa yläkulmassa olevan rivin numero. Numerointi alkaa nollasta. |
4 | Taul_1 | Solualueen vasemmassa yläkulmassa olevan taulukon numero. Numerointi alkaa nollasta. |
6 | Sar_2 | Solualueen oikeassa alakulmassa olevan sarakkeen numero. Numerointi alkaa nollasta. |
8 | Rivi_2 | Solualueen oikeassa alakulmassa olevan rivin numero. Numerointi alkaa nollasta. |
10 | Taul_2 | Solualueen oikeassa alakulmassa olevan taulukon numero. Numerointi alkaa nollasta. |
12 | Määrä | Seuraavien elementtien määrä. Ohjelma ei laske eikä välitä tyhjiä soluja. |
14 | Sar | Elementin sarakenumero. Numerointi alkaa nollasta. |
16 | Rivi | Elementin rivinumero. Numerointi alkaa nollasta. |
18 | Taul | Elementin taulukkonumero. Numerointi alkaa nollasta. |
20 | Virhe | Virhenumero. Arvo 0 tarkoittaa, ettei virheitä ole. Jos elementti on peräisin kaavasolusta, kaava määrittää virheen arvon. |
22 | Pituus | Seuraavan merkkijonon pituus lopussa oleva nollatavu mukaan lukien. Jos pituus lopussa oleva nollatavu mukaan lukien on pariton luku, funktio lisää merkkijonon toisen nollatavun, jotta pituuden arvo on parillinen luku. Siksi Pituus lasketaan käyttämällä kaavaa ((MerkkijonoPituus + 2)&~1). |
24 | Merkkijono | Merkkijono, jonka viimeinen merkki on nollatavu |
24+Pituus | ... | Seuraava elementti. |
Solutaulukoita käytetään sekä tekstiä että numeroita sisältävien solualueiden kutsuun. Solutaulukko määritetään Lotus Symphony Spreadsheets -ohjelmassa seuraavasti:
Siirtymä | Nimi | Kuvaus |
---|---|---|
0 | Sar_1 | Solualueen vasemmassa yläkulmassa olevan sarakkeen numero. Numerointi alkaa nollasta. |
2 | Rivi_1 | Solualueen vasemmassa yläkulmassa olevan rivin numero. Numerointi alkaa nollasta. |
4 | Taul_1 | Solualueen vasemmassa yläkulmassa olevan taulukon numero. Numerointi alkaa nollasta. |
6 | Sar_2 | Solualueen oikeassa alakulmassa olevan sarakkeen numero. Numerointi alkaa nollasta. |
8 | Rivi_2 | Solualueen oikeassa alakulmassa olevan rivin numero. Numerointi alkaa nollasta. |
10 | Taul_2 | Solualueen oikeassa alakulmassa olevan taulukon numero. Numerointi alkaa nollasta. |
12 | Määrä | Seuraavien elementtien määrä. Ohjelma ei laske eikä välitä tyhjiä soluja. |
14 | Sar | Elementin sarakenumero. Numerointi alkaa nollasta. |
16 | Rivi | Elementin rivinumero. Numerointi alkaa nollasta. |
18 | Taul | Elementin taulukkonumero. Numerointi alkaa nollasta. |
20 | Virhe | Virhenumero. Arvo 0 tarkoittaa, ettei virheitä ole. Jos elementti on peräisin kaavasolusta, kaava määrittää virheen arvon. |
22 | Laji | Solun sisällön laji. Arvo 0 tarkoittaa pitkää liukulukua ja 1 merkkijonoa. |
24 | Arvo tai Pituus | Jos laji on 0, tämä on 8-tavuinen IEEE-muuttuja, jonka tietolaji on pitkä liukuluku tai liukulukumuuttuja. Jos laji on 1, tämä on seuraavan merkkijonon pituus lopussa oleva nollatavu mukaan lukien. Jos pituus lopussa oleva nollatavu mukaan lukien on pariton luku, funktio lisää merkkijonon toisen nollatavun, jotta pituuden arvo on parillinen luku. Siksi Pituus lasketaan käyttämällä kaavaa ((MerkkijonoPituus + 2)&~1). |
26, jos laji on 1 | Merkkijono | Jos laji on 1, tämä on merkkijono, jonka viimeinen merkki on nollatavu. |
32 tai 26 + pituus | ... | Seuraava elementti. |