LibreOffice Calc-en programatzeko osagarria
Osagarrien bidez Calc hedatzeko metodoa azaltzen da jarraian, baina zaharkituta dago. Dena den, interfazeak oraindik ere baliozkoak dira eta horiei buruzko laguntza teknikoa ere eskaintzen da, lehendik dauden osagarriekiko bateragarritasuna bermatzeko, baina osagarri berriak programatzeko, API funtzio berriak erabili behar zenituzke.
LibreOffice Calc osagarriekin heda daiteke; programatzeko kanpoko modulu hauekin kalkulu-orriekin lan egiteko funtzio osagarriak gehitzen zaizkio Calc aplikazioari. Funtzioen morroian aurkituko duzu funtzioen zerrenda, Osagarria kategorian. Zuk zeuk programatu nahi baduzu osagarri bat, begiratu hemen zein funtzio esportatu behar dituen liburutegi partekatuakkanpoko DLLak, osagarriak behar bezala eransteko.
LibreOffice suiteak konfigurazioan definitutako osagarrien karpetan bilatzen du liburutegi partekatuDLL egokirik badagoen. LibreOffice suiteak ezagutzeko, liburutegi partekatuak DLLak propietate jakin batzuk eduki behar ditu, jarraian azaltzen den bezala. Argibide hauekin zure osagarriak programatu ahal izango dituzu LibreOffice Calc-eko funtzioen morroirako.
Osagarrien kontzeptua
Osagarrien (ingelesez 'add-in') liburutegi bakoitzak funtzio batzuk eskaintzen ditu. Funtzio horietako batzuk xede administratiboetarako erabiltzen dira. Edozein izen aukera dezakezu zeure funtzioentzat. Dena den, zenbait arau jarraitu behar dituzte parametroak pasatzeari dagokionez. Izenak ipintzeko eta dei egiteko konbentzio desberdinak daude plataformen arabera.
Liburutegi partekatua AddIn DLLren funtzioak
Gutxienez, GetFunctionCount eta GetFunctionData funtzio administratiboek hor egon behar dute. Horiek erabiliz, funtzioak, parametro motak eta itzultzeko balioak determina daitezke. Emaitza balio gisa, Double eta String motak onartzen dira. Parametro gisa, gainera, Double Array, String Array eta Cell Array gelaxka-areak onartzen dira.
Parametroak erreferentzia bidez pasatzen dira. Hortaz, balio horiek aldatzea ezinezkoa da funtsean. Nolanahi ere, hori ez da onartzen LibreOffice Calc-en, ez baitu zentzurik kalkulu-orrietan.
Liburutegiak birkarga daitezke exekuzioan zehar, eta funtzio administratiboek liburutegi horien edukiak azter ditzakete. Funtzio bakoitzari dagokionez, informazioa erabilgarri egongo da kopurua eta mota parametroei buruz, barneko eta kanpoko funtzioei buruz, eta zenbaki administratiboa ere bai.
Funtzioei sinkronikoki dei egiten zaie eta berehala itzultzen dituzte emaitzak. Denbora errealeko funtzioak (funtzio asinkronoak) ere posible dira; dena den, hemen ez dugu xehetasunik emango, oso konplexuak baitira.
Interfazeari buruzko informazio orokorra
LibreOffice Calc-en erantsitako osagarri-funtzio bateko parametroen gehieneko kopurua 16 da: itzultzeko balio bat eta funtzioen sarrerako 15 parametro gehienez.
Honela definitzen dira datu motak:
Datu motak |
Definizioa |
CALLTYPE |
Windowsen: FAR PASCAL (_far _pascal) Bestelakoetan: lehenetsia (sistema eragilearen lehenespen espezifikoa) |
USHORT |
2 byte-ko osoko zenbaki sinatu gabea |
DOUBLE |
Plataformari lotutako 8 byte-ko formatua |
Paramtype |
Plataformari lotua, int gisa PTR_DOUBLE =0, double baten erakuslea PTR_STRING =1, zeroz amaitutako karaktere-kate baten erakuslea PTR_DOUBLE_ARR =2, double motako matrize baten erakuslea PTR_STRING_ARR =3, string motako matrize baten erakuslea PTR_CELL_ARR =4, cell motako matrize baten erakuslea NONE =5 |
Liburutegi partekatuaDLL funtzioak
Liburutegi partekatuan kanpoko DLLan dei egiten zaien funtzioei buruzko azalpena aurkituko duzu jarraian.
Liburutegi partekatukoDLLko funtzio guztietan aplikatzen da honako hau:
void CALLTYPE fn(out, in1, in2, ...)
Irteera: Emaitzaren balioa
Sarrera: (double&, char*, double*, char**, gelaxka-area) motetako edozein zenbaki, kontuan izanda hor double motako matrize, string motako matrize edo cell motako matrize bat izango dela Gelaxka-area.
GetFunctionCount()
Erreferentzia-parametroaren kudeaketa-funtziorik gabeko funtzioen kopurua ematen du. Funtzio bakoitzak 0 eta nCount-1 bitarteko zenbaki bakar bat dauka. Gero zenbaki hori beharko da GetFunctionData eta GetParameterDescription funtzioentzat.
Sintaxia
void CALLTYPE GetFunctionCount(USHORT& nCount)
Parametroa
USHORT &nCount:
Irteera: Aldagai baten erreferentzia; aldagai horrek osagarri-funtzioen kopurua edukiko du. Adibidez: Osagarri-elementuak 5 funtzio ematen baditu LibreOffice Calc-entzat, orduan nCount=5.
GetFunctionData()
Osagarri-funtzio bati buruzko informazio esanguratsu guztia zehazten du.
Sintaxia
void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)
Parametroa
USHORT& nNo:
Sarrera: 0 eta nCount-1 arteko funtzioa, biak barne.
char* pFuncName:
Irteera: Funtzio-izena programatzaileak ikusten duen bezala, Liburutegi partekatuanDLLan izendatzen den bezala. Izen horrek ez du determinatzen Funtzioen morroian erabilitako izena.
USHORT& nParamCount:
Irteera: Osagarri-funtzioko parametroen kopurua. Kopuru horrek 0 baino handiagoa izan behar du, beti baitago emaitza-balio bat; gehieneko balioa 16 da.
Paramtype* peType:
Irteera: Zehazki Paramtype motako 16 aldagaien matrize baten erakuslea. Lehen nParamCount sarrerak parametro mota egokiarekin betetzen dira.
char* pInternalName:
Irteera: Funtzioaren izena erabiltzaileak ikusten duen bezala, Funtzioen morroian agertzen den bezala. Umlaut-ak izan ditzake.
pFuncName eta pInternalName parametroak char matrizeak dira; 256 tamainarekin inplementatzen dira LibreOffice Calc-en.
GetParameterDescription()
Osagarri-funtzioaren eta bere parametroen azalpen labur bat ematen du. Nahi izanez gero, Funtzioen morroian funtzioen eta parametroen azalpen bat erakusteko erabil daiteke funtzio hau.
Sintaxia
void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)
Parametroa
USHORT& nNo:
Sarrera: Funtzioaren zenbakia liburutegian; 0 eta nCount-1 artekoa izan behar du.
USHORT& nParam:
Sarrera: Zein parametrori buruzko azalpena ematen den azaltzen du; parametroak 1en hasten dira. nParam 0 bada, azalpena bera pDesc-en emango dela suposatzen da; kasu horretan, pName-k ez du inolako esanahirik.
char* pName:
Irteera: izenaren edo motaren parametroa hartzen du; adibidez, "Zenbakia" edo "Karaktere-katea" edo "Data" hitza, etab. LibreOffice Calcen char[256] inplementatzen da.
char* pDesc:
Irteera: Parametroaren azalpena hartzen du, adibidez, "Unibertsoa kalkulatzeko erabiliko den balioa." LibreOffice Calc-en char[256] gisa inplementatzen da.
pName eta pDesc char matrizeak dira; LibreOffice Calc-en 256 tamainarekin inplementatuak. Kontuan izan Funtzioen morroian erabilgarri dagoen lekua mugatua dela eta 256 karaktereak ezin direla osorik erabili.
Gelaxka-areak
Ondorengo taulan azaltzen da, besteak beste, zein datu-egitura eman behar dituen kanpoko programa-modulu batek gelaxka-areak pasatu ahal izateko. LibreOffice Calc-ek hiru matrize mota desberdintzen ditu, datu motaren arabera.
Double motako matrizea
Parametro gisa, Number/Double motako balioak dituen gelaxka-area bat pasatu daiteke. Double motako matrize bat honela definitzen da LibreOffice Calc-en:
Offset |
Izena |
Azalpena |
0 |
Col1 |
Gelaxka-areako goi-ezkerraldeko ertzeko zutabearen zenbakia. Numerazioa 0n hasten da. |
2 |
Row1 |
Gelaxka-areako goi-ezkerraldeko ertzeko errenkada-zenbakia; numerazioa 0n hasten da. |
4 |
Tab1 |
Gelaxka-areako goi-ezkerraldeko ertzeko taula-zenbakia; numerazioa 0n hasten da. |
6 |
Col2 |
Gelaxka-areako behe-eskuinaldeko ertzeko zutabearen zenbakia. Numerazioa 0n hasten da. |
8 |
Row2 |
Gelaxka-areako behe-eskuinaldeko ertzeko errenkada-zenbakia; numerazioa 0n hasten da. |
10 |
Tab2 |
Gelaxka-areako behe-eskuinaldeko ertzeko taula-zenbakia; numerazioa 0n hasten da. |
12 |
Kopurua |
Ondorengo elementuen kopurua. Gelaxka hutsak ez dira kontatzen edo pasatzen. |
14 |
Col |
Elementuaren zutabe-zenbakia. Numerazioa 0n hasten da. |
16 |
Errenkada |
Elementuaren errenkada-zenbakia; numerazioa 0n hasten da. |
18 |
Tab |
Elementuaren taula-zenbakia; numerazioa 0n hasten da. |
20 |
Error |
Errore-zenbakia (0 balioa "no error." gisa definitua). Elementua formula-gelaxka batetik badator, errore-balioa formulak determinatzen du. |
22 |
Balioa |
8 byte-ko IEEE aldagaia, double/koma mugikorrekoa motakoa |
30 |
... |
Hurrengo elementua |
String motako matrizea
Gelaxka-area bat, testu motako datu-balioak dituena eta string motako matrize gisa pasatzen dena. String motako matrize bat honela definitzen da LibreOffice Calc-en:
Offset |
Izena |
Azalpena |
0 |
Col1 |
Gelaxka-areako goi-ezkerraldeko ertzeko zutabearen zenbakia. Numerazioa 0n hasten da. |
2 |
Row1 |
Gelaxka-areako goi-ezkerraldeko ertzeko errenkada-zenbakia; numerazioa 0n hasten da. |
4 |
Tab1 |
Gelaxka-areako goi-ezkerraldeko ertzeko taula-zenbakia; numerazioa 0n hasten da. |
6 |
Col2 |
Gelaxka-areako behe-eskuinaldeko ertzeko zutabearen zenbakia. Numerazioa 0n hasten da. |
8 |
Row2 |
Gelaxka-areako behe-eskuinaldeko ertzeko errenkada-zenbakia; numerazioa 0n hasten da. |
10 |
Tab2 |
Gelaxka-areako behe-eskuinaldeko ertzeko taula-zenbakia; numerazioa 0n hasten da. |
12 |
Kopurua |
Ondorengo elementuen kopurua. Gelaxka hutsak ez dira kontatzen edo pasatzen. |
14 |
Col |
Elementuaren zutabe-zenbakia. Numerazioa 0n hasten da. |
16 |
Errenkada |
Elementuaren errenkada-zenbakia; numerazioa 0n hasten da. |
18 |
Tab |
Elementuaren taula-zenbakia; numerazioa 0n hasten da. |
20 |
Error |
Errore-zenbakia (0 balioa "no error." gisa definitua). Elementua formula-gelaxka batetik badator, errore-balioa formulak determinatzen du. |
22 |
Len |
Ondorengo karaktere-katearen luzera, itxierako 0 byte-a barne. Luzera, itxierako 0a barne, zenbaki bakoiti bat bada, bigarren 0 byte bat gehituko zaio karaktere-kateari, balio bikoitia lortzeko. Beraz, honela kalkulatzen da Len: ((StrLen+2)&~1). |
24 |
Karaktere-katea |
Karaktere-katea itxierako zero byte-arekin |
24+Len |
... |
Hurrengo elementua |
Cell motako matrizea
Testua nahiz zenbakiak dituzten gelaxka-areei dei egiteko erabiltzen dira Cell motako matrizeak. Cell motako matrize bat honela definitzen da LibreOffice Calc-en:
Offset |
Izena |
Azalpena |
0 |
Col1 |
Gelaxka-areako goi-ezkerraldeko ertzeko zutabearen zenbakia. Numerazioa 0n hasten da. |
2 |
Row1 |
Gelaxka-areako goi-ezkerraldeko ertzeko errenkada-zenbakia; numerazioa 0n hasten da. |
4 |
Tab1 |
Gelaxka-areako goi-ezkerraldeko ertzeko taula-zenbakia; numerazioa 0n hasten da. |
6 |
Col2 |
Gelaxka-areako behe-eskuinaldeko ertzeko zutabearen zenbakia. Numerazioa 0n hasten da. |
8 |
Row2 |
Gelaxka-areako behe-eskuinaldeko ertzeko errenkada-zenbakia; numerazioa 0n hasten da. |
10 |
Tab2 |
Gelaxka-areako behe-eskuinaldeko ertzeko taula-zenbakia; numerazioa 0n hasten da. |
12 |
Kopurua |
Ondorengo elementuen kopurua. Gelaxka hutsak ez dira kontatzen edo pasatzen. |
14 |
Col |
Elementuaren zutabe-zenbakia. Numerazioa 0n hasten da. |
16 |
Errenkada |
Elementuaren errenkada-zenbakia; numerazioa 0n hasten da. |
18 |
Tab |
Elementuaren taula-zenbakia; numerazioa 0n hasten da. |
20 |
Error |
Errore-zenbakia (0 balioa "no error." gisa definitua). Elementua formula-gelaxka batetik badator, errore-balioa formulak determinatzen du. |
22 |
Mota |
Gelaxka-edukiaren mota, 0 == Double, 1 == String |
24 |
Value or Len |
type == 0 bada: 8 byte-ko IEEE aldagaia, double/koma mugikorrekoa motakoa type == 1 bada: Ondorengo karaktere-katearen luzera, itxierako 0 byte-a barne. Luzera, itxierako 0a barne, zenbaki bakoiti bat bada, bigarren 0 byte bat gehituko zaio karaktere-kateari, balio bikoitia lortzeko. Beraz, honela kalkulatzen da Len: ((StrLen+2)&~1). |
26 if type==1 |
Karaktere-katea |
type == 1 bada: Karaktere-katea itxierako zero byte-arekin |
32 or 26+Len |
... |
Hurrengo elementua |