Turinys
Rodyklė 🔎︎

# „LibreOffice“ skaičiuoklės papildiniai programavimui

Aprašomas skaičiuoklės praplėtimo papildiniais metodas yra šiek tiek pasenęs. Sąsajos vis dar galiojančios ir palaikomos tam, kad užtikrintų suderinamumą su esamais papildiniais, bet naujiems papildiniams programavimui naudokite naujas API funkcijas.

LibreOffice skaičiuoklę galite praplėsti papildiniais, kurie yra išoriniai programavimo moduliai, suteikiantys papildomas darbo su skaičiuoklės dokumentais funkcijas. Jie yra išvardyti Funkcijų vediklyje Papildinių kategorijoje. Jei norite programuoti papildinį patys, tai galite čia sužinoti, kurios funkcijos turi būti eksportuojamos perbendrinamą biblioteką išorinį DLL tam, kad papildinys sėkmingai būtų pridėtas.

LibreOffice ieško papildinių aplanko, nurodyto konfigūracijoje tinkamai bendrinamai bibliotekai DLL. Kad LibreOffice atpažintų, bendrinama biblioteka DLL turi atitikti tam tikras savybes, kaip aprašyta toliau. Tai leidžia patiems programuoti papildinį LibreOffice skaičiuoklės Funkcijų vedikliui.

## Papildinio konceptas

Kiekviena papildinio biblioteka pateikia keletą funkcijų. Kai kurios funkcijos naudojamos administraciniais tikslais. Galite pasirinkti beveik bet kokį savo funkcijos pavadinimą. Tačiau pavadinimas privalo laikytis tam tikrų parametrų taisyklių. Tikslūs pavadinimų ir iškvietimų susitarimai skirtingose platformose skiriasi.

### Bendrinamos bibliotekos papildinys DLL funkcijos

Būtinai turi būto vykdomosios funkcijosGetFunctionCount and GetFunctionData. Kitos funkcijos gali būti apibrėžiamos šiomis dviem funkcijomis. Langelių sritys dvigubas masyvas, eilutės masyvas, and langelių masyvas yra palaikomos.

Parametrai užrašomi naudojant nuorodas. Keisti šias reikšmes galima. Tačiau „LibreOffice“ skaičiuoklė nepalaiko reikšmių keitimo, nes tai neturi prasmės darbo knygoje.

Bibliotekos vykdymo metu gali būti atsiųstos iš naujo ir vykdymo funkcijos gali analizuoti jų turinį. Kiekviena funkcija gali naudoti informaciją apie skaičiavimą ir parametrų tipą, vidinių ir išorinių funkcijų vardus ir vykdymo numerį.

Funkcijos gali būti iškviečiamos sinchroniškai ir rezultatą pateikti iškart. Tikralaikio funkcijas (asinchronines) taip galima naudoti. Tačiau jos nėra aprašomos, nes yra labai sudėtingos.

## Pagrindinė sąsajos informacija

„LibreOffice“ skaičiuoklės papildinio funkcija gali naudoti iki 16 parametrų: viena grąžinama reikšmė ir 15 įvedamų funkcijos parametrų.

Duomenų tipų aprašymai:

Duomenų tipas | Apibrėžimas
--- | ---
CALLTYPE | „Windows“ atitikmuo: FAR PASCAL (_far _pascal) Kita: numatyta (operacinėje sistemoje)
USHORT | 2 baitų sveikasis skaičius be ženklo
DOUBLE | 8 baitų nuo platformos priklausomas formatas
Paramtype | Nuo platformos priklausomas PTR_DOUBLE =0 – dvigubas PTR_STRING =1 – nulinė eilutė PTR_DOUBLE_ARR =2 – dvigubas masyvas PTR_STRING_ARR =3 – eilutės masyvas PTR_CELL_ARR =4 – langelių masyvas NONE =5

## Bendrinamos bibliotekos DLLfunkcijos

Toliau rasite funkcijų, kurios iškviečiamos Bendrinamoje bibliotekoje išorinis DLL, aprašymus.

VisomsBendrinamos bibliotekos DLL funkcijoms taikoma:

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

Išvestis: rezultato reikšmė

Įvestis: bet kokio tipo skaičius (double&, char*, double*, char**, Cell area), kur langelių sritisyra dvigubo masyvo, eilutės masyvo ar langelių masyvo tipo masyvas.

### GetFunctionCount()

Funkcija grąžina funkcijos, neįskaitant valdymo funkcijų, numerį. Kiekviena funkcija turi numerį tarp 0 ir nCount-1. Šis skaičius vėliau bus reikalingas funkcijoms GetFunctionData and GetParameterDescription.

Sintaksė

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parametras

USHORT &nCount:

Išvestis: kintamojo nuoroda, kurioje turi būti atitinkamas papildinio funkcijos skaičius. Pavyzdžiui: jei papildinys suteikia 5 LibreOffice skaičiuoklės funkcijas, tai reikšmė turi būti 5.

