Turinys
Rodyklė 🔎︎

# „LibreOffice“ skaičiuoklės papildiniai programavimui

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

„LibreOffice“ skaičiuoklė gali būti praplėsta išoriniais programavimo moduliais suteikiančiais papildomų darbo knygos funkcijų. Jos yra pateikiamos Funkcijos vediklio papildinių kategorijoje. Jei norite suprogramuoti papildinį, čia galite sužinoti, kokias funkcijas turi eksportuoti bendrinamos bibliotekos išorinis DLL sėkmingam papildinių pridėjimui.

„LibreOffice“ ieško papildinio katalogo apibrėžtoje konfigūracijoje tinkamam bendrinamos bibliotekos DLL. Tam, kad „LibreOffice“ atpažintų, bendrinamos bibliotekos DLL turi turėti atitinkamas toliau aprašomas savybes. Pateikta informacija padės suprogramuoti „LibreOffice“ skaičiuoklės Funkcijos vediklio papildinį.

## 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 skiriasi skirtingoms platformoms.

### Bendrinamos bibliotekos papildinio 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, eilutsė 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 gali būti atsiųstos iš naujo vykdymo metu 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 (asinchroninės) 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

## Bendrinamo bibliotekos DLL funkcijos

Toliau aprašomos funkcijos, kurios iškviečiamos iš Bendrinamos bibliotekos išorinio DLL.

Visoms Bendrinamos bibliotekos DLL funkcijoms taikoma:

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

Išvestis: rezultato reikšmė

Įvestis: bet koks skaičiaus tipas, kai langelių sritis yra dvigubas masyvas, eilutės masyvas ar langelių 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: nuoroda į kintamąjį, kuris nusako papildinio funkcijų skaičių. Pavyzdžiui, jei papildinys grąžina „LibreOffice“ skaičiuoklės 5 funkcijas, tai parametras nCount=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 numeris tarp 0 ir nCOUNT-1 imtinai.

char* pFuncName:

Išvestis: programuotojas mato funkcijos pavadinimas kaip yra bendrinamos bibliotekos DLL. Šis pavadinimas neapibrėžia pavadinimo naudojamo Funkcijos vediklyje.

USHORT& nParamCount:

Išvestis: AddIn funkcijos parametrų skaičius. Šis skaičius turi būti didesnis už 0, nes visada pateikiamas rezultatas. Didžiausias skaičius gali būti 16.

Paramtype* peType:

Išvestis: nurodo į 16 Paramtype tipo kintamųjų masyvą. Pirmieji nParamCount įrašai užpildomi tinkamo tipo parametrais.

char* pInternalName:

Išvestis: funkcijos pavadinimas, kurį mato vartotojas Funkcijų vediklyje. Galimi umliautai.

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

### GetParameterDescription()

Tiekia rumpą 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: bibliotekoje esančios funkcijos numeris. Jis gali būti tarp 0 ir nCount-1.

USHORT& nParam:

Įvestis: nurodo, kuriam parametrui skirtas aprašymas. Parametrai pradedami skaičiuoti nuo 1. Jei nParam yra 0, pats aprašymas pateikiamas pDesc. Šiuo atveju pName neturi jokios reikšmės.

char* pName:

Išvestis: paima parametro vardą arba tipą, pavyzdžiui, žodis „skaičius“ ar „eilutė“, ar „data“ ir pan. „LibreOffice“ skaičiuoklėje esantį kaip char[256].

char* pDesc:

Išvestis: paima parametro aprašymą, pavyzdžiui, „Visatos apskaičiavimo reikšmė“. „LibreOffice“ skaičiuoklėje yra 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 pateikia 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+Ilgis | … | 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