[Résolu][Writer] créer un signet au niveau du curseur

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
le vent de l'est
Fraîchement OOthentifié
Messages : 2
Inscription : 28 sept. 2017 13:02

[Résolu][Writer] créer un signet au niveau du curseur

Message par le vent de l'est »

Bonjour,

J'aimerais créer un signet "place1" à l'endroit où se trouve le curseur dans ma macro :

En fait pour être plus précis, ce que je veux faire et que j ai fait c'est :
- lorsque je clique sur un bouton radio : du texte apparait à l'endroit du signet "place1"
- lorsque ce bouton est décliqué, le texte disparait (caractère par caractère ce qui n'est pas super, si vous avez un méthode meilleur que de mettre 150 dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array()) d'affilé; se serait cool.
jusque là ça va....grâce à ce forum !
MAIS lorsque je reclique sur le bouton, plus rien ne marche, en fait mon signet a disparus. Donc je me suis "créés en un nouveau"

Pourriez-vous m'aider ?
Libre office 5.3.6 sous windows XP
Avatar de l’utilisateur
MrPropre
MOOdérateur
MOOdérateur
Messages : 1139
Inscription : 01 oct. 2008 16:54

Re: [writer] créer un signet dans une macro

Message par MrPropre »

Bonjour,

Titre modifié : Le balisage doit bien sûr être correctement orthographié (première lettre en majuscule puis le reste en minuscules).
Macro est inutile dans la section consacrée aux macros.
Dans votre signature, il y a écrit :Openoffice 3.3 sous windows XP
Veuillez noter que la version utilisée est obsolète et n'est plus maintenue.
Commencez par vous mettre à jour : https://forum.openoffice.org/fr/forum/v ... =2&t=49867
Puis corrigez l'information dans votre signature.

Si le problème persiste, joignez le document permettant de reproduire ce que vous décrivez :
Comment joindre un fichier au format ODF
Pensez également à dépersonnaliser le fichier joint.

***
Nettoyez votre PC du piratage, utilisez des logiciels libres à chaque lavage.
Une seule dose de OpenOffice suffit à éliminer durablement toute trace de MS-Office.
le vent de l'est
Fraîchement OOthentifié
Messages : 2
Inscription : 28 sept. 2017 13:02

Re: [Writer] créer un signet au niveau du curseur

Message par le vent de l'est »

Bonjour,

Voici mon fichier.
Il y a deux macros : une qui créer du texte et l'autre qui l'efface.

les deux sont sur le bouton B.

Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 5.3.6 sous windows XP
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer] créer un signet au niveau du curseur

Message par Piaf »

Bonjour
le vent de l'est a écrit :Il y a deux macros : une qui créer du texte et l'autre qui l'efface.
les deux sont sur le bouton B.
Elles sont affectées au bouton B, mais ne sont pas dans le document.
Macro.png
De plus je ne suis pas certain que les événements réception et perte du focus soient les meilleurs pour réaliser ce que tu veux faire.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
jf.l
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 474
Inscription : 18 mai 2010 18:49

Re: [Writer] créer un signet au niveau du curseur

Message par jf.l »

Bonjour Vent de l'est.
Si vous utilisez les signets "Pense bête" il n'y en a que trois dans un document. Chaque nouveau signet effacera le plus ancien.
Un style de paragraphe ou les annotations pourraient être plus faciles à gérer. On peut en mettre plein, plein, plein... des tonnes.
Cordialement,
JF.L
Linux Mint 21.1 x64 + LibO 7.3.1 / LibO 7.1.1 + W10 x64
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Writer] créer un signet au niveau du curseur

Message par Hubert Lambert »

Bonjour,

Ci-joint une exemple. L'astuce consiste à créer un signet sur une portion de texte (immédiatement écrasée) plutôt que sur la position d'un curseur : dans le premier cas, le signet sera persistant quel qu'en soit le contenu; dans le second cas, le signet sera effacé dès que le contenu est une chaîne vide.
La macro affectée à l'événement "statut modifié" de chaque bouton :

Code : Tout sélectionner

sub btn_radio(event)
    doc = thiscomponent
    bouton = event.Source.Model
    reperes = doc.Bookmarks
    repere = bouton.GroupName
    if not reperes.hasByName(repere) then
        insere_signet(doc, repere)
    end if
    signet = reperes.getByName(repere)
    signet.Anchor.setString(bouton.Tag)
end sub
La macro pour l'insertion du signet :

Code : Tout sélectionner

sub insere_signet(doc, nom)
    bookmark = doc.createInstance("com.sun.star.text.Bookmark")
    bookmark.Name = nom
    vc = doc.CurrentController.ViewCursor
    vc.setString(nom)
    doc.Text.insertTextContent(vc, bookmark, True)
end sub
Le fichier joint ne contient aucun signet. Le nom du signet est attribué en fonction du nom de groupe des boutons radio.
Reste me semble-t-il à gérer le point d'insertion du signet, la position du curseur visible étant très aléatoire...
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)