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


Comment simuler les tableaux de contrôles ?
 
   


Avec Visual Basic, le grand frère de eVB, il existe une fonctionalité très pratique qui permet de créer des tableaux de contrôles. Autrement dit, il est possible de créer plusieurs contrôles (de même nature) avec le même nom, chaque contrôle étant différencié des autres par son index. Ainsi, chaque élément du tableau de contrôle partage avec tous les autres éléments tout le code des événements, un paramètre "Index" en plus permet de savoir, au sein du code, quel élément du tableau de contrôle est à l'origine de l'événement.

En eVB, les tableaux de contrôles ne sont pas supportés... zut, zut et zut !

Il exite un moyen de simuler un tableau de contrôles avec eVB, en utilisant la possibilité d'accéder à un contrôle précis d'une fenêtre par l'intermédiaire de la collection des contrôles gérée par chaque feuille eVB. Cette collection s'appelle "Controls" :

Rem Nous allons lister le nom de tous les contrôles de Form1
Dim wControl As Control
Dim i As Integer

For i=0 To (Form1.Controls.Count)
Set wControl = Form1.Controls(i)
MsgBox wControl.Name
Next

Si nous avons un bouton de commande "BOU_Terminer" sur la feuille, vous pouvez le rendre invisible en tapant

Rem Rendre le bouton invisible
BOU_Terminer.Visible = False

ou encore

Rem Rendre là aussi le bouton invisible
Controls("BOU_Terminer").Visible = False

pratique non ? Avec en poche cette fonctionnalité, il est assez simple de simuler un tableau de contrôle.

Imaginons que nous ayons 3 ListBox (List1, List2, List3) à vider (méthode Clear). La méthode classique consiste à exécuter la méthode Clear 3 fois :

Rem On vide les 3 listes avec la méthode classique
Call List1.Clear
Call List2.Clear
Call List3.Clear

Ou nous pouvons utiliser la simulation de tableau de contrôles :

Rem On vide les 3 listes avec la nouvelle méthode
Dim i As Integer
For i=1 To 3
Call Form1.Controls("List" & i).Clear
Next

Si vous voulez que l'IDE de eVB vous aide pendant la saisie, il faut lui indiquer le type du contrôle sur lequel vous agissez :

Dim wList As ListBox
Dim i As Integer
For i=1 To 3
Set wList = Form1.Controls("List" & i)
Call wList.Clear
Next

Le problème avec cette simulation, c'est que les événements ne sont pas regroupés et que chaque contrôle reçoit sous son propre nom tous les événements :

Avec VB, le tableau de contrôles List(1), List(2), List(3) génère pour l'événement "Click" une seule procédure :

Sub List_Click(Index as Integer)

Où "Index" nous indique quel élément est à l'origine de l'événement.

Avec eVB, et malgré notre simulation, List1, List2, List3 génèreront pour le même événement "Click" 3 procédure différentes :

Sub List1_Click()
Sub List2_Click()
Sub List3_Click()

Même si cette simulation utilisant la collection "Controls" ne résoud pas tous les problèmes, elle permet de mettre à jour très rapidement toute une série de contrôles, ce n'est déjà pas si mal.

Si vous voulez des exemples d'utilisation de cette technique, je vous conseille de consulter les sources eVB des programmes Memory, PocketPendu, ou encore MemoMon.

 

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.