IBM Lotus Symphony
|
![]() |
Spôsob rozširovania aplikácie Lotus® Symphony™ Spreadsheets prostredníctvom prídavných komponentov popísaný nižšie už nie je aktuálny. Rozhrania sú naďalej platné a podporované na zabezpečenie kompatibility s exitujúcimi prídavnými komponentmi, ale na programovanie nových prídavných komponentov by ste mali použiť nové funkcie rozhrania API. |
Aplikáciu Lotus Symphony Spreadsheets môžete rozšíriť prostredníctvom prídavných komponentov, ktoré predstavujú externé programovacie moduly poskytujúce ďalšie funkcie na prácu s tabuľkovými dokumentmi. Tieto sú uvedené v časti Sprievodca vytváraním funkcií v kategórii Prídavné komponenty. Ak chcete sami naprogramovať prídavné komponenty, tu sa dozviete, ktoré funkcie musia byť exportované prostredníctvom externých knižníc DLL, aby bolo možné pripojiť prídavný komponent.
Lotus Symphony vyhľadá príslušnú knižnicu DLL v priečinku prídavných komponentov definovanom v konfigurácii. Aby aplikácia Lotus Symphony rozpoznala knižnicu DLL, táto musí mať isté vlastnosti, ktoré sú popísané nižšie. Tieto informácie vám pomôžu naprogramovať váš vlastný prídavný komponent pre Sprievodcu vytváraním funkcií aplikácie Lotus Symphony Spreadsheets.
Každá knižnica prídavných komponentov poskytuje niekoľko funkcií. Niektoré funkcie sa používajú na správu. Svoje vlastné funkcie môžete nazvať takmer ľubovoľne. Musia sa však riadiť istými pravidlami pre postupovanie parametrov. Presné konvencie pomenovávania a volania sa líšia podľa platforiem.
Prinajmenšom musia existovať administračné funkcie GetFunctionCount a GetFunctionData. Pomocou týchto funkcií je možné určiť typy parametrov a návratové hodnoty. Ako návratové hodnoty sa podporujú typy Double a String. Ako parametre sa podporujú oblasti buniek Double Array, String Array a Cell Array.
Parametre sa postupujú prostredníctvom referencií. Preto je v podstate zmena týchto hodnôt možná. V aplikácii Lotus Symphony Spreadsheets sa to však nepodporuje, keďže by to v tabuľkových dokumentoch nemalo zmysel.
Knižnice sa môžu znova zaviesť počas behu programu a ich obsah môže analyzovať administračnými funkciami. Pre všetky funkcie sú dostupné informácie o počte a type parametrov, interných a externých názvoch týchto funkcií a administratívny počet.
Tieto funkcie sa volajú synchrónne a okamžite vracajú hodnoty. Funkcie pracujúce v reálnom čase (asynchrónne funkcie) sú tiež možné, tieto tu však nie sú podrobne popísané kvôli ich zložitosti.
Maximálny počet parametrov v prídavnej funkcii pripojenej k Lotus Symphony Spreadsheets je 16: jedna návratová hodnota a maximálne 15 vstupných parametrov funkcie.
Typy údajov sú definované nasledovne:
Typ údajov | Definícia |
---|---|
CALLTYPE | V systémoch Windows: FAR PASCAL (_far _pascal) V iných systémoch: predvolené (predvolená hodnota pre operačný systém) |
USHORT | 2 bajtové nepodpísané celé číslo |
DOUBLE | 8 bajtový formát podľa platformy |
Typ parametra | Závislý od platformy, napríklad int PTR_DOUBLE =0 smerník na hodnotu Double PTR_STRING =1 smerník na reťazec ukončený nulou PTR_DOUBLE_ARR =2 smerník na hodnotu typu Double Array PTR_STRING_ARR =3 smerník na hodnotu typu String Array PTR_CELL_ARR =4 smerník na hodnotu typu Cell Array NONE =5 |
Ďalej nájdete popisy funkcií, ktoré sa volajú v externej knižnici DLL.
Pre všetky funkcie knižníc DLL platí nasledovné:
void CALLTYPE fn(out, in1, in2, ...)
Výstup: Výsledná hodnota
Vstup: Ľubovoľné číslo tyu (double&, char*, double*, char**, oblasť buniek), kde oblasť buniek predstavuje pole typov pole typu double, reťazcové pole alebo pole buniek.
Vráti počet funkcií bez riadiacích funkcií referenčného parametra. Každá funkcia má jedinečné číslo v rozsahu 0 až nCount-1. Toto číslo bude potrebné neskôr pre funkcie GetFunctionData a GetParameterDescription.
Syntax
void CALLTYPE GetFunctionCount(USHORT& nCount)
Parameter
USHORT &nCount:
Výstup: Referencia na premennú, ktorá má obsahovať počet prídavných funkcií. Napríklad: Ak prídavný komponent poskytuje 5 funkcií pre Lotus Symphony Spreadsheets, potom nCount=5.
Určuje všetky dôležité informácie o prídavnej funkcii.
Syntax
void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)
Parameter
USHORT& nNo:
Vstup: Číslo funkcie v rozsahu 0 až nCount-1, vrátane.
char* pFuncName:
Výstup: Názov funkcie pre programátora, ako je nazvaná v knižnici DLL. Názov neurčuje názov použitý v sprievodcovi vytvorením funkcie.
USHORT& nParamCount:
Výstup: Počet parametrov v prídavnej funkcii. Toto číslo musí byť väčšie ako 0, pretože vždy je výsledná hodnota. Maximálna hodnota je 16.
Paramtype* peType:
Výstup: Smerník na pole s presne 16 premennými typu Paramtype. Prvé položky nParamCount sa naplnia príslušným typom parametra.
char* pInternalName:
Výstup: Názov funkcie pre užívateľa, ako je nazvaná v sprievodcovi vytvorením funkcie. Môže obsahovať prehlásky.
Parametre pFuncName a pInternalName sú polia znakov, ktoré sú implementované s veľkosťou 256 v aplikácii Lotus Symphony Spreadsheets.
Poskytuje stručný popis prídavnej funkcie a jej parametrov. Túto funkciu môžete použiť ako voľbu na zobrazenie popisu funkcie a jej parametrov v sprievodcovi vytvorením funkcie.
Syntax
void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)
Parameter
USHORT& nNo:
Vstup: Číslo funkcie v knižnici v rozsahu 0 až nCount-1.
USHORT& nParam:
Vstup: Uvádza, pre ktorý parameter sa poskytuje popis, pričom parametre začínajú od 1. Ak nParam je 0, samotný popis sa má poskytovať v parametri pDesc; v tomto prípade parameter pName nemá žiadny význam.
char* pName:
Výstup: Obsahuje názov alebo typ parametra, napríklad slovo "Číslo", "Reťazec" alebo "Dátum", atď. Implementované v aplikácii Lotus Symphony Spreadsheets ako char[256].
char* pDesc:
Výstup: Obsahuje popis parametra, napríklad "Hodnota, s ktorou sa má vypočítať vesmír." Implementované v aplikácii Lotus Symphony Spreadsheets ako char[256].
Parametre pName a pDesc sú polia znakov, v aplikácii Lotus Symphony Spreadsheets sú implementované s veľkosťou 256. Priestor dostupný v sprievodcovi vytvorením funkcie je však obmedzený a nie je teda možné použiť všetkých 256 znakov.
Nasledujúce tabuľky obsahujú informácie o tom, ktoré údajové štruktúry sa musia poskytnúť externým modulom programy, aby bolo možné postúpiť oblasti buniek. Aplikácia Lotus Symphony Spreadsheets rozlišuje medzi tromi rozličnými poľami v závislosti od typu údajov.
Ako parameter sa môže postupovať oblasť buniek s hodnotami typu Číslo/Double. Pole typu Double je v aplikácii Lotus Symphony Spreadsheets definované nasledovne:
Odsadenie | Názov | Popis |
---|---|---|
0 | Col1 | Číslo stĺpca v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
2 | Row1 | Číslo riadka v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
4 | Tab1 | Číslo tabuľky v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
6 | Col2 | Číslo stĺpca v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
8 | Row2 | Číslo riadka v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
10 | Tab2 | Číslo tabuľky v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
12 | Počet | Počet nasledujúcich prvkov. Prázdne bunky sa nepočítajú ani nepostupujú. |
14 | Col | Číslo stĺpca prvku, číslovanie začína od 0. |
16 | Riadok | Číslo riadka prvku, číslovanie začína od 0. |
18 | Tab | Číslo tabuľky prvku, číslovanie začína od 0. |
20 | Chyba | Číslo chyby, pričom hodnota 0 znamená "žiadna chyba". Ak element pochádza z bunky vzorca, hodnotu chyby určuje vzorec. |
22 | Hodnota | 8-bajtová premenná IEEE typu double/floating point |
30 | ... | Ďalší prvok |
Oblasť buniek, ktorá obsahuje hodnoty s typom údajov Text a postupuje sa ako reťazcové pole. Reťazcové pole v aplikácii Lotus Symphony Lotus Symphony Spreadsheets je definované nasledovne:
Odsadenie | Názov | Popis |
---|---|---|
0 | Col1 | Číslo stĺpca v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
2 | Row1 | Číslo riadka v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
4 | Tab1 | Číslo tabuľky v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
6 | Col2 | Číslo stĺpca v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
8 | Row2 | Číslo riadka v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
10 | Tab2 | Číslo tabuľky v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
12 | Počet | Počet nasledujúcich prvkov. Prázdne bunky sa nepočítajú ani nepostupujú. |
14 | Col | Číslo stĺpca prvku, číslovanie začína od 0. |
16 | Riadok | Číslo riadka prvku, číslovanie začína od 0. |
18 | Tab | Číslo tabuľky prvku, číslovanie začína od 0. |
20 | Chyba | Číslo chyby, pričom hodnota 0 znamená "žiadna chyba". Ak element pochádza z bunky vzorca, hodnotu chyby určuje vzorec. |
22 | Len | Dĺžka nasledujúceho reťazca, vrátane koncového nulového bajtu. Ak má dĺžka vrátane koncového nulového bajtu nepárnu hodnotu, k reťazcu sa pridá druhý nulový bajt, aby vznikla párna hodnota. Preto sa parameter Len vypočíta ako ((StrLen+2)&~1). |
24 | Reťazec | Reťazec s koncovým nulovým bajtom |
24+Len | ... | Ďalší prvok |
Polia buniek sa používajú na volanie oblastí buniek, ktoré obsahujú text, ako aj čísla. Pole buniek je v aplikácii Lotus Symphony Spreadsheets definované nasledovne:
Odsadenie | Názov | Popis |
---|---|---|
0 | Col1 | Číslo stĺpca v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
2 | Row1 | Číslo riadka v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
4 | Tab1 | Číslo tabuľky v ľavom hornom rohu oblasti buniek, číslovanie začína od 0. |
6 | Col2 | Číslo stĺpca v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
8 | Row2 | Číslo riadka v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
10 | Tab2 | Číslo tabuľky v pravom dolnom rohu oblasti buniek, číslovanie začína od 0. |
12 | Počet | Počet nasledujúcich prvkov. Prázdne bunky sa nepočítajú ani nepostupujú. |
14 | Col | Číslo stĺpca prvku. Číslovanie začína od 0. |
16 | Riadok | Číslo riadka prvku, číslovanie začína od 0. |
18 | Tab | Číslo tabuľky prvku, číslovanie začína od 0. |
20 | Chyba | Číslo chyby, pričom hodnota 0 znamená "žiadna chyba". Ak element pochádza z bunky vzorca, hodnotu chyby určuje vzorec. |
22 | Typ | Typ obsahu buniek: 0 == Double, 1 == Reťazec |
24 | Hodnota pre parameter Len | Ak typ == 0: 8-bajtová premenná IEEE typu double/floating point A typ == 1: Dĺžka nasledujúceho reťazca, vrátane koncového nulového bajtu. Ak má dĺžka vrátane koncového nilového bajtu nepárnu hodnotu, k reťazcu sa pridá druhý nulový bajt, aby vznikla párna hodnota. Preto sa parameter Len vypočíta ako ((StrLen+2)&~1). |
26, ak typ==1 | Reťazec | Ak typ == 1: Reťazec s koncovým nulovým bajtom |
32 alebo 26+Len | ... | Ďalší prvok |