[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.

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

Messagepar gelinp » 08 Mars 2018 18:44

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 édition par gelinp le 12 Avr 2018 12:26, édité 2 fois.
LibreOffice 3.5.7.2 Windows XP
gelinp
Membre lOOyal
Membre lOOyal
 
Message(s) : 28
Inscrit le : 12 Mars 2011 21:40

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

Messagepar jeanmimi » 08 Mars 2018 19:49

Bonjour,
Juste pour savoir, qu'est-ce que c'est une section dans Base ?
LibreOffice Version: 6.0.4.2 (x64) (10 mai 2018)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14364
Inscrit le : 03 Mars 2006 17:02
Localisation : Niort et sa Venise verte

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

Messagepar gelinp » 09 Mars 2018 08:47

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   AgrandirRéduire
   
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 3.5.7.2 Windows XP
gelinp
Membre lOOyal
Membre lOOyal
 
Message(s) : 28
Inscrit le : 12 Mars 2011 21:40

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

Messagepar Bidouille » 09 Mars 2018 09:44

gelinp a écrit:Je cherche l'API Uno

Vous devriez plutôt chercher à lire le bandeau rouge en haut des pages.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 9665
Inscrit le : 08 Nov 2005 17:23
Localisation : Brest, France

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

Messagepar Piaf » 09 Mars 2018 14:35

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: 5.4.7 et Apache OpenOffice 4.1.5 Sur Xubuntu 16.04
Piaf
GourOOu
GourOOu
 
Message(s) : 5328
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

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

Messagepar gelinp » 10 Mars 2018 08:18

... 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 3.5.7.2 Windows XP
gelinp
Membre lOOyal
Membre lOOyal
 
Message(s) : 28
Inscrit le : 12 Mars 2011 21:40

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

Messagepar Oukcha » 10 Mars 2018 16:48

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)
                                        
:arrow: A lire avant tout ! Image
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
 
Message(s) : 2855
Inscrit le : 06 Oct 2008 09:03


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité