Bonjour,
J’aimerai pouvoir changer la couleur du background de l’application (preview) de certains rapports, sans passer par option/couleur de l’interface,
Je joint une petite base dans laquelle une routine basic “met en page” le preview du rapport.
Pensez vous qu’il soit possible de modifier la couleur du fond de l’application (writer) à l’aide de l’API ?
Merci pour votre réponse.
TestRapport.odb (13.9 KB)
Je renvoie une base test avec la macro d’ouverture du rapport.
L’instruction oRpt.CurrentController.Frame.ContainerWindow.setBackround(0) ne "fonctionne " pas, du moins chez moi sous Linux Ubuntu, ainsi que le positionnement de la fenêtre qui lui fonctionne sous windows (mais ça c’est déjà un bug signalé chez bugzilla)
TestRapport.odb (14.1 KB)
Bonjour, Editer le rapport ; puis faire format page ; changer la couleur de fond; enregistrer puis fermer . relancer la macro !
Merci pierrelouis1… mais ce n’est pas la page dont je veux changer le fond ;O)
C’est le fond de l’APPLICATION, en l’occurrence writer.
S’il n’y a pas d’entrée dans les préférences où l’on configure les couleurs des différents modules de LO, la couleur de fond de l’application ReportBuilder ne sera pas configurable.
Report Builder (écrit en Java) n’est pas une application du module Writer, mais il produit des rapports qui s’enregistrent au format ODT.
L’ancien report builder, qui était écrit en C++, et qui est présent dans certaines versions distrib Linux lorsque le paquet reportbuilder-bin est absent, ne permettait pas de changer les couleurs de son interface graphique non plus
Merci iplaw67.
Ce n’est pas le “background” de report builder que je voudrais modifier, c’est le background de writer qui d’après moi est le “container” du report en affichage. Si je modifie “manuellement” la couleur dans outils>options>libre office> couleurs de l’interface> arrière plan de l’application, j’obtiens bien le résultat espéré. Donc je pensais que
ThisComponent.CurrentController.Frame.ContainerWindow.setBackground(clng("&H00FFFF80"))
permettrait de changer le background de Writer puisque c’est bien Writer qui affiche le Report.
Si on suit l’évolution de la propriété ContainerWindow.AccessibleContext.Background elle est bien modifiée ! Mais ne s “applique” pas au “container”
Bon peut-être que je ne modifie pas la propriété au bon moment.
Je n’ai pas trouvé le moyen d’accéder en basic au panneau Outil>Options>LibreOffice>Couleur de l’inreface>Arrière-plan de l’application.
En tous cas merci pour ta réponse.
Merci pour ton retour, et je comprends mieux ta demande. Je suis pas certain que tu puisse changer l’arrière-plan du module Writer à la volée sans passer par une modification du fichier de configuration XCU correspondant, puisque en principe, c’est ce dernier qui est lu lors de l’instanciation du module Writer.
Peut-être est-ce possible de créer un fichier XCU temporaire et de s’en servir au moment du chargement du rapport, mais il faudrait alors regarder dans la partie de l’API qui gère ces manipulations.
Merci @iplaw67
Je comprend bien ta réponse, et je reste bien “dépité” par la complexité de la chose. Donc je vais abandonner le paramétrage “ergonomique” de mon application Base.
Encore merci pour ton travail.
Je ne pense pas mettre ta réponse en mode “solution”.
Les éventuels lecteurs se feront une idée eux mêmes.
Bien à toi.
Peut-être une piste ici:
ou ici:
Merci @iplaw67
Je ne suis pas un kador du xml
Pour moi le OOo Registry Document Format c’est vraiment trop compliqué et dans
Je n’ai rien trouvé qui puisse “modifier” la couleur du background de Writer
et comme tu le dis judicieusement il faudrait savoir comment l’API le gèrerai.
En farfouillant à droite et à gauche dans l’API j’avais trouvé comment accéder par exemple aux chemins des templates, images…avec (CreateUnoService(“com.sun.star.util.PathSettings”). et je pensais que j’aurais pu d’une certaine manière accéder aux Outils/Option/LibreOffice/Couleurs de l’interface et modifier le paramètre “Arrière plan de l’application”, quitte à passer par un jeu de “couleurs personnalisées” mais je n’ai rien trouvé comme UnoService.
Il vous reste donc à ouvrir une demande d’amélioration dans Bugzilla.
Merci @valioud mais quand je vois tous les bugs,et dysfonctionnements (d’une version à l’autre) à traiter par Bugzilla, ma requête me paraît bien dérisoire d’autant plus qu’une “amélioration” peut également entraîner des bugs.
Merci quand même d’avoir pris le temps d’examiner mon “problème”.
A ne rien demander, on obtient rien au final.