Tillegg for programmering i LibreOffice Calc

Åtvaringsikon

Metoden for å leggja til utvidingar i Calc omtalt nedanfor er forelda. Grensesnittet er framleis gyldig for å sikra kompatibilitet med eksisterande utvidingar, men for programmering av nye utvidingar bør du bruka API-funksjonar.


LibreOffice Calc kan utvidast med programtillegg som er eksterne programmodular som legg fleire funksjonar til i reknearket. Desse er lista opp i funksjonsvegvisaren under kategorien Tillegg. Dersom du ønskjer å programmera ein tilleggsfunksjon, kan du læra her kva funksjonar som må eksporterast med for å verta korrekt installert.

LibreOffice søkjer i mappa for tilleggsfunksjonar definert i oppsetjinga etter . For at LibreOffice skal kjenna igjen , må denne ha bestemte eigenskapar som er forklarte nedanfor. Desse opplysningane gjev deg høve til å programmera din eigen tilleggsfunksjon til Funksjonsvegvisaren i LibreOffice Calc.

Konseptet utvidingar

Kvart utvidingsbibliotek inneheld fleire funksjonar du kan bruka. Nokre av funksjonane er til administrativt bruk. Du kan kalla funksjonane nesten kva som helst. Namnet må likevel følgje bestemte reglar ved overføring av parametrane. Dei nøyaktige namnereglane vil variera etter kva plattform som er i bruk.

Funksjonar i

Som eit minimum skal dei administrative funksjonane GetFunctionCount og GetFunctionData finnast. Ved hjelp av desse kan både funksjonar, parametertypar og returverdiar bestemmast. Som returverdiar er det støtte for både dobbelt- og strengtypar. Som parameterar vert i tillegg også celleområda Dobbelt array, Streng array og Celle array støtta.

Parametra vert overførte via referansar. Difor kan du i utgangspunktet endra desse verdiane. Dette gjeld ikkje i LibreOffice Calc fordi det ikkje gjev meining i eit rekneark.

Biblioteka kan lastast inn under køyringa og innhaldet kan analyserast av dei administrative funksjonane. For kvar funksjon er informasjon om kor mange og kva type parameter som finst, interne og eksterne funksjonsnamn og eit administrativt nummer.

Funksjonane vert kalla opp synkront og returnerer resultata straks. Realtidsfunksjonar (asynkrone funksjonar) er også mogleg, men desse er ikkje forklarte i detaljar her fordi dei er så komplekse.

Generell informasjon om grensesnittet

Det maksimale talet på parameterar i ei utviding i LibreOffice Calc er 16: éin returverdi og høgst 15 argument for inndata.

Datatypane vert definerte slik:

Datatypar

Definisjon

CALLTYPE

Under Windows: FAR PASCAL (_far _pascal)

Anna: standard (operativsystemspesifikk standard)

USHORT

2-byte heiltal utan forteikn

DOUBLE

8-byte platformsavhengig format

Parametertype

Plattformsavhengige som heiltal

PTR_DOUBLE =0 peikar til ein double

PTR_STRING =1 peikar til ein null-terminert streng

PTR_DOUBLE_ARR =2 peikar til ein double array

PTR_STRING_ARR =3 peikar til ein strengtabell

PTR_CELL_ARR =4 peikar til ein strengtabell

NONE =5


funksjonar

Nedanfor vil du finne ein omtale av desse funksjonane, som vert kalla opp via .

Følgjande gjeld for alle funksjonar for :

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

Output: Resultatverdi

Innskriving: Kva tal som helst av typene (double&, char*, double*, char**, Cell area), der celleområde er eit område av typen dobbel tabell, strengtabell eller celletabell.

GetFunctionCount()

Returnerer talet på funksjonar utanom administrasjonsfunksjonane for referanseparametra. Kvar funksjon har eit unikt nummer frå 0 til nCount-1. Dette nummeret vert seinare brukt av funksjonane GetFunctionData og GetParameterDescription.