### GetFunctionData()

Apibrėžia visą svarbia informaciją apie papildinio funkcijas.

Sintaksė

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

Parametras

USHORT& nNo:

Įvestis: Funkcijos skaičius tarp 0 ir nCount-1 imtinai.

char* pFuncName:

Išvestis: vartotojo matomas papildinio vardas, toks pats kaip ir bendrinamoje bibliotekoje DLL. Šis pavadinimas neapibrėžia pavadinimo Funkcijos vediklyje.

USHORT& nParamCount:

Išvestis: papildinio funkcijos parametrų skaičius. Šis skaičius turi būti didesnis už 0, nes rezultato reikšmė visada yra; didžiausia reikšmė yra 16.

Paramtype* peType:

Išvestis: žymeklis masyve su tiksliai 16 Paramtype tipo kintamaisiais. Pirmieji nParamCount įrašai yra užpildyti tinkamo tipo parametrais.

char* pInternalName:

Išvestis: vartotojo matomas funkcijos pavadinimas, kaip jis matomas Funkcijų vediklyje. Gali turėti umliautus.

Parametrai pFuncName ir pInternalName yra ženklių masyvai, kurių dydis „LibreOffice“ skaičiuoklėje yra 256.

### GetParameterDescription()

Tiekia trumpą papildinio funkcijos ir jos parametrų aprašymą. Šią funkciją naudokite, kai norėsite parodyti funkcijos ir jos parametrų aprašymą Funkcijos vediklyje.

Sintaksė

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

Parametras

USHORT& nNo:

Įvestis: funkcijos bibliotekoje numeris; tarp 0 ir nCount-1.

USHORT& nParam:

Įvestis: nustato, kuriam parametrui pateiktas aprašymas; parametrai prasideda nuo 1. Jei nParam yra 0, tai aprašymas turi būti suteiktas nDesc; tokiu atveju pName neturi jokios reikšmės.

char* pName:

Išvestis: ima parametro vardą arba tipą, pavyzdžiui, žodis „Skaičius“ arba „Eilutė“, arba „Data“ ir pan. Įgyvendinta LibreOffice skaičiuoklėje kaip char[256].

char* pDesc:

Išvestis: ima parametro aprašymą, pavyzdžiui, „Skaičius, pagal kurį apskaičiuota visata“. Įgyvendinta LibreOffice skaičiuoklėje kaip char[256].

pName ir pDesc yra ženklų masyvai. „LibreOffice“ skaičiuoklėje yra 256 ilgio. Atkreipkite dėmesį, kad vietos Funkcijų vediklyje yra ribotai ir visi 256 ženklai tikrai netilps.

## Langelių sritys

Toliau lentelėse pateikiama informacija, kurios duomenų struktūros turi būti pateiktos iš išorinio programos modulio siekiant perduoti langelių sritis. „LibreOffice“ skaičiuoklėje yra trys skirtingi masyvai priklausomai nuo duomenų tipo.

### Dvigubas masyvas

Skaičių arba dvigubo tipo langelių sritis gali būti perduodama kaip parametras. Dvigubas masyvas „LibreOffice“ skaičiuoklėje gali būti aprašomas taip:

Poslinkis | Pavadinimas | Aprašymas
--- | --- | ---
0 | Stlp. 1 | Viršutinio kairiojo srities langelio stulpelio numeris. Numeravimas pradedamas nuo 0.
2 | Eil. 1 | Viršutinio kairiojo srities langelio eilutės numeris. Numeravimas pradedamas nuo 0.
4 | Tabuliavimo žymė 1 | Srities kairiosios viršutinės lentelės numeris. Numeravimas pradedamas nuo 0.
6 | Stlp. 2 | Srities apatinio dešiniojo langelio stulpelio numeris. Numeravimas pradedamas nuo 0.
8 | Eil. 2 | Srities apatinio dešiniojo langelio eilutės numeris. Numeravimas pradedamas nuo 0.
10 | Tabuliavimo žymė 2 | Srities apatinės dešiniosios lentelės numeris. Numeravimas pradedamas nuo 0.
12 | Skaičius | Sekančio elemento numeris. Tušti langeliai neskaičiuojami.
14 | Stulpelis | Elemento stulpelio numeris. Numeravimas pradedamas nuo 0.
16 | Eilutė | Elemento eilutės numeris. Numeravimas pradedamas nuo 0.
18 | Tabuliavimo žymė | Lentelės elemento numeris. Numeravimas pradedamas nuo 0.
20 | Klaida | Klaidos numeris, kur 0 reiškia, kad klaidos nėra. Jei elementas yra iš formulės langelio, tai klaidos reikšmę nusako formulė.
22 | Reikšmė | 8 baitų dvigubo arba slenkančio taško IEEE kintamasis
30 | ... | Kitas elementas

