IBM Lotus Symphony
|
![]() |
Metoden med at udvide Lotus® Symphony™ Spreadsheets ved hjælp af tilføjelsesprogrammer, som beskrives herunder, er forældet. Grænsefladerne er stadige gyldige og understøttes for at sikre kompatibiliteten med eksisterende tilføjelsesprogrammer, men programmering af nye tilføjelsesprogrammer bør foretages ved hjælp af de nye API-funktioner. |
Lotus Symphony Spreadsheets kan udvides ved hjælp af tilføjelsesprogrammer, som er eksterne programmeringsmoduler, der leverer yderligere funktioner til arbejdet med regneark. De er opført i kategorien Tilføjelsesprogram i guiden Funktion. Hvis du gerne selv vil programmere et tilføjelsesprogram, kan du her læse, hvilke funktioner der skal eksporteres af den eksterne DLL, så tilføjelsesprogrammet kan tilknyttes.
Lotus Symphony søger efter en passende DLL i den mappe til tilføjelsesprogrammer, der er defineret i konfigurationen. DLL'en skal have bestemte egenskaber for at blive genkendt af Lotus Symphony. De beskrives i det følgende. Disse oplysninger sætter dig i stand til at programmere dit eget tilføjelsesprogram til guiden Funktion i Lotus Symphony Spreadsheets.
I hvert bibliotek til et tilføjelsesprogram findes flere funktioner. Nogle funktioner bruges til administrative formål. Du kan vælge næsten et hvilket som helst navn til dine egne funktioner. De skal imidlertid overholde bestemte regler for overførsel af parametre. De specifikke navne og regler for kald kan variere afhængigt af platformen.
De administrative funktioner GetFunctionCount og GetFunctionData skal som minimum være indeholdt. Med dem kan funktionerne samt parametertyper og returværdier bestemmes. Returværdier kan have typen Double eller String. Parametre kan desuden have celleområdetyperne Double Array, String Array og Cell Array.
Parametre overføres som referencer. Derfor kan disse værdier som udgangspunkt ændres. Det understøttes dog ikke i Lotus Symphony Spreadsheets, fordi det ikke giver mening i forbindelse med regneark.
Biblioteker kan genindlæses under kørslen, og deres indhold kan analyseres af de administrative funktioner. For hver funktion findes oplysninger om antal parametre og deres type, navne på interne og eksterne funktioner og et administrativt nummer.
Funktionerne kaldes synkront og returnerer deres resultat med det samme. Det er også muligt at bruge funktioner i realtid (asynkrone funktioner), men på grund af deres kompleksitet beskrives de ikke i detaljer.
En tilføjelsesfunktion, der er knyttet til Lotus Symphony Spreadsheets, kan højst have 16 parametre: én returværdi og 15 inputparametre til funktionen.
Datatyperne har følgende definition:
Datatype | Definition |
---|---|
CALLTYPE | I Windows: FAR PASCAL (_far _pascal) Andre: standard (standardværdien er specifik for operativsystemet) |
USHORT | Heltal på 2 byte uden fortegn |
DOUBLE | 8 byte platformafhængigt format |
Paramtype | Platformafhængig som f.eks. int PTR_DOUBLE=0: pointer til en Double-værdi PTR_STRING=1: pointer til en nul-afsluttet streng PTR_DOUBLE_ARR=2: pointer til en matrix med typen Double Array PTR_STRING_ARR=3: pointer til en matrix med typen String Array PTR_CELL_ARR=4: pointer til en matrix med typen Cell Array NONE=5 |
I det følgende findes en beskrivelse af disse funktioner, som kaldes i den eksterne DLL.
For alle DLL-funktioner gælder følgende:
void CALLTYPE fn(Output, Input1, Input2, ...)
Output: Resultatværdi
Input: et vilkårligt antal typer (Double&, Char*, Double*, Char**, Celleområde), hvor Celleområde er en matrix med typen Double Array, String Array eller Cell Array.
Returnerer antallet af funktioner uden administrationsfunktionerne for referenceparameteren. Hver funktion har et entydigt nummer mellem 0 og nAntal-1. Dette nummer skal senere bruges til funktionerne GetFunctionData og GetParameterDescription.
Syntaks
void CALLTYPE GetFunctionCount(USHORT& nAntal)
Parameter
USHORT &nAntal:
Output: Reference til en variabel, som bør indeholde antallet af tilføjelsesfunktioner. Eksempel: Hvis tilføjelsesprogrammet stiller 5 funktioner til rådighed for Lotus Symphony Spreadsheets, så er nAntal=5.
Henter alle de vigtige oplysninger om en tilføjelsesfunktion.
Syntaks
void CALLTYPE GetFunctionData(USHORT& nNr, char* pFunkNavn, USHORT& nParamAntal, Paramtype* peType, char* pInterntNavn)
Parameter
USHORT& nNr:
Input: Funktionsnummer mellem 0 og nAntal-1, begge iberegnet.
char* pFunkNavn:
Output: Funktionsnavn, som programmøren ser det, da det er navngivet i DLL'en. Navnet bestemmer ikke, hvilket navn der bruges i guiden Funktion.
USHORT& nParamAntal:
Output: Antal parametre i tilføjelsesfunktionen. Tallet skal være større end 0, da der altid er en resultatværdi. Den største værdi er 16.
Paramtype* peType:
Output: Pointer til en matrix med præcis 16 variabler med typen Paramtype. De første nParamAntal elementer er udfyldt med de passende typer parametre.
char* pInterntNavn:
Output: Funktionsnavn, som brugeren ser det, da det vises i guiden Funktion. Må indeholde omlydstegn (¨).
Parametrene pFunkNavn og pInterntNavn er matrixer med typen Char, som er implementeret med en størrelse på 256 i Lotus Symphony Spreadsheets.
Giver en kort beskrivelse af tilføjelsesfunktionen og dens parametre. Funktionen kan bruges til at vise en funktions- og parameterbeskrivelse i guiden Funktion.
Syntaks
void CALLTYPE GetParameterDescription(USHORT& nNr, USHORT& nParam, char* pNavn, char* pBeskr)
Parameter
USHORT& nNr:
Input: Nummer mellem 0 og nAntal-1 på funktionen i biblioteket.
USHORT& nParam:
Input: Angiver, hvilken parameter der vises en beskrivelse for. Parameterværdier begynder med 1. Hvis nParam er 0, skulle selve beskrivelsen være angivet i pBeskr, og i det tilfælde har pNavn ingen betydning.
char* pNavn:
Output: Henter parameternavnet eller typen, f.eks. ordet "Number", "String" eller "Date" osv. Er i Lotus Symphony Spreadsheets implementeret som char[256].
char* pBeskr:
Output: Henter beskrivelsen af parameteren, f.eks. "Værdi, som universet skal beregnes ud fra.". Er i Lotus Symphony Spreadsheets implementeret som char[256].
pNavn og pBeskr er matrixer med typen Char. De er i Lotus Symphony Spreadsheets implementeret med en størrelse på 256. Bemærk, at der er begrænset plads i guiden Funktion, og at de 256 tegn ikke kan udnyttes fuldt ud.
I følgende tabel vises oplysninger om, hvilke datastrukturer der skal leveres af et eksternt programmodul, for at overføre celleområder. I Lotus Symphony Spreadsheets skelnes mellem tre forskellige matrixer, der afhænger af datatypen.
Med en parameter med denne datatype kan der overføres et celleområde med værdier, der har typen Number eller Double. I Lotus Symphony Spreadsheets er Double Array defineret på følgende måde:
Forskydning | Navn | Beskrivelse |
---|---|---|
0 | Col1 | Nummer på kolonnen i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
2 | Row1 | Nummer på række i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
4 | Tab1 | Nummer på tabellen i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
6 | Col2 | Nummer på kolonnen i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
8 | Row2 | Nummer på rækken i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
10 | Tab2 | Nummer på tabellen i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
12 | Count | Antallet af efterfølgende elementer. Tomme celler tælles ikke og overføres ikke. |
14 | Col | Elementets kolonnenummer. Nummereringen begynder med 0. |
16 | Række | Elementets rækkenummer. Nummereringen begynder med 0. |
18 | Tabulatortast | Elementets tabelnummer. Nummereringen begynder med 0. |
20 | Error | Fejlnummer, hvor værdien 0 er defineret som "ingen fejl". Hvis elementet kommer fra en formelcelle, bestemmes fejlværdien af formlen. |
22 | Value | IEEE-variabel på 8 byte med typen Double eller Floating Point |
30 | ... | Næste element |
Et celleområde, som indeholder værdier med typen Text og overføres som en strengmatrix. I Lotus Symphony Spreadsheets er String Array defineret på følgende måde:
Forskydning | Navn | Beskrivelse |
---|---|---|
0 | Col1 | Nummer på kolonnen i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
2 | Row1 | Nummer på række i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
4 | Tab1 | Nummer på tabellen i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
6 | Col2 | Nummer på kolonnen i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
8 | Row2 | Nummer på rækken i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
10 | Tab2 | Nummer på tabellen i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
12 | Count | Antallet af efterfølgende elementer. Tomme celler tælles ikke og overføres ikke. |
14 | Col | Elementets kolonnenummer. Nummereringen begynder med 0. |
16 | Række | Elementets rækkenummer. Nummereringen begynder med 0. |
18 | Tabulatortast | Elementets tabelnummer. Nummereringen begynder med 0. |
20 | Error | Fejlnummer, hvor værdien 0 er defineret som "ingen fejl". Hvis elementet kommer fra en formelcelle, bestemmes fejlværdien af formlen. |
22 | Len | Længden på den efterfølgende streng inklusive den afsluttende nul-byte. Hvis længden inklusive den afsluttende nul-byte giver en ulige værdi, tilføjes en ekstra nul-byte til strengen, så der opnås en lige værdi. Len beregnes derfor ved hjælp af ((StrLen+2)&~1). |
24 | String | Streng med afsluttende nul-byte |
24+Len | ... | Næste element |
Cellematrixer bruges til at kalde celleområder, der både indeholder tekst og tal. I Lotus Symphony Spreadsheets er Cell Array defineret på følgende måde:
Forskydning | Navn | Beskrivelse |
---|---|---|
0 | Col1 | Nummer på kolonnen i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
2 | Row1 | Nummer på række i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
4 | Tab1 | Nummer på tabellen i øverste venstre hjørne af celleområdet. Nummereringen begynder med 0. |
6 | Col2 | Nummer på kolonnen i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
8 | Row2 | Nummer på rækken i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
10 | Tab2 | Nummer på tabellen i nederste højre hjørne af celleområdet. Nummereringen begynder med 0. |
12 | Count | Antallet af efterfølgende elementer. Tomme celler tælles ikke og overføres ikke. |
14 | Col | Elementets kolonnenummer. Nummereringen begynder med 0. |
16 | Række | Elementets rækkenummer. Nummereringen begynder med 0. |
18 | Tabulatortast | Elementets tabelnummer. Nummereringen begynder med 0. |
20 | Error | Fejlnummer, hvor værdien 0 er defineret som "ingen fejl". Hvis elementet kommer fra en formelcelle, bestemmes fejlværdien af formlen. |
22 | Type | Celleindholdets type. 0 == Double, 1 == String. |
24 | Value eller Len | Hvis type == 0: IEEE-variabel på 8 byte med typen Double eller Floating Point Hvis type == 1: Længden på den efterfølgende streng inklusive den afsluttende nul-byte. Hvis længden inklusive den afsluttende nul-byte giver en ulige værdi, tilføjes en ekstra nul-byte til strengen, så der opnås en lige værdi. Len beregnes derfor ved hjælp af ((StrLen+2)&~1). |
26 hvis type==1 | String | Hvis type == 1: Streng med afsluttende nul-byte |
32 eller 26+Len | ... | Næste element |