[Résolu] Lister les contrôles d'une section de formulaire

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
gelinp
Membre OOrganisé
Membre OOrganisé
Messages : 58
Inscription : 12 mars 2011 21:40

[Résolu] Lister les contrôles d'une section de formulaire

Message par gelinp »

Bonjour,

Je cherche l'API Uno qui me permettrait de lister les contrôles d'une section depuis une macro Basic. J'ai bien trouvé le service com.sun.star.text.Textsection mais aucune méthode ne semble accéder à la liste des contrôles dans la section ...

Merci pour votre aide ....
Patrick
Dernière modification par gelinp le 12 avr. 2018 13:26, modifié 2 fois.
LibreOffice Version 7.4.6.2
Utilisation sur plusieurs systèmes d'exploitation (nomadisme sous windows et Linux)
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Comment lister les contrôles d'une section de formulaire

Message par jeanmimi »

Bonjour,
Juste pour savoir, qu'est-ce que c'est une section dans Base ?
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
gelinp
Membre OOrganisé
Membre OOrganisé
Messages : 58
Inscription : 12 mars 2011 21:40

Re: Comment lister les contrôles d'une section de formulaire

Message par gelinp »

Un formulaire Base est un document Writer. Un document Writer peut utiliser des Sections (Menu : Insérer > Section...) pour modifier la mise en page sur un passage particulier du document. Une section peut aussi recevoir un ensemble de paramétrage qui lui seront spécifiques. L'intérêt d'une section dans un formulaire est surtout de gérer la visibilité d'un ensemble de contrôles de manière dynamique en fonction de certaines valeurs de l'enregistrement courant ou pour gérer un formulaire complexe avec des onglets. Pour ce dernier cas, on ajoute quelques boutons pour servir d'onglet en haut du formulaire et en fonction du bouton activé on affiche de manière exclusive un sous ensemble des sections du formulaire.

Mais je rencontre un problème, car lorsque j'affiche une section, il arrive que les contrôles contenus à l'intérieur ne soient pas rafraichies, et donc ils restent invisibles. J'ai donc besoin de parcourir l'ensemble des contrôle contenus dans la section affichée pour forcer leur propriété de visibilité. De même pour les sections cachées, certains contrôles restent malgré tout visibles...

Ci-dessous un extrait de code pour basculer On/Off la propriété visible d'une section :

Code : Tout sélectionner

	
If not (oUnoSection.IsVisible EQV etat) Then 
	oUnoSection.IsVisible = etat
EndIf
J'ai essayé de résoudre ce problème de deux façons :
  • Avec plusieurs formes d'encrage des contrôles : paragraphe, au caractère, comme caractère, etc. Mais cela ne change pas vraiment, il faut forcer leur visibilité individuellement. Sinon peut être commandé seulement un rafraichissement ...
  • En utilisant le paramètre de masquage sous condition (Menu : Format > Section) en utilisant une variable globale pointée dans ma condition, laquelle était modifiée par mon programme. Mais le résultat n'était pas probant, je rencontrais le même problème avec les contrôles mais aussi avec les sections ... Peut être un problème d'actualisation de la formule "sous condition" avec les variables globales modifiées par le programme ...
Pour gagner du temps j'appelle oUnoSection.IsVisible = etat seulement si l'état est différent, sinon le rafraichissement est déclenché même pour une valeur identique (isvisible = etat) et cela fait perdre beaucoup de temps...

Patrick
LibreOffice Version 7.4.6.2
Utilisation sur plusieurs systèmes d'exploitation (nomadisme sous windows et Linux)
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

Re: Lister les contrôles d'une section de formulaire

Message par Bidouille »

gelinp a écrit :Je cherche l'API Uno
Vous devriez plutôt chercher à lire le bandeau rouge en haut des pages.
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: Lister les contrôles d'une section de formulaire

Message par Piaf »

Bonjour
gelinp a écrit :mais aucune méthode ne semble accéder à la liste des contrôles dans la section ...
Cest faisable
Ctrl.png
Mais comme précisé par Bidouille tu devrais poser ta question dans la section Macros et API avec la balise [Base].
En l'absence de fichier, j'ai utilisé la base du tutoriel [Base] Simuler un formulaire à onglets.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
gelinp
Membre OOrganisé
Membre OOrganisé
Messages : 58
Inscription : 12 mars 2011 21:40

Re: Lister les contrôles d'une section de formulaire

Message par gelinp »

... et donc suite du fil dans la section Macros et API ... Bien que déplacer un fil de la section Base vers une section Macro en ajoutant la balise [Base]me laisse perplexe ... Pourquoi obligé l'usage de balises puisque les mêmes dénominations existent en sections ? Une balise pour catégoriser une section : OK, mais une balise en concurrence avec les sections ...
LibreOffice Version 7.4.6.2
Utilisation sur plusieurs systèmes d'exploitation (nomadisme sous windows et Linux)
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 3929
Inscription : 06 oct. 2008 10:03

Re: Lister les contrôles d'une section de formulaire

Message par Oukcha »

gelinp a écrit :Pourquoi obligé l'usage de balises puisque les mêmes dénominations existent en sections ?
Justement, dans cette section dédiée à Base, la balise serait redondante, donc les fil de cette section ne comportent pas de telles balises ; en revanche, la section Macro accueillant des fils dédiés à de nombreux modules oblige à un balise rigoureux.

Ainsi, une recherche en section macro avec les termes base +lister +contrôles renvoie 7 résultats comprenant notamment votre nouveau fil, alors qu'une recherche sur les termes lister contrôles en renvoie 18. Selon le type de recherche, la balise permet souvent de diviser les résultats pertinents par 10.

Le présent fil ayant reçu une réponse satisfaisante permettant de le clôturer, merci d'y apposer la balise Image[Résolu] (Comment faire)
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Répondre