Le premier site francophone dédié au développement Pocket PC


Le contrôle TabStrip (partie 2)
t


Partie 1
Partie 2

 

Optimiser le placement des frames

Si on utilise simplement les informations de placement fournies par le TabStrip (voir partie 1), nous nous retrouvons avec une bordure autour de notre frame qui n'est pas très sympa. Pour éviter celà il suffit de modifier très légèrement la manière de placer le Frame :

Rem wFrame est le Frame à placer correctement au dessus du TabStrip
wFrame.Left = TabStrip1.ClientLeft - ScaleX(2, vbPixels, vbTwips)
wFrame.Top = TabStrip1.ClientTop - ScaleX(2, vbPixels, vbTwips)
wFrame.Width = TabStrip1.ClientWidth + ScaleX(4, vbPixels, vbTwips)
wFrame.Height = TabStrip1.ClientHeight + ScaleX(4, vbPixels, vbTwips)


Sélectionner par programme un onglet particulier

Il est possible par programme d'effectuer la même opération que lorsque l'utilisateur clique sur un onglet et le sélectionne. Pour effectuer cette opération il suffit d'indiquer au contrôle TabStrip que l'un des ses onglets (tab) est sélectionné :

Rem On sélectionne l'onglet dont la clé est $T2
TabStrip1.Tabs("$T2).Selected = True

Rem On sélectionne l'onglet dont l'index est 3
TabStrip1.Tabs(3).Selected = True

Attention tout de même à bien utiliser une clé qui existe, ou un numéro d'index dans la plage autorisée qui est comprise entre 1 et TabStrip1.Tabs.Count

Lorsque vous affectez par programme True à la propriété Selected d'un tab particulier, l'évenement Click est généré comme si l'utilisateur avait effectué l'opération lui-même avec le stylet.

Vider entièrement le TabStrip de tous ses onglets

La méthode Clear de la collection Tabs de l'objet TabStrip permet de vider cette même collection ce qui se traduit par la disparition de tous les onglets du TabStrip :

Rem On vide le TabStrip de tous ces onglets
Call TabStrip1.Tabs.Clear

Comme à l'initialisation eVB place automatiquement un onglet au TabStrip, il est plus efficace de détruire cet onglet par défaut puis d'ajouter tous ceux dont on a besoin. L'événement Load de la fenêtre est l'endroit parfait pour cette opération d'initialisation du TabStrip :

Private Sub Form_Load()
 Rem On vide totalement les onglets
 Call TabStrip1.Tabs.Clear
         
 Rem On crée 4 onglets par programme
 Call TabStrip1.Tabs.Add(, "$T1", "Tab 1", 1)
 Call TabStrip1.Tabs.Add(, "$T2", "Tab 2", 1)
 Call TabStrip1.Tabs.Add(, "$T3", "Tab 3", 1)
 Call TabStrip1.Tabs.Add(, "$T4", "Tab 4", 1)
         
 Rem Comme le premier onglet sera sélectionné automatiquement
Rem Et que dans ce cas aucun événement n'est généré
Rem On le sélectionne par programme
TabStrip1.Tabs("$T1").Selected = True End Sub

Ajouter une image à un onglet

Il est possible de placer sur chaque onglet d'un TabStrip une image. Le fonctionnement est identique à celui de la ListView. Le contrôle TabStrip utilise un contrôle ImageList pour puiser les images dont il a besoin.

Tout d'abord il faut cocher "Microsoft CE ImageList Controle 3.0" dans la liste des "Components". Cette opération ajoute à la boîte à outils eVB le contrôle "ListImage"

Vous devez ensuite placer une occurence de ce contrôle sur la même feuille que le TabStrip avec lequel il doit être lié. Pour notre exemples nous allons appeler notre contrôle ImageList "IL_Images16" (IL pour ImageList). Les images gérés par ce contrôle doivent être au format 2bp, ou bmp 16 couleurs ou bmp 256 couleurs.

Avant de charger les images dans le contrôle ImageList, il faut indiquer quelle est la longueur (width) et la hauteur (height) des images. Pour celà, les propriétés "ImageWidth" et "ImageHeight" doivent être utilisées. La méthode "Add" permet le chargement d'une image, en donnant comme paramètre le nom de fichier de cette image (ici image1.bmp)

Rem On charge les images dans le contrôle ImageList
IL_Images16.ImageHeight = 16
IL_Images16.ImageWidth = 16
Call IL_Images16.Add(App.Path & "\image1.bmp")

Il faut aussi indiquer au TabStrip qu'il doit utiliser cette ImageList :

Rem On affecte au TabStrip le contrôle ImageList qu'il doit utiliser
TabStrip1.ImageList = IL_Images16.hImageList

Il est maintenant possible dans le code de création des onglets d'y inclure l'image. Par exemple, pour l'onglet dont la clé est "$T1" on peut écrire :

Call TabStrip1.Tabs.Add(, "$T1", "Tab 1", 1)

où le dernier paramètre est l'index (on part de 1) de l'image à utiliser.

En optimisant le placement du frame et en ajoutant une image on obtient un écrant de ce type :

Conclusion de cet article

Pour créer des applications au look pro et avec un confort d'utilisation maximum il est indispensable de maitriser le contrôle TabStrip. J'espère que grâce à cet article vous saurez l'utiliser.

N'oubliez pas que les forums sont à votre disposition si vous rencontrez des problèmes avec cet article.

 

Stéphane Sibué

   
 
 
Copyright 2001-2004 - Tous droits réservés
 

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.