Le contrôle Liste d'images - CtrlImageListDate de publication : 02/12/09 , Date de mise à jour : 02/12/09
Par
Thierry GASPERMENT (arkham46.developpez.com/)
I. Préparation du contrôle
II. Propriétés
III. Méthodes
III-A. ElementAdd
III-B. ElementRemove
III-C. Refresh
III-D. Clear
III-E. SortElementsByValue
III-F. GetElementByValue
III-G. ImageListAdd
III-H. ImageListAddFromArray
III-I. ImageListAddFromPicture
III-J. ImageListExists
III-K. ImageListRemove
III-L. ImageListRemoveAll
IV. Evénements
IV-A. ActiveElementChanged
IV-B. BeforeDraw
IV-C. MouseMove
IV-D. MouseDown
IV-E. MouseUp
IV-F. MouseDblClick
IV-G. KeyDown
IV-H. AfterDrawImage
IV-I. BeforeLoadImage
V. Exemple
I. Préparation du contrôle
Pour un formulaire qui contient un sous-formulaire subFormList.
Préparation de l'objet contrôle |
Option Compare Database
Option Explicit
Private WithEvents oList As CtrlImageList
Private Sub Form_Load ()
Set oList = CreateTGLControl (CtrlImageList, Me. subFormList )
End Sub
|
II. Propriétés
La colonne Get indique si la propriété est disponible en lecture.
La colonne Set indique si la propriété est disponible en écriture.
Propriété |
Get |
Let |
Type |
Explication |
FontName |
X |
X |
String |
Nom de la police de caractères. |
FontColor |
X |
X |
Long |
Couleur de la police de caractères. |
FontSize |
X |
X |
Long |
Couleur de la police de caractères, en points. |
BackColor |
X |
X |
Long |
Couleur de fond du contrôle. |
MultipleSelection |
X |
X |
Boolean |
Définit si la sélection multiple est possible. |
MultiSelectWithoutCtrl |
X |
X |
Boolean |
Définit si la sélection multiple se fait avec ou sans appuis sur la touche Control. |
SelectionColor |
X |
X |
Long |
Couleur de surlignage des éléments sélectionnés. |
AntialisingLevel |
X |
X |
ETGLAntialiase |
Niveau de lissage des images.
LibTGLGdiplus propose plus de niveau de lissage que LibTGL32. |
FirstVisibleRow |
X |
X |
Long |
Numéro de la première ligne visible.
Utilisez ensuite Refresh pour mettre à jour l'affichage. |
LastVisibleRow |
X |
|
Long |
Numéro de la dernière ligne visible. |
ImageWidth |
X |
X |
Long |
Largeur des images en pixels. |
ImageRatio |
X |
X |
Currency |
Rapport hauteur sur largeur des images. |
ActiveElement |
X |
X |
CtrlImageListElement |
Elément actif. L'élément actif n'est pas forcément sélectionné. |
Elements |
X |
|
Collection d'objets CtrlImageListElement |
Collection d'éléments contenus dans l'arbre. |
SelectedElement |
X |
|
CtrlImageListElement |
Elément sélectionné. Renvoie le premier élément trouvé. |
MultipleSelectedElement |
X |
|
Collection d'objets CtrlImageListElement |
Collection d'éléments sélectionnés. |
ElementByPos |
X |
|
CtrlImageListElement |
Recherche un élément avec sa ligne et sa colonne. |
Menu |
X |
|
CtrlTreeMenu |
Menu à afficher sur les images. |
RaiseAfterDraw |
X |
X |
Boolean |
Mettre à Vrai pour déclencher les événements AfterDrawImage. |
LoadInBackGround |
X |
X |
Boolean |
Mettre à Vrai pour que toutes les images du dossier se chargent avant leur affichage.
A réserver pour des dossiers peu volumineux. |
Gdi |
X |
|
clGdiplus ou clGdi32 |
Objet de gestion du graphisme du contrôle. |
III. Méthodes
III-A. ElementAdd
Ajoute un élément à la liste.
Paramètre |
Type |
Explication |
pTexte |
String |
Texte affiché dans l'arbre. |
pKey |
String |
Identifiant de l'élément. Passez une chaîne vide pour générer un identifiant unique. |
III-B. ElementRemove
Retire un élément de la liste.
Paramètre |
Type |
Explication |
pKey |
String |
Identifiant de l'élément à retirer. |
III-C. Refresh
Redessine le contrôle.
III-D. Clear
Vide la liste.
Utilisez ensuite Refresh pour mettre à jour l'affichage.
III-E. SortElementsByValue
Trie les éléments par valeur.
Paramètre |
Type |
Explication |
pValueName |
String |
Identifiant de la valeur sur laquelle s'effectue le tri. |
pDescending |
Boolean |
Si Vrai, le tri est descendant, sinon il est ascendant par défaut. |
III-F. GetElementByValue
Recherche un élément par une valeur.
Paramètre |
Type |
Explication |
pValueName |
String |
Identifiant de la valeur sur laquelle s'effectue la recherche. |
pValue |
Variant |
Valeur à rechercher. |
Valeur renvoyée |
CtrlImageListElement |
Le premier élément trouvé est renvoyé. Si aucun élément n'est trouvé, la fonction renvoie Nothing |
III-G. ImageListAdd
Ajoute une image à la liste d'images du contrôle.
Paramètre |
Type |
Explication |
pKey |
String |
Identifiant de l'image. |
pFile |
String |
Chemin du fichier de l'image. |
pThumbNail |
Boolean |
Si Vrai, utilise la miniature Exif pour un affichage plus rapide. Ne fonctionne qu'avec Gdi+. |
pIcon |
ETGLIconType |
Type d'icône à charger. |
pPersistent |
String |
Si Vrai, l'image est persistante et ne sera pas supprimée par la fonction Clear. |
Valeur renvoyée |
Boolean |
Vrai si l'image a été ajoutée avec succès. |
III-H. ImageListAddFromArray
Ajoute une image à la liste d'images du contrôle.
L'image est définie par le contenu d'un tableau de byte.
Pour Gdi32, le tableau contient un bitmap tel que défini dans la propriété PictureData d'un contrôle image.
Pour Gdi+, le tableau contient une image telle qu'on peut la trouver dans un fichier (jpeg, png, ...).
Paramètre |
Type |
Explication |
pKey |
String |
Identifiant de l'image. |
pArray |
Tableau de Byte |
Contenu de l'image. |
pPersistent |
String |
Si Vrai, l'image est persistante et ne sera pas supprimée par la fonction Clear. |
Valeur renvoyée |
Boolean |
Vrai si l'image a été ajoutée avec succès. |
III-I. ImageListAddFromPicture
Ajoute une image à la liste d'images du contrôle.
L'image est définie par une image et un masque gdi32.
Paramètre |
Type |
Explication |
pKey |
String |
Identifiant de l'image. |
pPicture |
Long |
Bitmap gdi32 contenant l'image. |
pMask |
Long |
Bitmap gdi32 contenant le masque. |
pDelete |
Boolean |
Si Vrai, les bitmaps utilisés sont ensuite supprimés. |
pPersistent |
Boolean |
Si Vrai, l'image est persistante et ne sera pas supprimée par la fonction Clear. |
Valeur renvoyée |
Boolean |
Vrai si l'image a été ajoutée avec succès. |
Exemple :
Ajout d'une image à partir d'un contrôle de menu |
With Application. CommandBars (" Database " ). Controls (1 )
oList. ImageListAddFromPicture " monbouton " , . Picture , . Mask
End With
|
III-J. ImageListExists
Teste si une image existe dans la liste d'images du contrôle.
Paramètre |
Type |
Explication |
pKey |
String |
Identifiant de l'image. |
Valeur renvoyée |
Boolean |
Vrai si l'image existe. |
III-K. ImageListRemove
Retire une image de la liste d'images du contrôle.
Paramètre |
Type |
Explication |
pKey |
String |
Identifiant de l'image. |
Une erreur est levée si l'identifiant n'est pas valide (image inexistante).
III-L. ImageListRemoveAll
Retire toutes les images de la liste d'images du contrôle.
Les images qui ont été ajoutées avec le paramètre pPersistent = Vrai ne sont pas retirées.
IV. Evénements
IV-A. ActiveElementChanged
S'exécute sur changement de l'élément actif.
Paramètre |
Type |
Explication |
pElement |
CtrlImageListElement |
Elément actif. Nothing si aucun élément n'est actif. |
IV-B. BeforeDraw
S'exécute avant dessin d'un élément.
Les modifications apportées à l'élément ne sont pas définitives.
Elles ne sont valables que le temps du dessin de cet élément.
IV-C. MouseMove
S'exécute sur déplacement de la souris sur le contrôle.
Paramètre |
Type |
Explication |
pElement |
CtrlImageListElement |
Elément survolé par la souris. Nothing si aucun élément n'est survolé. |
Button |
Integer |
Bouton de la souris appuyé. |
pMenuKey |
String |
Identifiant de l'élément de menu sous la souris. |
Shift |
Integer |
Etat des touches Shift, Alt et Ctrl. |
X |
Single |
Position de la souris sur le contrôle, en twips. |
Y |
Single |
Position de la souris sur le contrôle, en twips. |
IV-D. MouseDown
S'exécute sur souris appuyée sur le contrôle.
Paramètre |
Type |
Explication |
pElement |
CtrlImageListElement |
Elément survolé par la souris. Nothing si aucun élément n'est survolé. |
pMenuKey |
String |
Identifiant de l'élément de menu sous la souris. |
Button |
Integer |
Bouton de la souris appuyé. |
Shift |
Integer |
Etat des touches Shift, Alt et Ctrl. |
X |
Single |
Position de la souris sur le contrôle, en twips. |
Y |
Single |
Position de la souris sur le contrôle, en twips. |
IV-E. MouseUp
S'exécute sur souris relâchée sur le contrôle.
Paramètre |
Type |
Explication |
pElement |
CtrlImageListElement |
Elément survolé par la souris. Nothing si aucun élément n'est survolé. |
pMenuKey |
String |
Identifiant de l'élément de menu sous la souris. |
Button |
Integer |
Bouton de la souris relâché. |
Shift |
Integer |
Etat des touches Shift, Alt et Ctrl. |
X |
Single |
Position de la souris sur le contrôle, en twips. |
Y |
Single |
Position de la souris sur le contrôle, en twips. |
IV-F. MouseDblClick
S'exécute sur double-clic de la souris sur le contrôle.
Paramètre |
Type |
Explication |
pElement |
CtrlImageListElement |
Elément survolé par la souris. Nothing si aucun élément n'est survolé. |
pMenuKey |
String |
Identifiant de l'élément de menu sous la souris. |
Button |
Integer |
Bouton de la souris appuyé. |
Shift |
Integer |
Etat des touches Shift, Alt et Ctrl. |
X |
Single |
Position de la souris sur le contrôle, en twips. |
Y |
Single |
Position de la souris sur le contrôle, en twips. |
IV-G. KeyDown
S'exécute sur touche appuyée sur le contrôle.
Paramètre |
Type |
Explication |
pElement |
CtrlImageListElement |
Elément survolé par la souris. Nothing si aucun élément n'est survolé. |
pMenuKey |
String |
Identifiant de l'élément de menu sous la souris. |
KeyCode |
Integer |
Code de la touche appuyée. |
Shift |
Integer |
Etat des touches Shift, Alt et Ctrl. |
IV-H. AfterDrawImage
S'exécute avant dessin d'un élément.
Cet événement n'est déclenché que si RaiseAfterDraw = True.
Il est possible de modifier l'image ImageName de l'élément.
Les modifications apportées à l'élément ne sont pas définitives.
Elles ne sont valables que le temps du dessin de cet élément.
Exemple :
Affiche un texte en haut à gauche des images |
Private Sub oList_AfterDrawImage (pElement As CtrlImageListElementBeforeDraw, pCancelDraw As Boolean)
If pElement. ImageName < > " " Then
oList. Gdi . ImageListDrawText pElement. ImageName , " test " , 34 , , 0 , 0 , 100 , 100 , 0 , 0
End If
End Sub
|
IV-I. BeforeLoadImage
S'exécute avant le chargement d'une image pour permettre un chargement spécifique.
Paramètre |
Type |
Explication |
pElement |
CtrlImageListElement |
Elément à dessiner. |
pCancelLoad |
Boolean |
Si Vrai, annule le chargement de l'image par le contrôle. |
Il est possible de charger l'image ImageName de l'élément de manière spécifique.
Astuce : Mettre une valeur quelconque dans la propriété ImagePath de l'élément à sa création pour charger l'image de manière asynchrone.
Exemple :
Charge une image |
Private Sub oList_BeforeLoadImage (pElement As CtrlImageListElement, pCancelLoad As Boolean)
oList. ImageListAdd pElement. ImagePath , pElement. ImagePath , , True
pElement. ImageName = pElement. ImagePath
pCancelLoad = True
End Sub
|
V. Exemple
Pour un formulaire qui contient un sous-formulaire subFormList.
Exemple de liste d'images avec menu |
Option Compare Database
Option Explicit
Private WithEvents oList As CtrlImageList
Private Sub Form_Load ()
Dim lCpt As Long
Dim lImg (1 To 6 ) As String
Set oList = CreateTGLControl (CtrlImageList, Me. subFormList )
oList. MultipleSelection = True
lImg (1 ) = CurrentProject. Path & " \img\131746760.jpg "
lImg (2 ) = CurrentProject. Path & " \img\140594848.jpg "
lImg (3 ) = CurrentProject. Path & " \img\163599504.jpg "
lImg (4 ) = CurrentProject. Path & " \img\213847384.jpg "
lImg (5 ) = CurrentProject. Path & " \img\DSCN0323.JPG "
lImg (6 ) = CurrentProject. Path & " \img\logo.gif "
oList. ImageListAdd " menu- " , CurrentProject. Path & " \img\decocher.bmp " , , , True
oList. ImageListAdd " menu+ " , CurrentProject. Path & " \img\cocher.bmp " , , , True
oList. Menu . SizePercent = 20
oList. Menu . BackColor = vbWhite
oList. Menu . Opacity = 80
oList. Menu . ElementAdd " menu- " , " - " , " menu- "
oList. Menu . ElementAdd " menu+ " , " + " , " menu+ "
oList. Menu . MouseCursor = IDC_HAND
oList. Menu . HorzAlign = TGLAlignHorzRight
oList. Menu . VertAlign = TGLAlignVertDown
oList. AntialisingLevel = TGLAntialiaseLowQuality
oList. Clear
For lCpt = LBound (lImg) To UBound (lImg)
With oList. ElementAdd (" image " & lCpt)
. ImagePath = lImg (lCpt)
. Text = Dir (lImg (lCpt))
. MouseCursor = IDC_HAND
. Value (" Compteur " ) = 0
. DisplayValue . ValueName = " Compteur "
. DisplayValue . FontColor = vbBlue
. DisplayValue . BackColor = vbYellow
. DisplayValue . FontSize = 20
End With
Next
oList. Refresh
End Sub
Private Sub oList_BeforeDraw (pElement As CtrlImageListElementBeforeDraw)
If pElement. Value (" Compteur " ) = 0 Then
pElement. DisplayValue . ValueName = " "
End If
pElement. Bold = (pElement. Column = 1 )
If (pElement. Column = 2 ) Then
pElement. DisplayValue . HorzAlign = TGLAlignHorzRight
pElement. FontColor = vbRed
End If
End Sub
Private Sub oList_BeforeDrawMenu (pElement As CtrlImageListElementBeforeDraw, pMenu As CtrlImageListMenu)
If pElement. Value (" Compteur " ) = 0 Then
pMenu. ElementByName (" menu- " ). Visible = False
End If
End Sub
Private Sub oList_MouseDown (pElement As CtrlImageListElement, pMenuKey As String , _
Button As Integer, Shift As Integer, X As Single, Y As Single, Cancel As Boolean)
If Not pElement Is Nothing Then
If pMenuKey = " menu+ " Then
pElement. Value (" Compteur " ) = pElement. Value (" Compteur " ) + 1
oList. Refresh
ElseIf pMenuKey = " menu- " Then
pElement. Value (" Compteur " ) = pElement. Value (" Compteur " ) - 1
If pElement. Value (" Compteur " ) < 0 Then pElement. Value (" Compteur " ) = 0
oList. Refresh
End If
End If
End Sub
|
Résultat obtenu :
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2009 Thierry GASPERMENT.
Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
Droits de diffusion permanents accordés à Developpez LLC. Cette page est déposée à la SACD.
|