logo UsualSoft   Skip Navigation Links
Accueil
Références
Formations
TutorielsExpand Tutoriels
Liens téléchargements

Contact : cgruchet@hotmail.com - Tél: 06 22 82 90 55
Microsoft Certified Professional
Cours : Visual-Basic

Les collections système

Claude Gruchet
Initiation

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

 

NB : 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.