Bonjour,
Voulant créer par macro une nouvelle entrée d'index alphabétique, je
décris ici mon cheminement de recherche jusqu'au malencontreux blocage.
On peut atteindre la liste des entrées à partir de l'index lui-même, par :
/ ListIndexes.getByIndex(NumIndex).DocumentIndexMarks /
(où NumIndex est le numéro de l'index auquel on s'intéresse dans la
liste des indexs du document, le repérage se fait par le test du nom).
DocumentIndexMarks/ /est un tableau dont on peut voir tous les éléments
dans Xray. On peut aussi accéder à ces éléments par macro
(avec un petit souci en passant : je ne sais pas lire le nombre
d'éléments du tableau. Ni /DocumentIndexMarks.count/ ni
/DocumentIndexMarks.GetCount/ ne marche).
Selon le STK, XDocumentIndexMark dérive de XtextContent qui dérive
lui-même de Xcomponent, et là il y a une méthode /dispose() /destinée à
supprimer un élément. Exemple (suppression de la première entrée de
l'index) :
/ListIndexes.getByIndex(NumIndex).DocumentIndexMarks(1).dispose()/
Ca marche, ce qui semble montrer que DocumentIndexMarks est un accès
direct à la liste des entrées d'indexs (et pas une reconstitution
calculée à la dernière mise à jour de l'index, ce qui était a priori
plus plausible).
Mais ça se gâte pour ajouter l'entrée. N'est-ce par la méthode
queryInterface du niveau Xinterface qui devait le faire ?
/Dim TheNewIndexEntry as object/
/TheNewIndexEntry=ListIndexes.getByIndex(NumIndex).queryInterface("com.sun.star.text.XDocumentIndexMark")/
Or il me répond au plantage que l'interface demandée est « void ».
Si c'est bien cette méthode qu'il faut utiliser, sans doute me suis-je
trompé dans la syntaxe ?
Merci pour toute aide,
Serge