Dodatek za programiranje v modulu LibreOffice Calc

Ikona opozorila

V nadaljevanju opisana metoda za raz┼íiritev programa Calc s pomo─Źjo dodatkov je zastarela. Vmesniki so ┼íe vedno veljavni in imajo podporo, tako da lahko zagotovijo ujemanje z obstoje─Źimi dodatki, toda za programiranje novih dodatkov morate uporabiti nove funkcije API.


LibreOffice Calc se da raz┼íiriti z dodatki, ki so zunanji programski moduli. Ti omogo─Źajo dodatne funkcije za delo s preglednicami. Te so na┼ítete v ─îarovniku za funkcije pod kategorijo Dodatek. ─îe bi radi sami sprogramirali svoj dodatek, se tu lahko nau─Źite, katere funkcije morate izvoziti z , da boste dodatek lahko uspe┼íno pripeli.

LibreOffice prei┼í─Źe mapo Dodatki, ki je dolo─Źena v konfiguraciji za ustrezno . ─îe ┼żelite, da jo aplikacija LibreOffice prepozna, mora imeti dolo─Źene lastnosti, kot so razlo┼żene v nadaljevanju. Te informacije vam omogo─Źajo programiranje lastnih dodatkov za ─îarovnika za funkcije v LibreOffice Calc.

Koncept dodatkov

Vsaka knji┼żnica dodatkov omogo─Źa ve─Ź funkcij. Nekatere funkcije se uporabljajo za administrativne namene. Za svoje lastne funkcije lahko izberete skoraj kakr┼íno koli ime. Vendar, pri tem morate upo┼ítevati tudi dolo─Źena pravila v zvezi s prena┼íanjem parametrov. Natan─Źne konvencije za poimenovanja se v razli─Źnih ra─Źunalni┼íkih okoljih razlikujejo.

Funkcije

Obstajati morata vsaj administrativni funkciji GetFunctionCount in GetFunctionData. S pomo─Źjo teh dveh lahko dolo─Źite funkcije kot tudi tipe parametrov in izra─Źunane vrednosti. Kot izra─Źunani vrednosti imata podporo tipa dvojno in niz. Kot parametri imajo podporo tudi celi─Źna obmo─Źja dvojne matrike, matrike nizov in celi─Źne matrike.

Parametri se prenesejo s pomo─Źjo sklicev. Iz tega razloga je spreminjanje teh vrednosti v osnovi mogo─Źe. Vendar pa za to ni podpore v programu LibreOffice Calc, saj to znotraj preglednic ni smiselno.

Knji┼żnice lahko ponovno nalo┼żite med izvajanjem, njihovo vsebino pa lahko analizirajo administrativne funkcije. Za vsako funkcijo so na voljo podatki o ┼ítevilu in tipu parametrov, notranja in zunanja imena funkcij ter administrativno ┼ítevilo.

Te funkcije so isto─Źasno klicane in takoj izra─Źunajo svoje rezultate. Funkcije v realnem ─Źasu (neisto─Źasne funkcije) so prav tako mo┼żne; vendar zaradi svoje zapletenosti niso natan─Źno razlo┼żene.

Splošni podatki o vmesniku

Najve─Źje mo┼żno ┼ítevilo parametrov v dodatni funkciji, prilo┼żeni v LibreOffice Calc, je 16: ena izra─Źunana vrednost in najve─Ź 15 funkcijskih vnosnih parametrov.

Vrste podatkov so definirane tako:

Vrste podatkov

Definicija

CALLTYPE

V Windows: FAR PASCAL (_far _Pascal)

Sicer: privzeto (kar je v operacijskem sistemu dolo─Źeno za privzeto)

USHORT

2 bajtno celo število brez predznaka

DOUBLE

8 bajtni format, ki je odvisen od ra─Źunalni┼íkega okolja

Paramtype

Odvisno od ra─Źunalni┼íkega okolja kot int

PTR_DOUBLE =0 kazalec na dvojno

PTR_STRING =1 kazalec na nizu, kon─Źanem z ni─Ź

PTR_DOUBLE_ARR =2 kazalec na dvojni matriki

PTR_STRING_ARR =3 kazalec na matriko nizov

PTR_CELL_ARR =4 kazalec na celi─Źno matriko

NONE =5


Funkcije

V nadaljevanju boste našli opis tistih funkcij, klicanih iz .

Za vse funkcije velja naslednje:

void CALLTYPE fn(out, in1, in2, ...)

Izhod: Izra─Źunana vrednost

Vhod: Vsako ┼ítevilo tipa (double&, char*, double*, char**, celi─Źno obmo─Źje), pri ─Źemer je obmo─Źje celic tabela vrste dvojna tabela, tabela nizov ali celi─Źna tabela.

GetFunctionCount()

Izra─Źuna ┼ítevilo funkcij brez upravljalnih funkcij parametra sklica. Vsaka funkcija je ozna─Źena s ┼ítevilom med 0 in nCount-1, ki se pri nobeni ne ponovi. To ┼ítevilo bo kasneje potrebno za funkciji GetFunctionData in GetParameterDescription.

Skladnja

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parameter

USHORT &nCount:

Izhod: Sklic na spremenljivko, ki naj bi vsebovala število dodatnih funkcij. Primer: Če dodatek ponuja 5 funkcij za LibreOffice Calc, potem iz tega sledi nCount=5.

GetFunctionData()

Dolo─Źi vse pomembne podatke o dodatni funkciji.

Skladnja

void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)

Parameter

USHORT& nNo:

Vhod: ┼átevilo funkcije med 0 in vklju─Źno nCount-1.

char* pFuncName:

Izhod: Ime funkcije, kot ga dolo─Źi prgramer, in ga ima funkcija tudi v . To ime ne dolo─Źa imana, ki je v uporabi v ─îarovniku za funkcije.

USHORT& nParamCount:

Izhod: ┼átevilo parametrov v dodatni funkciji. To ┼ítevilo mora biti vedno vi┼íje od 0, ker vedno obstaja izra─Źunana vrednost; najvi┼íja mo┼żna vrednost je 16.

Paramtype* peType:

Izhod: Kazalec na matriko z natanko 16 spremenljivkami tipa Paramtype. Prvi vnosi ParamCount se napolnijo z ustreznim tipom parametra.

char* pInternalName:

Izhod: Ime funkcije, kot ga vidi uporabnik in se pojavi v ─îarovniku za funkcije. Lahko vsebuje preglase.

Parametra pFuncName in pInternalName sta znakovni matriki, ki imata v modulu LibreOffice Calc velikost 256.

GetParameterDescription()

Poda kratek opis dodatne funkcije in njenih parametrov. To funkcijo se lahko uporabi za prikaz opisa funkcij in parametrov v ─îarovniku za funkcije.

Skladnja

void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)

Parameter

USHORT& nNo:

Vhod: ┼átevilka funkcije v knji┼żnici; med 0 in nCount-1.

USHORT& nParam:

Vhod: Poka┼że, kateri parameter v opisu je na voljo; parametri se za─Źnejo pri 1. ─îe je nParam 0, bi opis sam moral biti na voljo v pDesc; v tem primeru pName nima nobenega pomena.

char* pName:

Izhod: Vsebuje ime ali tip parametra, npr. besede ┬╗┼átevilo┬ź ali ┬╗Niz┬ź ali ┬╗Datum┬ź in tako naprej. V programu LibreOffice Calc se izvr┼íi kot char[256].

char* pDesc:

Izhod: Vsebuje opis parametra, npr. ┬╗Vrednost, po kateri se izra─Źuna velikost vesolja.┬ź, ki se v programu LibreOffice Calc izvr┼íi kot char[256].

pName in pDesc sta znakovni matriki, ki sta v programu LibreOffice Calc izvršljivi z velikostjo 256. Bodite pozorni na to, da je prostor, ki je na voljo v Čarovniku za funkcije, omejen, in da 256 znakov ne morete v celoti izrabiti.

Celi─Źna obmo─Źja

Slede─Źe tabele vsebujejo podatke o tem, katere strukture podatkov mora ponuditi zunanji programski modul, da se lahko prenesejo v celi─Źna obmo─Źja. LibreOffice Calc razlikuje med tremi razli─Źnimi matrikami glede na tip podatkov.

Dvojna matrika

Kot parameter se lahko prenese celi─Źno obmo─Źje z vrednostni tipa ┼ítevilo/dvojno. Dvojna matrika je pri modulu LibreOffice Calc definirana tako:

Odmik

Ime

Opis

0

Col1

┼átevilka stolpca v zgornjem levem kotu celi─Źnega obmo─Źja. ┼átevil─Źenje se za─Źne pri 0.

2

Row1

┼átevilka vrstice v zgornjem levem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

4

Tab1

┼átevilka tabele v zgornjem levem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

6

Col2

┼átevilka stolpca v spodnjem desnem kotu celi─Źnega obmo─Źja. ┼átevil─Źenje se za─Źne pri 0.

8

Row2

┼átevilka vrstice v spodnjem desnem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

10

Tab2

┼átevilka tabele v spodnjem desnem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

12

Števec

┼átevilo slede─Źih elementov. Prazne celice se ne ┼ítejejo ali prenesejo.

14

Sto

┼átevilka stolpca, v katerem se nahaja element. ┼átevil─Źenje se za─Źne pri 0.

16

Vrstica

┼átevilka vrstice, v kateri se nahaja element; ┼ítevil─Źenje se za─Źne pri 0.

18

Tabulator

┼átevilka tabele, v kateri se nahaja element; ┼ítevil─Źenje se za─Źne pri 0.

20

Napaka

┼átevilka napake, pri kateri je vrednost 0 definirana kot ┬╗ni napake┬ź. ─îe je element iz celice s formulo, napa─Źno vrednost dolo─Źi formula.

