[QR]Comment utiliser des arguments nommés et positionnels avec les objets OleAutomation ?
En règle générale on peut appeler une méthode d'un serveur Automation par une interface ou par un variant.
Dans le premier cas l'objet manipulé étant fortement typé on doit donc spécifier tous les paramètres. Ceux optionnels devant être remplacés par
EmptyParam :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var
MaZone: Range;
Separator: OleVariant;
Tableau : Table;
begin
...
//Définit le séparateur utilisé lors de la conversion
Separator:=';';
MaZone.ConvertToTable(Separator,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam); |
Dans le second cas l'objet manipulé étant de type
Variant/OleVariant on peut utiliser les arguments nommés dans l'appel de la méthode.
Cette expression est évaluée uniquement lors de l'exécution (cf.
Dispatch.Invoke)
On évite ainsi une liste de paramètres vides (
EmptyParam), les paramètres qui ne sont pas spécifiés prennent leur valeur par défaut.
1 2 3 4 5 6 7 8 9 10 11 12
| var
MaZone: OleVariant;
Separator: OleVariant;
Tableau : Table;
begin
...
//Définit le séparateur utilisé lors de la conversion
Separator:=';';
MaZone.ConvertToTable(Separator:=';');
end; |
On peut nommer plusieurs paramètres, l'ordre de leur déclaration n'a pas d'importance.
Ici cette possibilité facilite le portage entre les versions d'Office dans la mesure où les paramètres utilisés sont communs.
Il est aussi possible d'utiliser des arguments positionnels :
1 2
|
MaZone.ConvertToTable(Separator,NumRows,,,,,,,,,,,,,,DefaultTableBehavior); |
Ce qui peut s'écrire
1 2
|
MaZone.ConvertToTable(Separator,NumRows,,DefaultTableBehavior); |
Partager