[Base] Simuler un formulaire à onglets

Venez découvrir tous les tutoriels, modèles et autres foires aux questions afin de maîtriser rapidement votre suite bureautique favorite.

Modérateur: Vilains modOOs

Règles du forum
Aucune question dans cette section !
Cette section est faite pour présenter les tutoriels. Si vous avez une question sur l'installation, le fonctionnement ou l'utilisation, vous devez poster dans la section du module où se produit le problème.

[Base] Simuler un formulaire à onglets

Messagepar Pierre-Yves Samyn » 27 Juil 2010 15:11

Bonjour

Ce tutoriel fait suite à ce fil https://forum.openoffice.org/fr/forum/v ... =9&t=23687

L'objectif est de contourner l'absence de contrôle "à onglets" dans les formulaires, en particulier pour OOoBase (mais la technique présentée ici n'est pas limitée à ce module).

Un formulaire est un document (cf. writer). Un document peut comprendre des sections et les sections peuvent être masquées ou non.

La solution à notre problème consiste à ancrer les contrôles dans différentes sections. Les sections peuvent être affichées / masquées... ainsi que leur contenu... Nous aurons donc une section par "onglet".

Les onglets permettant de changer de page seront de simples boutons qui, bien entendu, ne seront pas dans une section susceptible d'être masquée.

Exemple :

Sections.png


Dans cet exemple nous gèrons deux onglets : l'un affichant le formulaire Client et l'autre les factures.
Les boutons sont ancrés aux premiers paragraphes.
En dessous sont dessinés les contrôles "Factures" (un contrôle Table et une zone de texte), ainsi qu'un rectangle gris qui nous servira de "fond".
En dessous sont dessinés les contrôles "Client" (zones de texte ainsi qu'un rectangle de fond).

Nous avons deux sections dans le document. Pour cela, insérer autant de paragraphes que nécessaire dans le document, ancrer les contrôles aux paragraphes ad hoc (et les repositionner car le changement d'ancrage les fera sans doute bouger).

Dans la copie d'écran le rectange "de fond" des factures est sélectionné. On voit qu'il est ancré à un paragraphe adjacent.

Pour insérer les sections, sélectionner les paragraphes concernés puis Insertion > Section.
Par défaut OOo nomme les sections Section1, Section2, etc. Par commodité, et pour alléger le code les sections insérées dans le formulaire seront nommées de la même manière que les boutons provoquant leur affichage. Ici : Factures et Client.

Une seule procédure est nécessaire qui sera associée aux 2 boutons

Code : Tout sélectionner   AgrandirRéduire
sub PysAfficher(PysEvent)
dim i as integer

for i = 0 to thiscomponent.TextSections.count - 1
   if thiscomponent.TextSections(i).name = PysEvent.Source.Model.Name then
      thiscomponent.TextSections(i).IsVisible = true
   else   
      thiscomponent.TextSections(i).IsVisible = false
      PysEvent.Source.Model.parent.getByName(thiscomponent.TextSections(i).name).state = 0
   end if
next i

end sub


La procédure "boucle" sur toutes les sections du document (le même code peut donc servir quel que soit le nombre d'onglets).
Pour chaque section, on vérifie que le nom de la section correspond à celui du bouton ayant lancé la procédure. Si oui, on rend visible la section, sinon, on masque la section.

Pour agrémenter la présentation, nous définissons les boutons de type Basculer : Oui

Bouton.png
Bouton.png (3.68 Kio) Consulté 9270 fois


Ainsi, lorsqu'une section (onglet) est affichée, le bouton est enfoncé.
Le programme "relève" les boutons correspondant aux sections masquées.
Pièces jointes
masquerSection.odb
(45.19 Kio) Téléchargé 1221 fois
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Retour vers Tutoriels

Qui est en ligne ?

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