Home
Home

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

  1. acLBGetColumnCount: Retourne le nombre de colonne désiré, 1 ou plus.
  2. acLBGetRowCount:  Si on utilise une entête, ajouter un au nombre réel de lignes désirées.
  3. 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 **************