|
Forms: Fonction de rappel pour une zone de liste à plusieurs colonnes |
Author(s) 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 aux limitations de nombre maximal de caractères dans une liste de valeurs. Pour plus d'informations, voir le fichier d'aide sous
Miscallaneous Constants.
Remplir une zone de liste à multiples colonnes est
légèrement différent du code présenté dans le fichier d'aide. Nous
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 à être retournée par notre fonction.
Function fListFill(ctl As Control, varID As Variant, varRow As Variant, _
varCol As Variant, varCode As Variant) As Variant
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
varRet = True
Case acLBOpen
varRet = Timer
Case acLBGetRowCount
varRet = UBound(atResults)
Case acLBGetColumnWidth
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
Select Case varCol
Case 0:
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
|