### Eilutės masyvas

Langelių sritis, kurioje yra teksto tipo reikšmės ir nusakomos eilutės masyvu. Eilutės masyvas „LibreOffice “ skaičiuoklėje apibrėžiamas:

Poslinkis | Pavadinimas | Aprašymas
--- | --- | ---
0 | Stlp. 1 | Viršutinio kairiojo srities langelio stulpelio numeris. Numeravimas pradedamas nuo 0.
2 | Eil. 1 | Viršutinio kairiojo srities langelio eilutės numeris. Numeravimas pradedamas nuo 0.
4 | Tabuliavimo žymė 1 | Srities kairiosios viršutinės lentelės numeris. Numeravimas pradedamas nuo 0.
6 | Stlp. 2 | Srities apatinio dešiniojo langelio stulpelio numeris. Numeravimas pradedamas nuo 0.
8 | Eil. 2 | Srities apatinio dešiniojo langelio eilutės numeris. Numeravimas pradedamas nuo 0.
10 | Tabuliavimo žymė 2 | Srities apatinės dešiniosios lentelės numeris. Numeravimas pradedamas nuo 0.
12 | Skaičius | Sekančio elemento numeris. Tušti langeliai neskaičiuojami.
14 | Stlp. | Elemento stulpelio numeris. Numeravimas pradedamas nuo 0.
16 | Eilutė | Elemento eilutės numeris. Numeravimas pradedamas nuo 0.
18 | Tabuliavimo žymė | Lentelės elemento numeris. Numeravimas pradedamas nuo 0.
20 | Klaida | Klaidos numeris, kur 0 reiškia, kad klaidos nėra. Jei elementas yra iš formulės langelio, tai klaidos reikšmę nusako formulė.
22 | Ilgis | Eilutės ilgis įskaitant eilutės pabaigos nulinį baitą. Jei ilgis įskaitant pabaigos nulinį baitą lygus nelyginei reikšmei, tai eilutėje pridedamas antrasis nulinis baitas taip, kad būtų lyginė ilgio reikšmė. Nors Ilgis skaičiuojamas naudojant ((StrLen+2)&~1).
24 | Eilutė | Eilutė su pabaigos nuliniu baitu
24+Len | ... | Kitas elementas

### Langelių masyvas

Langelių masyvai naudojami iškviesti tiek tekstinėms sritims, tiek skaitinėms. Langelių masyvas „LibreOffice“ skaičiuoklėje aprašomas taip:

Poslinkis | Pavadinimas | Aprašymas
--- | --- | ---
0 | Stlp. 1 | Viršutinio kairiojo srities langelio stulpelio numeris. Numeravimas pradedamas nuo 0.
2 | Eil. 1 | Viršutinio kairiojo srities langelio eilutės numeris. Numeravimas pradedamas nuo 0.
4 | Tabuliavimo žymė 1 | Srities kairiosios viršutinės lentelės numeris. Numeravimas pradedamas nuo 0.
6 | Stlp. 2 | Srities apatinio dešiniojo langelio stulpelio numeris. Numeravimas pradedamas nuo 0.
8 | Eil. 2 | Srities apatinio dešiniojo langelio eilutės numeris. Numeravimas pradedamas nuo 0.
10 | Tabuliavimo žymė 2 | Srities apatinės dešiniosios lentelės numeris. Numeravimas pradedamas nuo 0.
12 | Skaičius | Sekančio elemento numeris. Tušti langeliai neskaičiuojami.
14 | Stulpelis | Elemento stulpelio numeris. Numeravimas pradedamas nuo 0.
16 | Eilutė | Elemento eilutės numeris. Numeravimas pradedamas nuo 0.
18 | Tabuliavimo žymė | Lentelės elemento numeris. Numeravimas pradedamas nuo 0.
20 | Klaida | Klaidos numeris, kur 0 reiškia, kad klaidos nėra. Jei elementas yra iš formulės langelio, tai klaidos reikšmę nusako formulė.
22 | Tipas | Langelio turinio tipas, 0 == dvigubas, 1 == eilutė
24 | Ilgio reikšmė | Jei tipas == 0: dvigubo arba slenkančio taško 8 baitų IEEE kintamasis Jei tipas == 1: eilutės ilgis įskaitant eilutės pabaigos nulinį baitą. Jei ilgis įskaitant pabaigos nulinį baitą lygus nelyginei reikšmei, tai eilutėje pridedamas antrasis nulinis baitas taip, kad būtų lyginė ilgio reikšmė. Nors Ilgis skaičiuojamas naudojant ((StrLen+2)&~1).
26 jei tipas == 1 | Eilutė | Jei tipas == 1: eilutė su pabaigos nuliniu baitu
32 arba 26+Ilgis | … | Kitas elementas