Le grenier Access

Aller au contenu | Aller au menu | Aller à la recherche

Formulaires - Onglets

Fil des billets - Fil des commentaires

mercredi 1 octobre 2008

Masquer ou afficher une page d'un contrôle Onglet

Comment masquer ou afficher une page précise d'un contrôle Onglet ?

Solution

  1. Sur votre formulaire ouvert en mode Création, construisez - sans assistant - un bouton de commande.
  2. Faites apparaître les propriétés de ce bouton, et nommez-le par exemple btnPage.
  3. Si nécessaire, faites apparaître aussi les propriétés du contrôle Onglet, et nommez-le tabTest.
  4. Programmez l'événement Sur clic du bouton de commande en tapant :
Forms![Nom du formulaire]!tabTest.Pages(0).Visible = False

Quelques précisions

  • Les pages du contrôle Onglet sont numérotées de 0 à n-1. Ceci a donc pour effet de masquer la première page. Remplacez bien sûr False par True pour faire apparaître une page.
  • Vous pouvez également remplacer l'indice numérique par le nom de la page (propriété Nom et non propriété Légende). Par exemple :
Forms![Nom du formulaire]!tabTest.Pages("Coordonnées").Visible = True
  • Autre variante : les pages peuvent être identifiées comme objet à part entière. On peut donc encore écrire :
Forms![Nom du formulaire]![Coordonnées].Visible = True
  • Si les lignes de code ci-dessus agissent sur des onglets du formulaire dans lequel elles sont tapées (euh... c'est clair, ça ?), vous pouvez simplifier en remplaçant tous les Forms![Nom du formulaire]! par Me. Par exemple :
Me.tabTest.Pages("Coordonnées").Visible = True

mardi 20 novembre 2007

Naviguer entre onglets au clavier

Comment naviguer au clavier entre les différentes pages d'un contrôle Onglet ?

Mise en place

La solution consiste à associer chaque page à un raccourci clavier. Voici comment faire :

  1. Ouvrez votre formulaire en mode Création.
  2. Cliquez du bouton droit sur l'une des pages (l'un des onglets), puis choisissez l'option Propriétés.
  3. Activez l'onglet Format, dans la fenêtre Propriétés.
  4. Tapez une légende (qui sera le texte affiché sur l'onglet), en tapant le signe & devant l'un des caractères de cette légende.
    Dans l'exemple ci-dessous, c'est la lettre A de Acteurs qui est précédée du & (mais vous auriez pu taper Ac&teurs, par exemple).

Résultat

Une fois le formulaire ouvert en mode "utilisateur", la combinaison &A se transforme en A souligné (et ainsi de suite pour les autres légendes, ici &Description et &Stock). L'utilisateur peut activer une page en tapant la combinaison [Alt] + la lettre soulignée (donc : [Alt] + A pour activer l'onglet Acteurs...).

dimanche 28 octobre 2007

Détecter le changement de page dans un contrôle Onglet

Je voudrais du code VB qui réagirait lorsque l'utilisateur change de page, dans un contrôle Onglet. Pour ça, j'ai programmé l'événement Sur clic du contrôle Onglet. Mais ça ne marche pas, pourquoi ?

Le contrôle Onglet et ses pages

L'événement Sur clic est un événement associé à une page, pas à la zone d'onglets complète. Il ne se produit que si on clique à l'intérieur de la page, et pas lorsqu'on change d'onglet. Ceci est normal :-)

Ce qu'il vous faut en réalité est l'événement Sur changement du contrôle Onglet complet. Vous l'obtenez en cliquant sur le contrôle Onglet et en vérifiant que c'est bien le pourtour de l'objet qui est sélectionné, pas l'intérieur d'une page. D'ailleurs, la fenêtre des propriétés doit mentionner "Contrôle Onglet" et non pas "Page".

Identifier la page cliquée

Mais si l'événement Sur changement n'est plus associé à une page, comment savoir quelle page a été cliquée ?

L'objet Onglet a une propriété Value qui donne tout simplement le numéro de la page active (la 1ère page étant numérotée 0, histoire de...). Essayez donc l'événement qui suit :

Private Sub CtlTab0_Change()
  MsgBox "Changement de page : " & CtlTab0.Value
End Sub

A chaque changement de page, une boîte vous donne maintenant le numéro de la page active. A vous d'ajouter le code nécessaire pour réagir à ce changement de page...

Mettre en place un contrôle Onglet

Comment réorganiser les objets d'un formulaire dans un contrôle Onglet ?

Le contrôle Onglet (ou "boîte à onglets") est pratique pour organiser les informations d'un formulaire en pages (vous connaissez la boîte de dialogue Format / Cellule, dans Excel, par exemple). Il y a juste quelques petites choses à savoir pour l'utiliser de manière correcte...

Ce qu'il ne faut pas faire

Si vous souhaitez transférer des objets existants dans un onglet, il est tentant d'aller au plus simple, c'est-à-dire :

  1. Ouvrir le formulaire en mode Création.
  2. Y placer un contrôle Onglet.
  3. Glisser à la souris les objets sur l'un des onglets.
... mais en faisant ça, vous "posez" seulement vos objets par-dessus le contrôle Onglet, vous ne les "rangez" pas dans une page précise. Le symptôme : cliquez sur chaque page du contrôle Onglet, vous constatez que les objets restent toujours à l'écran. Pas bon :-)

Ce qu'il faut faire

L'astuce consiste à utiliser le Couper/Coller :

  1. Ouvrez votre formulaire en mode Création.
  2. Cliquez sur l'icône Contrôle Onglet de la boîte à outils.
  3. Cliquez sur le formulaire pour placer la "boîte à onglets".
  4. Sélectionnez les objets qui doivent être rangés dans une page de la boîte.
  5. Cliquez sur l'icône Couper (ou utilisez n'importe quel autre équivalent !).
  6. Sélectionnez la page d'arrivée, sur le contrôle Onglet (en cliquant sur un onglet, pas sur l'intérieur de la page).
  7. Cliquez sur l'icône Coller.
Si ce n'est pas clair, cliquez sur le screencast associé à ce billet pour voir une vidéo de démo !