IBM Lotus Symphony


Tilføjelsesprogram til programmering i Lotus Symphony Spreadsheets

Advarselsikon 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.

Begrebet Tilføjelsesprogram

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.

Funktioner i tilføjelsesprogram-DLL

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.

Generelle oplysninger om grænsefladen

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:

Tabel 1. Datatypedefinitioner
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

DLL-funktioner

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.

GetFunctionCount()

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.

GetFunctionData()

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.

GetParameterDescription()

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.

Celleområder

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.

Double Array

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:

Tabel 2. Definition af et Double Array
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

String Array

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:

Tabel 3. Definition af et String Array
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

Cell Array

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:

Tabel 4. Definition af et Cell Array
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

Produktfeedback | Yderligere dokumentation | Varemærker