-- Soumis par Dev Ashish---
Fonction de rappel pour une zone de liste à plusieurs colonnes
Les zones de liste d'Access (List Boxes) ont toujours supportées les fonctions de rappel (callback) comme spécification à leur propriété RowSourceType. Une fonction de rappel vous donne plus de latitude sur la présentation (la fonction de rappel est invoquée pour chaque colonne) et permet également de circonvenir aus limitations de liste de valeurs. Pour plus d'information sur les fonctions de rappel, se reférer au fichier d'aide, article Miscellaneous Constants.
Remplir une zone de liste à multiples colonnes est légèrement différent du code présenté dans le fichier d'aide. Nus utilisons encore une fonction de rappel, mais y ajoutons quelques détails:
- acLBGetColumnCount: Retourne le nombre de colonne désiré, 1 ou plus.
- acLBGetRowCount: Si on utilise une entête, ajouter un au nombre réel de lignes désirées.
- acLBGetColumnWidth: Retourne la largeur, en twips, de chaque colonne.
Dans tous les cas, il faut considérer la colonne et la ligne dont Access s'enquiert. Access vous fourni ces informations au travers des arguments varRow et varCol. Pour un cas où il y a trois colonnes, vous constatez qu'on doit se référer à ces paramètres pour bien identifier la valeur requise à être retourner.
' ************* Code Start ************** Function fListFill(ctl As Control, varID As Variant, varRow As Variant, _ varCol As Variant, varCode As Variant) As Variant 'Fonction de Rappel (Callback) pour zone de liste à plusieurs colonnes ' Dim varRet As Variant Const TWIPS = 1440 Const COLUMN_COUNT = 3 On Error GoTo ErrHandler Select Case varCode Case acLBInitialize varRet = True Case acLBOpen varRet = Timer Case acLBGetRowCount varRet = UBound(atResults) Case acLBGetColumnWidth 'La largeur de chaque colonne 'en TWIPS, conversion faite à l'aide de 'unités de mesure VBA. Select Case varCol Case 0: varRet = 2.8 * TWIPS Case 1: varRet = 0.5 * TWIPS Case 2: varRet = 0.5 * TWIPS End Select Case acLBGetColumnCount varRet = COLUMN_COUNT Case acLBGetValue 'Retourne la valeur à passer selon la colonne 'qui est à remplir Select Case varCol Case 0: ' La première ligne contient l'entête If varRow = 0 Then varRet = "Path" Else varRet = atResults(varRow).strFullPath End If Case 1: If varRow = 0 Then varRet = "Size" Else varRet = atResults(varRow).lngSize End If Case 2: If varRow = 0 Then varRet = "Type" Else varRet = atResults(varRow).strTypeName End If End Select End Select fListFill = varRet ExitHere: Exit Function ErrHandler: Resume ExitHere End Function ' ************* Code End **************