Tillegg for programmering i LibreOffice Calc

warning

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 Add-ins, som er eksterne programmeringsmodular med ekstra funksjonar for å arbeida med rekneark. Desse er oppførte i Funksjonsvegvisaren i kategorien Add-In. Viss du vil programmera eit tillegg sjølv, kan du læra her kva for funksjonar som må eksporterast av slik at tillegget kan koplast til slik at det fungerer.

LibreOffice søkjer i tilleggsmappa som er definert i konfigurasjonen for eit passande . For å verta gjenkjent av LibreOffice, må ha visse eigenskapar som er forklarte nedanfor. Denne informasjonen gjer at du kan programmera ditt eiget tillegg for funksjon vegvisar 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 parameterane. Dei nøyaktige namnereglane vil variera etter kva plattform som er i bruk.

Funksjonar for

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 parametrar vert i tillegg også celleområda Dobbelt array, Streng array og Celle array støtta.

Parameterane 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 største talet på parametrar 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 plattformsavhengig format

Paramtype

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 finna ein omtale av desse funksjonane som vert kalla .

Det følgjande gjeld for alle -funksjonane:

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

Output: Resultatverdi

Input: Kva tal som helst av typar (double&, char*, double*, char**, Celleområde) der Celleområdet er ein tabell av typen dobbel tabell, strengtabell eller celletabell.

GetFunctionCount()

Returnerer talet på funksjonar utanom administrasjonsfunksjonane for referanseparameterane. 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:

Output: Referanse til ein variabel som er meint å innehalda talet på Add-n-funksjonar. For eksempel: Viss Add-In inneheld 5 funksjonar for LibreOffice Calc 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:

Input: Funksjonsnummer frå og med 0 til og med nCount-1.

char* pFuncName:

Output: Funksjonsnamnet slik programmeraren ser det, slik det er namngjeve i . Dette namnet bestemmer ikkje namnet i funksjonsvegvisaren.

USHORT& nParamCount:

Output: Talet på parametrar i Add-In-funksjonen. Talet må vera større enn 0 sidan det alltid er ein resultatverdi. Det høgste talet er 16.

Paramtype* peType:

Output: Peikar til ein tabell med nøyaktig 16 variablar av typen paramtype. Dei første nParamCount oppføringane er fylte med høveleg type parameter.

char* pInternalName:

Output: Funksjonsnamn slik brukaren ser dei slik dei vert viste i funksjonsvegvisaren. Kan innehalda aksentteikn.

Parameterane 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

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

Parameter

USHORT& nNo:

Input: Talet på funksjonar i biblioteket, mellom 0 og nCount-1.

USHORT& nParam:

Input: Viser kva parameter beskrivinga er meint for. Parameterane byrjar på 1. Viss nParam er 0, skal beskrivinga i seg sjølv vera vist i pDesc. I dette tilfellet betyr ikkje pName noko.

char* pName:

Output: Tek opp parameternamnet eller typen, for eksempel orda «tal», «streng» eler «dato». Implementert i LibreOffice Calc som char[256].

char* pDesc:

Output: Tek opp ei skildring av parameteren, for eksempel «Verdien som universet skal reknast ut frå». Implementert i LibreOffice Calc som char[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

Lengd

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+Len

...

Neste element


Celletabell

Celletabellar vert brukte for å kalla 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 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

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


Støtt oss!