J'expérimente le masquage des barres d'outils à l'ouverture de formulaires. Le sujet est déjà largement traité sur le forum.
viewtopic.php?t=27370
viewtopic.php?t=12607
L'exemple de la macro suivante (simple et radicale) illustre l'objectif
Code : Tout sélectionner
Sub Masque BarreOutils()
doc = Stardesktop.getCurrentComponent()
frame = doc.CurrentController.Frame
lmgr = frame.LayoutManager
lmgr.setVisible(False)
End Sub
Les deux macros attribuées aux événements respectifs "ouvrir" et "fermer" le document (Outils > Personnaliser...) font tout à fait leur travail.
Cependant, l'ouverture du formulaire en mode "ébauche"/"édition" déclenche également la macro qui fait donc parfaitement ce pour quoi elle est faite et supprime les barres d'outils qui pourtant, dans ce contexte, sont tout à fait utiles.

Je voudrais améliorer la macro afin de contrôler le déclenchement de la méthode .setVisible() en fonction de l'état du formulaire: mode "ébauche"/"édition" ou mode "saisie de données".
Je cherche donc a récupérer une info sur l'état ("ébauche" ou "saisie") du formulaire ouvert. Mais je ne parviens pas à trouver de solution.
La piste que j'ai suivi pour l'instant tourne autour de ce genre de macro :
Code : Tout sélectionner
Sub ActivModeEbauche 'remplacer le chemin "C:\...file.ods" par un chemin et un fichier valide
Dim Dispatcher As Object : Let Dispatcher = CreateUNOService ("com.sun.star.frame.DispatchHelper")
Dispatcher.ExecuteDispatch (StarDesktop.loadComponentFromURL (convertToURL ("C:\...file.ods"), "_DefaultFrame", 0,_ array()).CurrentController.Frame,".uno:SwitchControlDesignMode", 0, Array())
End Sub
Et là je me noie dans les méandres de l'API.
L'objet Frame n'est peut être pas le bon objet pour interroger l'état du formulaire ?
Et si oui, existe-t'il une méthode permettant de récupérer cette info ?
Quelqu'un aurait il une bouée ?
Merci d'avance pour vos conseils.