<p class="Head1"><help:switch select="System" xmlns:help="http://openoffice.org/2000/help"><help:case select="UNIX"><help:key-word value="programování sdílené knihovny; %PRODUCTNAME Calc" tag="kw66914_1"/></help:case><help:default><help:key-word value="programming external DLL functions for %PRODUCTNAME Calc" tag="kw66914_8"/></help:default></help:switch><help:switch select="System" xmlns:help="http://openoffice.org/2000/help"><help:case select="UNIX"><help:key-word value="sdílená knihovna pro programování v %PRODUCTNAME Calc" tag="kw66914_7"/></help:case><help:default><help:key-word value="external DLL functions for programming in %PRODUCTNAME Calc" tag="kw66914_6"/></help:default></help:switch><help:switch select="System" xmlns:help="http://openoffice.org/2000/help"><help:case select="UNIX"><help:key-word value="funkce sdílené knihovny pro %PRODUCTNAME Calc" tag="kw66914_5"/></help:case><help:default><help:key-word value="functions of the %PRODUCTNAME Calc add-in DLL" tag="kw66914_4"/></help:default></help:switch><help:key-word value="kategorie modulu" tag="kw66914_3" xmlns:help="http://openoffice.org/2000/help"/><help:key-word value="modul pro programování v %PRODUCTNAME Calc" tag="kw66914_2" xmlns:help="http://openoffice.org/2000/help"/>Doplněk pro programování v aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc</p>
<p class="Paragraph">K aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc lze připojit doplněk. Je to externí programovací modul, který nabízí další funkce pro práci se sešity. Tyto funkce jsou zobrazeny v Průvodci funkcemi v kategorii <span class="T1">Doplněk</span>. Jestliže budete chtít programovat podobný doplněk sami, dozvíte se v této části nápovědy, které funkce musí být exportovány <help:switch select="System" xmlns:help="http://openoffice.org/2000/help"><help:case select="UNIX">sdílenou knihovnou</help:case><help:default>externí knihovnou DLL</help:default></help:switch>, aby bylo možné doplněk úspěšně připojit.</p>
<p class="Paragraph">Sada <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> vyhledá podle podřízeného adresáře „addin“ cestu k umístění modulů, která je definována na stránce <span class="T1">Cesty</span> u položky <span class="T1"><help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname></span> v dialogovém okně <span class="T1">Volby</span> v nabídce <span class="T1">Nástroje</span>, a srovná je s vhodnou <help:switch select="System" xmlns:help="http://openoffice.org/2000/help"><help:case select="UNIX">sdílenou knihovnou</help:case><help:default>knihovnou DLL</help:default></help:switch>. Má-li být <help:switch select="System" xmlns:help="http://openoffice.org/2000/help"><help:case select="UNIX"/><help:default>knihovna DLL</help:default></help:switch> v sadě <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> rozpoznána, musí obsahovat určité vlastnosti, které jsou vysvětleny dále v textu. Tyto informace vám umožní programovat vlastní doplňky Průvodce funkcemi aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc.</p>
<p class="Paragraph">Programovací balík obsahuje dva vzorky rozhraní doplňku aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc. Jestliže jste při instalaci programu označili, že chcete instalovat také doplňky, obsahuje adresář sady také adresář „addin“, ve kterém jsou uloženy vzorové knihovny DLL a podadresář „source“ se zdrojovým kódem.</p>
<p class="Paragraph">Popis funkcí doplňků zajišťovaných vzorovými knihovnami DLL naleznete v nápovědě sady <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> ke <help:link Id="66872" Eid="beispiele" xmlns:help="http://openoffice.org/2000/help">kategorii Doplněk</help:link> v Průvodci funkcemi.</p>
</span></th></tr></table>
<p class="Paragraph"/>
<p class="Head2">Princip doplňku</p>
<p class="Paragraph">Každá knihovna doplňku zajišťuje několik funkcí. Některé z funkcí slouží k účelům správy a musí proto odpovídat určité konvenci. Tyto funkce zprostředkují informace o jiných funkcích, ze kterých sestává rozšíření aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc. Těmto funkcím můžete přiřadit libovolný název. Musí ovšem splňovat určitá pravidla týkající se předávání parametrů. Přesné konvence pojmenování a volání funkcí se na různých platformách liší. V systému Windows jsou používány konvence jazyka Pascal, protože je tento jazyk stále velmi rozšířen.</p>
<p class="Paragraph">V knihovně musí existovat alespoň funkce správy <help:link Id="66914" Eid="getfunctioncount" xmlns:help="http://openoffice.org/2000/help">GetFunctionCount</help:link> a <help:link Id="66914" Eid="getfunctiondata" xmlns:help="http://openoffice.org/2000/help">GetFunctionData</help:link>. Pomocí těchto funkcí je možné určovat jak funkce, tak typy parametrů a vrácené hodnoty. V případě vrácených hodnot jsou podporovány datové typy double a řetězců. V případě dalších parametrů jsou podporovány oblasti buněk <help:link Id="66914" Eid="cellarray" xmlns:help="http://openoffice.org/2000/help">pole typu double</help:link>, <help:link Id="66914" Eid="cellarray" xmlns:help="http://openoffice.org/2000/help">pole řetězců</help:link> a <help:link Id="66914" Eid="cellarray" xmlns:help="http://openoffice.org/2000/help">pole buněk</help:link>.</p>
<p class="Paragraph">Parametry jsou předávány pomocí odkazů. Je tedy v podstatě možné tyto hodnoty měnit. Aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc ovšem tuto možnost nepodporuje, protože v rámci sešitů jí není třeba.</p>
<p class="Paragraph">Knihovny lze v průběhu načítání znovu načíst a jejich obsah je možné analyzovat dvěma zmíněnými funkcemi správy. Ke každé funkci lze získat informace o počtu a typu parametrů, interních a skutečných názvech v aplikaci a čísla týkající se správy.</p>
<p class="Paragraph">Funkce jsou volány současně (synchronně) a výsledek vracejí okamžitě. Jsou možné i funkce reálného času (asynchronní funkce), ty zde nicméně nejsou pro svou složitost podrobněji vysvětleny.</p>
<p class="Head2">Obecné informace o rozhraní</p>
<p class="Paragraph">Maximální počet parametrů funkce doplňku připojeného k aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc je 16 – jedna výsledná hodnota a maximální počet 15 vstupních parametrů funkce.</p>
<p class="Paragraph">Datové typy jsou definovány takto:</p>
<p class="Paragraph">Dále v textu najdete popis těch funkcí, které jsou volány <help:switch select="System" xmlns:help="http://openoffice.org/2000/help"><help:case select="UNIX">ze sdílené knihovny</help:case><help:default>z externí knihovny DLL</help:default></help:switch>.</p>
<p class="Paragraph">Vstup: Libovolný počet datových typů (double&, char*, double*, char**, oblast buněk), kde <help:link Id="66914" Eid="zellbereich" xmlns:help="http://openoffice.org/2000/help">oblast buněk</help:link> znamená datová pole typu double, pole řetězců a pole buněk.</p>
<p class="Paragraph">Vstup: Číslo funkce od 0 do nCount-1 včetně.</p>
<p class="Paragraph">char* pFuncName:</p>
<p class="Paragraph">Výstup: Název funkce z pohledu programátora, tedy název funkce <help:switch select="System" xmlns:help="http://openoffice.org/2000/help"><help:case select="UNIX">ve sdílené knihovně</help:case><help:default>v knihovně DLL</help:default></help:switch>. Tento název není rozhodující pro název funkce použitý v Průvodci funkcemi.</p>
<p class="Paragraph">USHORT& nParamCount:</p>
<p class="Paragraph">Výstup: Počet parametrů funkce doplňku. Počet musí být vždy větší než 0, protože každá funkce má výslednou hodnotu. Maximální počet je 16.</p>
<p class="Paragraph">Paramtype* peType:</p>
<p class="Paragraph">Výstup: Ukazatel na pole sestávající přesně ze 16 proměnných typu Paramtype. První položky parametru nParamCount obsahují vhodný typ parametru.</p>
<p class="Paragraph">char* pInternalName:</p>
<p class="Paragraph">Výstup: Název funkce z pohledu uživatele, tedy název funkce v Průvodci funkcemi. V tomto názvu může být použita diakritika.</p>
<p class="Paragraph">Parametry pFuncName a pInternalName jsou pole znaků, která mají v aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc velikost 256.</p>
<p class="Paragraph">Vrátí krátký popis funkce doplňku a jejích parametrů. Použití této funkce je volitelné. Lze ji použít k zobrazení popisu funkce a parametrů v Průvodci funkcemi.</p>
<p class="Paragraph">Vstup: Číslo funkce v knihovně. Číslo od 0 do nCount-1.</p>
<p class="Paragraph">USHORT& nParam:</p>
<p class="Paragraph">Vstup: Označuje parametr, pro který bude popis načten. Počítání parametrů začíná od čísla 1. Má-li parametr nParam hodnotu 0, předpokládá se, že je popis dán parametrem pDesc, a v tom případě nemá parametr pName žádný význam.</p>
<p class="Paragraph">char* pName:</p>
<p class="Paragraph">Výstup: Načte název nebo typ parametru, např. slovo „Číslo“ nebo „Řetězec“ či „Datum“ atd. V aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc je parametr realizován polem char[256].</p>
<p class="Paragraph">char* pDesc:</p>
<p class="Paragraph">Výstup: Načte popis parametru, například „Hodnota, podle které bude vypočítán vesmír.“ V aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc je parametr realizován polem char[256].</p>
<p class="Paragraph">Parametry pName a pDesc jsou pole znaků, která mají v aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc velikost 256. V Průvodci funkcemi je k dispozici pouze omezené místo a možný počet 256 znaků nelze plně využít.</p>
<p class="Paragraph">Následující tabulky obsahují informace o tom, které datové struktury musí externí programovací modul nabízet, aby bylo možné oblasti buněk předávat. Aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc rozlišuje tři různá pole podle datového typu.</p>
<p class="Head3"><a name="doublearray"/>Pole typu double</p>
<p class="Paragraph">Jako parametr je možné předávat pole buněk s hodnotami typu číslo o velikosti double. Pole typu double je v aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc definováno takto:</p>
<p class="Paragraph">Číslo chyby. Hodnota 0 má význam „bez chyby“. Pochází-li prvek z buňky obsahující vzorec, je hodnota chyby dána vzorcem.</p>
<p class="Paragraph">Oblast buněk, která obsahuje hodnoty datového typu Text a je předávána jako pole řetězců. Pole řetězců je v aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc definováno takto:</p>
<p class="Paragraph">Číslo chyby. Hodnota 0 má význam „bez chyby“. Pochází-li prvek z buňky obsahující vzorec, je hodnota chyby dána vzorcem.</p>
<p class="Paragraph">Pomocí polí buněk jsou volány oblasti buněk, které obsahují jak text, tak čísla. Pole buněk je v aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Calc definováno takto:</p>
<p class="Paragraph">Číslo chyby. Hodnota 0 má význam „bez chyby“. Pochází-li prvek z buňky obsahující vzorec, je hodnota chyby dána vzorcem.</p>
<p class="Paragraph">Jestliže Type == 0: 8bajtová proměnná IEEE typu double s plovoucí desetinnou čárkou</p>
<p class="Paragraph">Jestliže Type == 1: Délka následujícího řetězce včetně závěrečného nulového bajtu. Má-li délka včetně závěrečného nulového bajtu lichou hodnotu, je k řetězci přidán druhý nulový bajt, aby měla délka sudou hodnotu. Parametr Len se tedy vypočítá podle vzorce ((StrLen+2)&~1).</p>