Syntaks

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parameter

USHORT &nCount:

Utdata: Referansen til ein variabel som er venta å innehalda talet på AddIn-funksjonar. Dersom programmet for eksempel gjev tilgang til 5 funksjonar for LibreOffice Calcs, så er nCount=5.

GetFunctionData()

Bestemmer all viktig informasjon om ein tilleggsfunksjon.

Syntaks

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

Parameter

USHORT& nNo:

Innskriving: Funksjonens nummer mellom 0 og nCount-1, inklusiv.

char* pFuncName:

Utdata: Funksjonsnamn slik programmeraren ser det med det namnet det har i . Dette namnet bestemmer ikkje namnet som vert vist i Funksjonsvegvisaren.

USHORT& nParamCount:

Utdata: Talet på parameter i AddIn-funksjonen. Dette talet må vere større enn 0 fordi det alltid vil vere ein resultatverdi. Høgste verdien er 16.

Paramtype* peType:

Utdata: Peikar på ein tabell med nøyaktig 16 variablar av typen Paramtype. Dei første nParamCount innslaga er utfylte med passande parametertypar.

char* pInternalName:

Utdata: Funksjonsnamna slik brukaren ser dei og slik dei vert viste i Funksjonsvegvisaren. Kan innehalda aksentteikn (ö, â osv).

Parametra pFuncName og pInternalName er teikntabellar som er implementerte med storleiken 256 i LibreOffice Calc.

GetParameterDescription()

Gjev ei kort beskriving av tilleggsfunksjonane og parameterane deira. Denne funksjonen kan også nyttast for å visa ei funksjons- og parameterbeskriving i Funksjonsvegvisaren.

Syntaks

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

Parameter

USHORT& nNo:

Innskriving: Nummeret for funksjonen i biblioteket; mellom 0 og nCount-1.

USHORT& nParam:

Innskriving: Indikerer kva for parameter beskrivinga gjeld for. Parametra byrjar med 1. Dersom nParam er 0, går ein ut frå at beskrivinga er tilgjengeleg i pDesc. I dette tilfellet betyr ikkje pName noko som helst.

char* pName:

Output: Finn parameternamnet og type, for eksempel «Nummer», "Streng" eller «Dato» og så vidare. Implementert i LibreOffice Calc som TEIKN[256].

char* pDesc:

Output: Finn beskrivinga av paremetra, for eksempel «Verdien som universet skal reknast ut etter». Implementert i LibreOffice Calc som TEIKN[256].

pName og pDesc er tabellar implementerte i LibreOffice Calc med storleiken 256. Legg merkje til at den tilgjengelege plassen i Funksjonsvegvisaren er avgrensa og at ikkje alle 256 teikna kan brukast.

Celleområde

Dei følgjande tabellane inneheld informasjon om kva datastrukturar som må leverast av ein ekstern programmodul for å overføre celleområde. LibreOffice Calc skil mellom tre ulike tabellar (arrays) avhengig av datatypen.

Dobbelt matrise

Du kan overføre eit celleområde med verdiar av typen tal/dobbel. Ein dobbeltabell er i LibreOffice Calc definert slik:

Forskyving

Namn

Beskriving

0

Kolonne 1

Kolonnenummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

2

Rad 1

Radnummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

4

Tabell 1

Tabellnummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

6

Kolonne 2

Kolonnenummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

8

Rad2

Radnummeret i det nedre, høgre hjørnet av celleområdet. Nummereringa byrjar med 0.

10

Tab2

Tabellnummeret i det nedre, høgre hjørnet av celleområdet. Nummereringa byrjar med 0.

12

Tel

Talet på dei følgjande elementa. Tome celler vert ikkje talde og vert heller ikkje overførte.

14

Kol

Kolonnenummeret for elementet. Nummereringa byrjar frå 0.

16

Rad

