IBM Lotus Symphony


Composant additionnel pour la programmation dans Lotus Symphony Spreadsheets

Icône Avertissement La méthode d'extension de Lotus Symphony Spreadsheets via des composants additionnels, qui est décrite ci-dessous, est obsolète. Les interfaces sont toujours valides et prises en charge afin d'assurer la compatibilité avec les composants additionnels existants, mais pour la programmation de nouveaux composants additionnels, vous devez utiliser les nouvelles fonctions d'API.

Vous pouvez étendre Lotus Symphony Spreadsheets via des composants additionnels, qui sont des modules de programmation externes offrant des fonctions supplémentaires pour utiliser des feuilles de calcul. Ils sont répertoriés dans l'Assistant Fonctions, dans la catégorie Composant additionnel. Si vous souhaitez programmer vous-même un composant additionnel, vous pouvez prendre connaissance ici des fonctions qui doivent être exportées par la DLL externe, afin que le composant additionnel puisse être correctement connecté.

Lotus Symphony recherche une DLL adaptée dans le dossier du composant additionnel défini dans la configuration. Pour être reconnue par Lotus Symphony, la DLL doit posséder certaines propriétés, comme expliqué ci-dessous. Ces informations vous permettent de programmer votre propre composant additionnel pour l'Assistant Fonctions de Lotus Symphony Spreadsheets.

Concept de composant additionnel

Chaque bibliothèque de composants additionnels offre plusieurs fonctions. Certaines de ces fonctions sont utilisées à des fins administratives. Vous pouvez affecter pratiquement n'importe quel nom à vos propres fonctions. Toutefois, vous devez également respecter certaines règles relatives à la transmission de paramètres. Les conventions de dénomination et d'appellation exactes varient en fonction des différentes plateformes.

Fonctions DLL du composant additionnel

Il est indispensable que les fonctions administratives GetFunctionCount et GetFunctionData existent. Elles permettent de déterminer les fonctions, ainsi que les types de paramètre et les valeurs de retour. Les types Double et Chaîne de caractères sont prises en charge en tant que valeurs de retour. De plus, les zones de cellules de matrice de type Double, Chaîne de caractères et Cellule sont prises en charge en tant que paramètres.

Les paramètres sont transmis à l'aide de références. Ainsi, une modification de ces valeurs est théoriquement possible. Toutefois, elle n'est pas prise en charge dans Lotus Symphony Spreadsheets, car elle n'est pas utile avec des feuilles de calcul.

Les bibliothèques peuvent être rechargées lors de l'exécution et leur contenu peut être analysé par les fonctions administratives. Pour chaque fonction, des informations sont disponibles sur le nombre et le type de paramètres, ainsi que le nom des fonctions internes et externes et un numéro administratif.

Les fonctions sont appelées de façon synchrone et renvoient leurs résultats immédiatement. Des fonctions en temps réel (fonctions asynchrones) sont également possibles ; toutefois, elles ne sont pas expliquées en détail en raison de leur complexité.

Informations générales sur l'interface

Le nombre maximal de paramètres que peut contenir une fonction Composant additionnel associée à Lotus Symphony Spreadsheets est égal à 16, soit une valeur de retour et 15 paramètres d'entrée de fonction au maximum.

Les types de données sont définis comme suit :

Tableau 1. Définitions de type de données
Type de données Définition
CALLTYPE

Sous Windows : FAR PASCAL (_far _pascal)

Autre : valeur par défaut (valeur par défaut spécifique du système d'exploitation)

USHORT Entier sans signe à 2 octets
DOUBLE Format à 8 octets dépendant de la plateforme
Paramtype

Entier dépendant de la plateforme

PTR_DOUBLE =0 pointeur vers un double

PTR_STRING =1 pointeur vers une chaîne de caractères terminée à par un zéro

PTR_DOUBLE_ARR =2 pointeur vers une matrice de type Double

PTR_STRING_ARR =3 pointeur vers une matrice de type Chaîne de caractères

PTR_CELL_ARR =4 pointeur vers une matrice de type Cellule

NONE =5

Fonctions DLL

Vous trouverez ci-dessous une description de ces fonctions, qui sont appelées sur la DLL externe.

Pour toutes les fonctions DLL, les paramètres suivants s'appliquent :

void CALLTYPE fn(out, in1, in2, ...)

Sortie : Valeur correspondante

Saisie : Tout nombre des types double&, char*, double*, char**, zone Cellule, où la zone Cellule est une matrice de type Double, Chaîne de caractères ou Cellule.

GetFunctionCount()

Renvoie le numéro des fonctions sans les fonctions de gestion du paramètre de référence. Chaque fonction possède un numéro unique compris entre 0 et nCount-1. Ce numéro sera nécessaire ultérieurement pour les fonctions GetFunctionData et GetParameterDescription.

Syntaxe

void CALLTYPE GetFunctionCount(USHORT& nCount)

Paramètre

USHORT &nCount :

Sortie : Référence à une variable, qui doit contenir le nombre de fonctions Composant additionnel. Par exemple, si le composant additionnel fournit 5 fonctions pour Lotus Symphony Spreadsheets, nCount=5.

GetFunctionData()

Détermine toutes les informations importantes sur une fonction Composant additionnel.

Syntaxe

void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)

Paramètre

USHORT& nNo :

Saisie : Numéro de fonction compris entre 0 et nCount-1 inclus.

char* pFuncName :

Sortie : Nom de fonction tel qu'il apparaît au programmeur et tel qu'il figure dans la DLL. Ce nom ne détermine pas le nom utilisé dans l'Assistant Fonctions.

USHORT& nParamCount :

Sortie : Nombre de paramètres dans la fonction Composant additionnel. Ce nombre doit être supérieur à 0, car il existe toujours une valeur de résultat ; la valeur maximale est 16.

Paramtype* peType :

Sortie : Pointeur vers une matrice d'exactement 16 variables de type Paramtype. Les premières entrées nParamCount sont renseignées à l'aide du type de paramètre adapté.

char* pInternalName :

Sortie : Nom de fonction tel qu'il apparaît à l'utilisateur et dans l'Assistant Fonctions. Peut contenir des trémas.

Les paramètres pFuncName et pInternalName sont des matrices de type Caractère, qui sont implémentés avec une taille égale à 256 dans Lotus Symphony Spreadsheets.

GetParameterDescription()

Fournit une brève description de la fonction Composant additionnel et de ses paramètres. En tant qu'option, cette fonction peut être utilisée pour afficher la description d'une fonction et de ses paramètres dans l'Assistant Fonctions.

Syntaxe

void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)

Paramètre

USHORT& nNo :

Saisie : Numéro de la fonction dans la bibliothèque, compris entre 0 et nCount-1.

USHORT& nParam :

Saisie : Indique pour quel paramètre la description est fournie ; les paramètres commencent au numéro 1. Si nParam est égal à 0, la description elle-même est normalement fournie dans pDesc ; dans ce cas, pName n'a aucune signification.

char* pName :

Sortie : Prend le nom ou le type de paramètre, par exemple le mot "Numéro", "Chaîne" ou "Date", etc. Implémentée dans Lotus Symphony Spreadsheets sous la forme char[256].

char* pDesc :

Sortie : Prend la description du paramètre, par exemple, "Valeur, à laquelle l'univers doit être calculé." Implémentée dans Lotus Symphony Spreadsheets sous la forme char[256].

pName et pDesc sont des matrices de type Caractère ; implémentées dans Lotus Symphony Spreadsheets avec une taille égale à 256. Veuillez noter que l'espace disponible dans l'Assistant Fonctions est limité et que les 256 caractères peuvent ne pas être totalement utilisés.

Zones de cellules

Les tableaux suivants contiennent des informations sur les structures de données qui doivent être fournies par un module de programme externe afin de transmettre des zones de cellules. Lotus Symphony Spreadsheets fait la distinction entre trois matrices différentes, en fonction du type de données.

Matrice de type Double

En tant que paramètre, une zone de cellule contenant des valeurs du type Numéro/Double peut être transmise. Une matrice double dans Lotus Symphony Spreadsheets est définie comme suit :

Tableau 2. Définition d'une matrice de type Double
Décalage Nom Description
0 Col1 Numéro de colonne dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
2 Row1 Numéro de ligne dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
4 Tab1 Numéro de tableau dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
6 Col2 Numéro de colonne dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
8 Row2 Numéro de ligne dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
10 Tab2 Numéro de tableau dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
12 Count Numéro des éléments suivants. Les cellules vides ne sont ni comptées, ni transmises.
14 Col Numéro de colonne de l'élément ; la numérotation démarre à 0.
16 Row Numéro de ligne de l'élément ; la numérotation démarre à 0.
18 Tab Numéro de tableau de l'élément ; la numérotation démarre à 0.
20 Error Numéro d'erreur, où la valeur 0 correspond à "aucune erreur". Si l'élément provient d'une cellule de formule, la valeur de l'erreur est déterminée par la formule.
22 Value Variable IEEE de 8 octets de type Double/virgule flottante
30 ... Elément suivant

Matrice de type Chaîne de caractères

Zone de cellule, qui contient des valeurs de données de type Texte et qui est transmise en tant que matrice de type Chaîne de caractères. Une matrice de type Chaîne de caractères dans Lotus Symphony Lotus Symphony Spreadsheets est définie comme suit :

Tableau 3. Définition d'une matrice de type Chaîne de caractères
Décalage Nom Description
0 Col1 Numéro de colonne dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
2 Row1 Numéro de ligne dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
4 Tab1 Numéro de tableau dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
6 Col2 Numéro de colonne dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
8 Row2 Numéro de ligne dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
10 Tab2 Numéro de tableau dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
12 Count Numéro des éléments suivants. Les cellules vides ne sont ni comptées, ni transmises.
14 Col Numéro de colonne de l'élément ; la numérotation démarre à 0.
16 Row Numéro de ligne de l'élément ; la numérotation démarre à 0.
18 Tab Numéro de tableau de l'élément ; la numérotation démarre à 0.
20 Error Numéro d'erreur, où la valeur 0 correspond à "aucune erreur". Si l'élément provient d'une cellule de formule, la valeur de l'erreur est déterminée par la formule.
22 Len Longueur de la chaîne suivante, y compris l'octet zéro de fermeture. Si la longueur incluant l'octet zéro de fermeture est égal à une valeur impaire, un deuxième octet zéro est ajouté à la chaîne de caractères afin d'obtenir une valeur paire. Ainsi, Len est calculé à l'aide de ((StrLen+2)&~1).
24 String Chaîne de caractères avec un octet zéro de fermeture
24+Len ... Elément suivant

Matrice de type Cellule

Les matrices de type Cellule sont utilisées pour appeler des zones de cellules qui contiennent du texte ainsi que des nombres. Une matrice de type Cellule dans Lotus Symphony Spreadsheets est définie comme suit :

Tableau 4. Définition d'une matrice de type Cellule
Décalage Nom Description
0 Col1 Numéro de colonne dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
2 Row1 Numéro de ligne dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
4 Tab1 Numéro de tableau dans l'angle supérieur gauche de la zone de cellule ; la numérotation démarre à 0.
6 Col2 Numéro de colonne dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
8 Row2 Numéro de ligne dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
10 Tab2 Numéro de tableau dans l'angle inférieur droit de la zone de cellule ; la numérotation démarre à 0.
12 Count Numéro des éléments suivants. Les cellules vides ne sont ni comptées, ni transmises.
14 Col Numéro de colonne de l'élément. La numérotation démarre à 0.
16 Row Numéro de ligne de l'élément ; la numérotation démarre à 0.
18 Tab Numéro de tableau de l'élément ; la numérotation démarre à 0.
20 Error Numéro d'erreur, où la valeur 0 correspond à "aucune erreur". Si l'élément provient d'une cellule de formule, la valeur de l'erreur est déterminée par la formule.
22 Type Type du contenu de la cellule, 0 == Double, 1 == Chaîne de caractères
24 Value ou Len

Si type == 0 : variable IEEE de 8 octets de type Double/virgule flottante

Si type == 1 : longueur de la chaîne suivante, y compris l'octet zéro de fermeture. Si la longueur incluant l'octet zéro de fermeture est égal à une valeur impaire, un deuxième octet zéro est ajouté à la chaîne de caractères afin d'obtenir une valeur paire. Ainsi, Len est calculé à l'aide de ((StrLen+2)&~1).

26 si type==1 String Si type == 1 : chaîne de caractères avec un octet zéro de fermeture
32 ou 26+Len ... Elément suivant

Commentaires en retour sur le produit | Documentation complémentaire | Marques