Notion de collection système
Les collections sont des tableaux d’objets mis à
votre disposition par Visual-basic qui facilitent le développement et l’accès
aux caractéristiques des objets. Tous les Objets DAO (bibliothèque de types
pour Ms-Access) sont contenus dans des collections que le développeur peut
balayer à la recherche d’informations (WorkSpaces, DataBases, TableDefs,
RecordSets ou Fields).
Nous
verrons aussi que le développeur VB peut, lui aussi avoir ses collections. Une
collection est un objet standard de VB6 :
|
Private
mcolCls as New Collection |
Les dernières versions de Visual-basic nous ont
apporté une nouvelle façon d'explorer une collection : la boucle For each
xxx ... ... Next xxx. (Voir exemple ci-dessous).
Cette nouvelle syntaxe remplace la classique boucle
For ... Next utilisée avec un entier (integer) qui représente le numéro
d'ordre de chaque élément.
TOUTES les collections comportent une propriété
"Count" qui représente le nombre d'éléments présents dans la
collection à un instant donné. Par exemple le nombre de formulaires
ouverts à un moment donné s'obtient par la lecture de la propriété :
Forms.Count
Les collections système commencent avec l'élément numéro zéro.
(ex. : Forms(0) est le premier objet formulaire ouvert et Forms(0).name est son
nom). Le dernier élément porte donc le numéro : Collection.count -1
(ex. : Forms(Forms.count - 1) est le dernier objet formulaire ouvert.
Une collection porte le nom des objets qu'elle contient avec un
"s" terminal. La collection des objets de type Form s'appelle Forms,
la collection des objets de type Control s'appelle Controls.
|
L’une des collections système les plus utilisées
est la collection « Forms » qui contient les objets « Form »
ouverts. Cela permet très facilement d’écrire une fonction pour savoir si un
formulaire est ouvert ou non : on balaye la collection et on teste le nom
des différents objets Form trouvés. Si le nom de l’objet est identique au
nom recherché c’et que le formulaire est ouvert … c’est aussi simple que
ça ! !
Notez bien qu'une utilisation judicieuse des
collections vous permet d'écrire facilement un code générique aisément réutilisable dans le cadre d'un autre module ou d'une autre
application.
Voici le code de la fonction « EstOuvert » qui
figurera en bonne place dans une bibliothèque d’utilitaires généraux
utilisables dans toutes vos applications (voir classe UsualUtils).
|
'-------------------------------------------------------------
'Public Function EstOuvert(ByVal
FName$)
As Boolean
'-------------------------------------------------------------
'$ Teste si un form dont le nom est passé en argument
'$ est ouvert ou non (retourne Vrai/Faux)
'--------------------------------------------------------------
Dim lfrm As Form
EstOuvert = False
For each lfrm in Forms
If lfrm.Name = FName
Then
'EstOuvert = (lfrm.Visible) Autre syntaxe possible (pour ouvert ET visible)
EstOuvert = True
Exit For
End If
Next lfrm
End Function
|
Vous pouvez utiliser les différentes fonctions de cette classe en les recopiant dans
un "module de base" ou "module" (extension .bas).
Télécharger UsualUtils.zip (3 Ko)
Un appel à cette fonction se fera comme suit :
|
If EstOuvert( "MonFormulaire") then
Instructions
Instructions
End if
|
On dit que l'on appelle la fonction Booléenne "EstOuvert"
en lui passant en argument le nom du formulaire dont on veut tester la
présence en mémoire.