Radnummeret for elementet. Nummereringa byrjar frå 0.

18

Tabell

Tabellnummeret for elementet. Nummereringa byrjar frå 0.

20

Feil

Feilnummer der verdien 0 er definert som «ingen feil». Dersom elementet kjem frå ei formelcelle, er feilverdien bestemt av formelen.

22

Verdi

8-byte IEEE variabel av typen dobbelt/desimaltal

30

Neste element


Strengtabell

Eit celleområde som inneheld verdiar av datatypen tekst er overført som ein strengtabell. I LibreOffice Calc er ein strengtabell definert slik:

Forskyving

Namn

Beskriving

0

Kolonne 1

Kolonnenummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

2

Rad 1

Radnummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

4

Tabell 1

Tabellnummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

6

Kolonne 2

Kolonnenummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

8

Rad2

Radnummeret i det nedre, høgre hjørnet av celleområdet. Nummereringa byrjar med 0.

10

Tab2

Tabellnummeret i det nedre, høgre hjørnet av celleområdet. Nummereringa byrjar med 0.

12

Tel

Talet på dei følgjande elementa. Tome celler vert ikkje talde og vert heller ikkje overførte.

14

Kol

Kolonnenummeret for elementet. Nummereringa byrjar frå 0.

16

Rad

Radnummeret for elementet. Nummereringa byrjar frå 0.

18

Tabell

Tabellnummeret for elementet. Nummereringa byrjar frå 0.

20

Feil

Feilnummer der verdien 0 er definert som «ingen feil». Dersom elementet kjem frå ei formelcelle, er feilverdien bestemt av formelen.

22

Len

Lengda av den etterfølgjande strengen, inklusive avsluttande null-byte. Dersom lengda inklusive null-byten er eit oddetal, vert det lagt til ein ekstra null-byte slik at lengda vert eit partal. Difor vert Len rekna ut med ((StrLen+2)& 1).

24

Streng

Streng med avsluttande null-byte.

24 + Lengd

Neste element


Celletabell

Celletabellar vert brukte for å kalle opp celleområde som inneheld tekst eller tal. Ein celletabell er i LibreOffice Calc definert slik:

Forskyving

Namn

Beskriving

0

Kolonne 1

Kolonnenummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

2

Rad 1

Radnummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

4

Tabell 1

Tabellnummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

6

Kolonne 2

Kolonnenummer i det øvre, venstre hjørne av celleområdet. Nummereringa byrjar med 0.

8

Rad2

Radnummeret i det nedre, høgre hjørnet av celleområdet. Nummereringa byrjar med 0.

10

Tab2

Tabellnummeret i det nedre, høgre hjørnet av celleområdet. Nummereringa byrjar med 0.

12

Tel

Talet på dei følgjande elementa. Tome celler vertikkje talde og vert heller ikkje overførte.

14

Kol

Kolonnenummeret for elementet. Nummereringa byrjar frå 0.

16

Rad

Radnummeret for elementet. Nummereringa byrjar frå 0.

18

Tabell

Tabellnummeret for elementet. Nummereringa byrjar frå 0.

20

Feil

Feilnummer der verdien 0 er definert som «ingen feil». Dersom elementet kjem frå ei formelcelle, er feilverdien bestemt av formelen.

22

Type

Type for celleinnhaldet, 0 = Dobbelt, 1 = Streng

24

Verdi eller lengd

Dersom type == 0: 8 byte IEEE-variabel av typen dobbelt/flytande komma

Dersom type ==1: Lengda av strengen som kjem etter, inklusive avsluttande null-byte. Dersom lengda inklusive den avsluttande null-byten er eit oddetal, vert det lagt ein ekstra null-byte til strengen slik at lengda vert eit partal. Difor vert lengda rekna ut som ((StrLen+2)&~1).

26 dersom type==1

Streng

Dersom type = 1: Streng med avsluttande null-byte.

32 eller 26 + Lengd

Neste element