22

Vrednost

8 bajtna IEEE spremenljivka tipa dvojna/premi─Źna to─Źka

30

...

Naslednji element


Matrika nizov

Celi─Źno obmo─Źje, ki vsebuje vrednosti tipa podatkov besedilo in se prenese kot matrika nizov. Matrika nizov je v modulu LibreOffice Calc definirana tako:

Odmik

Ime

Opis

0

Col1

┼átevilka stolpca v zgornjem levem kotu celi─Źnega obmo─Źja. ┼átevil─Źenje se za─Źne pri 0.

2

Row1

┼átevilka vrstice v zgornjem levem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

4

Tab1

┼átevilka tabele v zgornjem levem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

6

Col2

┼átevilka stolpca v spodnjem desnem kotu celi─Źnega obmo─Źja. ┼átevil─Źenje se za─Źne pri 0.

8

Row2

┼átevilka vrstice v spodnjem desnem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

10

Tab2

┼átevilka tabele v spodnjem desnem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

12

Števec

┼átevilo slede─Źih elementov. Prazne celice se ne ┼ítejejo ali prenesejo.

14

Sto

┼átevilka stolpca, v katerem se nahaja element. ┼átevil─Źenje se za─Źne pri 0.

16

Vrstica

┼átevilka vrstice, v kateri se nahaja element; ┼ítevil─Źenje se za─Źne pri 0.

18

Tabulator

┼átevilka tabele, v kateri se nahaja element; ┼ítevil─Źenje se za─Źne pri 0.

20

Napaka

┼átevilka napake, pri kateri je vrednost 0 definirana kot ┬╗ni napake┬ź. ─îe je element iz celice s formulo, napa─Źno vrednost dolo─Źi formula.

22

Len

Dol┼żina slede─Źega niza, ki vklju─Źuje zaklju─Źni ni─Źni bajt. ─îe je dol┼żina, ki vsebuje zaklju─Źni ni─Źni bajt, enaka lihi vrednosti, se nizu doda drugi ni─Źni bajt, tako da se dose┼że soda vrednost. Iz tega razloga se Len ra─Źuna z uporabo ((StrLen+2)&~1).

24

Niz

Niz z zaklju─Źnim ni─Źnim bajtom

24+Len

...

Naslednji element


Celi─Źna matrika

Celi─Źne matrike se uporabljajo za klicanje celi─Źnih obmo─Źij, ki vsebujejo tako besedilo kot tudi ┼ítevila. Celi─Źna matrika je pri modulu LibreOffice Calc definirana tako:

Odmik

Ime

Opis

0

Col1

┼átevilka stolpca v zgornjem levem kotu celi─Źnega obmo─Źja. ┼átevil─Źenje se za─Źne pri 0.

2

Row1

┼átevilka vrstice v zgornjem levem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

4

Tab1

┼átevilka tabele v zgornjem levem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

6

Col2

┼átevilka stolpca v spodnjem desnem kotu celi─Źnega obmo─Źja. ┼átevil─Źenje se za─Źne pri 0.

8

Row2

┼átevilka vrstice v spodnjem desnem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

10

Tab2

┼átevilka tabele v spodnjem desnem kotu celi─Źnega obmo─Źja; ┼ítevil─Źenje se za─Źne pri 0.

12

Števec

┼átevilo slede─Źih elementov. Prazne celice se ne ┼ítejejo ali prenesejo.

14

Sto

┼átevilka stolpca, v katerem se nahaja element. ┼átevil─Źenje se za─Źne pri 0.

16

Vrstica

┼átevilka vrstice, v kateri se nahaja element; ┼ítevil─Źenje se za─Źne pri 0.

18

Tabulator

┼átevilka tabele, v kateri se nahaja element; ┼ítevil─Źenje se za─Źne pri 0.

20

Napaka

┼átevilka napake, pri kateri je vrednost 0 definirana kot ┬╗ni napake┬ź. ─îe je element iz celice s formulo, napa─Źno vrednost dolo─Źi formula.

22

Vrsta

Tip vsebine celice, 0 == dvojno, 1 == niz

24

Value ali Len

─îe tip == 0: 8 bajtna IEEE spremenljivka tipa dvojna/premi─Źna to─Źka

─îe tip == 1: Dol┼żina slede─Źega niza, ki vklju─Źuje zaklju─Źni ni─Źni bajt. ─îe je dol┼żina, ki vsebuje zaklju─Źni ni─Źni bajt, enaka lihi vrednosti, se nizu doda drugi ni─Źni bajt, tako da se dose┼że soda vrednost. Zato se Len ra─Źuna z uporabo ((StrLen+2)&~1).

26 ─Źe tip ==1

Niz

─îe tip == 1: Niz z zaklju─Źnim ni─Źnim bajtom

32 ali 26+Len

...

Naslednji element


Podprite nas!