Dans LibreOffice-Writer, je voudrais écrire du texte dans un contrôle Zone De Texte en utilisant des composants Bouton.
Je ne trouve que des exemples pour Calc, qui font appel à un objet “Form” qui n’existe pas chez moi, ou à des fonctions getByName que je ne sais pas à quoi raccrocher.
Bonjour @MyosotisArae
Il y a bel et bien un objet Form : les contrôles sont toujours rattachés à un formulaire. Lors du dessin d’un contrôle LibreOffice l’attribue à l’objet Form courant et s’il n’y en a pas encore, cet objet est créé de manière transparente avec le nom par défaut Standard
.
Dans l’exemple joint MajZoneTexte.odt tu trouveras le code :
Sub PysModifTexte
dim oForm as object, oCtrl as object
oForm = thiscomponent.DrawPage.Forms.getByName("Standard")
oForm.getByName("Zone de texte 1").text="mon texte"
End Sub
Je commence par créer une variable qui “pointe” sur l’objet Form
. On voit qu’il a été créé dans la “page de dessin”. On part donc du document (thiscomponent) qui comprend une page de dessin (DrawPage) dans laquelle on trouve la collection des formulaires (Forms), dans cette collection on veut accéder au formulaire nommé Standard.
À partir de cet objet on va rechercher le contrôle nommé “Zone de texte 1” (nom à adapter éventuellement si tu as créé plusieurs contrôles ou si tu l’as renommé) et on modifie sa propriété Text (comme son nom l’indique).
[Ajout 02-05-20 09:15]
Je l’avais indiqué : le code ci-dessus s’appuie sur les noms par défaut. J’ai indiqué qu’il fallait renommer ce qui devait l’être en fonction des noms figurant dans ton document… noms que tu es seul à pouvoir connaître.
Je te conseille d’afficher la barre d’outils Ébauche de formulaire
puis dans celle-ci, de cliquer pour afficher le navigateur de formulaire. Ce dernier te donnera les noms de tous tes formulaires & contrôles :
Cordialement
Voilà le message que j’ai quand j’arrive sur la ligne qui calcule oForm: Erreur d’exécution BASIC. Une exception s’est produite : Type: com.sun.star.container.NoSuchElementException Message: .
Bonjour ? Merci ? Autre précision utile du genre : message d’erreur rencontré en chargeant l’exemple joint puis en cliquant sur le bouton MajTexte ?
Bonjour.
Je parlais du code que vous m’aviez proposé. Pardon, ça me semblait évident.
J’avais trouvé ce genre d’exemple, mais avec “Form” à la place de “Standard”. Donc j’ai testé le vôtre. Mais j’ai le même message.
Merci.
J’ai trouvé, ça y est : il ne fallait écrire ni “Form”, ni “Standard” mais “Formulaire”.
Merci encore de m’avoir aidée !