Developpez.com - Access
X

Choisissez d'abord la catégorieensuite la rubrique :


Le contrôle Grille - CtrlGrid

Date de publication : 02/12/09 , Date de mise à jour : 02/12/09

Par Thierry GASPERMENT (arkham46.developpez.com/)
 

Ce contrôle affiche une grille de données.

Retour à la page d'accueil.

11 commentaires Donner une note à l'article (5)

               Version PDF (Miroir)   Version hors-ligne (Miroir)

I. Préparation du contrôle
II. Propriétés
III. Méthodes
III-A. ColumnAdd
III-B. ColumnRemove
III-C. RowAdd
III-D. RowRemove
III-E. Refresh
III-F. RefreshCell
III-G. Clear
III-H. AutoSize
III-I. HeaderAutoSize
III-J. SortRowsByValue
III-K. GetRowByValue
III-L. Requery
III-M. ImageListAdd
III-N. ImageListAddFromArray
III-O. ImageListAddFromPicture
III-P. ImageListExists
III-Q. ImageListRemove
III-R. ImageListRemoveAll
IV. Evénements
IV-A. ActiveRowChanged
IV-B. BeforeDrawCell
IV-C. MouseMove
IV-D. MouseDown
IV-E. MouseUp
IV-F. MouseDblClick
IV-G. KeyDown
V. Exemple


I. Préparation du contrôle


Pour un formulaire qui contient un sous-formulaire subFormGrid.

Préparation de l'objet contrôle

Option Compare Database
Option Explicit

Private WithEvents oGrid As CtrlGrid

Private Sub Form_Load()
Set oGrid = CreateTGLControl(CtrlGrid, Me.subFormGrid)
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 appui 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 niveaux 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.
ActiveRow X   CtrlGridRow Ligne active.
La ligne active n'est pas forcément sélectionnée.
CountVisible X   Long Nombre d'éléments affichables sur le contrôle.
Dépend de la taille du contrôle et de la taille des éléments.
Rows X   Collection d'objets CtrlGridRow Collection de lignes contenues dans la grille.
Columns X   Collection d'objets CtrlGridColumn Collection de colonnes contenues dans la grille.
SelectedRow X   CtrlGridRow Ligne sélectionnée.
Renvoie la première ligne trouvée.
MultipleSelectedRows X   Collection d'objets CtrlGridRow Collection de lignes sélectionnées.
RowByPos X   CtrlGridRow Recherche une ligne par sa position.
ColumnByName X   CtrlGridColumn Recherche une colonne par son nom.
FixedColumns X X Long Nombre de colonnes figées.
ColumnHeader X X Boolean Définit si les en-têtes de colonnes sont affichés.
HeaderHeight X X Long Hauteur des en-têtes de colonnes, en pixels.
DisplayHorizontalLine X X Long Définit l'affichage des lignes horizontales de séparation.
RowHeight X X Long Hauteur d'un élément, en pixels.
RowSource X X String Source de données de la table.
Peut être le nom d'une requête ou d'une table, ou du SQL.
Utilisez Requery pour charger les données dans la grille.

III. Méthodes



III-A. ColumnAdd

 
Ajoute une colonne à la grille.


Paramètre Type Explication
pName String Nom identifiant la colonne.
pType ECtrlGridColumnType Type de colonne.
pBefore String Nom de la colonne avant laquelle insérer la nouvelle colonne.
pAfter String Nom de la colonne après laquelle insérer la nouvelle colonne.
Valeur renvoyée CtrlGridColumn Colonne ajoutée.


III-B. ColumnRemove

 
Retire une colonne.


Paramètre Type Explication
pName String Nom identifiant la colonne.

III-C. RowAdd

 
Ajoute une ligne à la grille.


Paramètre Type Explication
pKey String Identifiant de la ligne.
Laisser vide pour générer automatiquement un identifiant unique.
Valeur renvoyée CtrlGridRow Ligne ajoutée.


III-D. RowRemove

 
Retire une ligne de la grille.


Paramètre Type Explication
pKey String Identifiant la ligne.

III-E. Refresh

 
Redessine le contrôle.



III-F. RefreshCell

 
Redessine une cellule.


Paramètre Type Explication
pRow CtrlGridRow Ligne contenant la cellule à redessiner.
pColumn String Identifiant de la colonne à redessiner.



III-G. Clear

 
Vide la liste.

Utilisez ensuite Refresh pour mettre à jour l'affichage.


III-H. AutoSize

 
Définit le redimensionnement automatique de toutes les colonnes.


III-I. HeaderAutoSize

 
Définit le redimensionnement automatique des colonnes en fonction des libellés de colonnes.


III-J. SortRowsByValue

Trie les lignes 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-K. GetRowByValue

Recherche une ligne 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-L. Requery

 
Recharge la grille avec les données de la requête SQL définie par la propriété RowSource.



III-M. 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-N. 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-O. 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-P. 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-Q. 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-R. 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. ActiveRowChanged

S'exécute sur changement de la ligne active.


Paramètre Type Explication
pRow CtrlGridRow Ligne active.
Nothing si aucune ligne n'est active.



IV-B. BeforeDrawCell

S'exécute avant dessin d'une cellule de la grille.


Paramètre Type Explication
pRow CtrlGridRowBeforeDraw Ligne.
pColumn CtrlGridColumnBeforeDraw Colonne.

Les modifications apportées à la ligne ou à la colonne ne sont pas définitives.
Elles ne sont valables que le temps du dessin de cette cellule.


IV-C. MouseMove

S'exécute sur déplacement de la souris sur le contrôle.


Paramètre Type Explication
pRow CtrlGridRow Ligne survolée par la souris.
pColumn CtrlGridColumn Colonne survolée par 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-D. MouseDown

S'exécute sur souris appuyée sur le contrôle.


Paramètre Type Explication
pRow CtrlGridRow Ligne survolée par la souris.
pColumn CtrlGridColumn Colonne survolée par 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
pRow CtrlGridRow Ligne survolée par la souris.
pColumn CtrlGridColumn Colonne survolée par 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
pRow CtrlGridRow Ligne survolée par la souris.
pColumn CtrlGridColumn Colonne survolée par 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
pRow CtrlGridRow Ligne survolée par la souris.
pColumn CtrlGridColumn Colonne survolée par la souris.
KeyCode Integer Code de la touche appuyée.
Shift Integer Etat des touches Shift, Alt et Ctrl.



V. Exemple


Pour un formulaire qui contient un sous-formulaire subFormGrid.

Avec une table TGridTable :



Exemple de grille affichant les données d'une table

Option Compare Database
Option Explicit

' Objet Grille
Private WithEvents oGrid As CtrlGrid

Private Sub Form_Load()
' Initialise l'objet
Set oGrid = CreateTGLControl(CtrlGrid, Me.subFormGrid)
' Affiche les en-têtes
oGrid.ColumnHeader = True
' Source de données
oGrid.RowSource = "select false as sel,* from TGridTable"
' Ajout d'une colonne de sélection (checkbox) avec le champ sel en source
With oGrid.ColumnByName("sel")
        .TypeColumn = TGLColumnTypeCheckBox
        .AllowResize = False
        .Caption = ""
        .DisplayVertLine = False
End With
' Champ notation
oGrid.ColumnByName("note").TypeColumn = TGLColumnTypeRating
' Champ progression
oGrid.ColumnByName("progression").TypeColumn = TGLColumnTypeProgress
oGrid.ColumnByName("progression").DisplayProgressPercent = True
' Champ Valide (case à cocher)
oGrid.ColumnByName("valide").Width = -1
oGrid.ColumnByName("valide").HorzAlign = TGLAlignHorzCenter
' Date validité en gras
oGrid.ColumnByName("datevalid").Bold = True
' Nom en italique
oGrid.ColumnByName("nom").Italic = True
' Exécute la requête et rempli la grille
oGrid.Requery
' Colonnes auto-redimensionnées
oGrid.AutoSize
' En-têtes auto-redimensionnés
oGrid.HeaderAutoSize
' Redimensionne la colonne de notation
oGrid.ColumnByName("note").Width = 80
' Ajout d'un bouton dans la dernière colonne
With oGrid.ColumnAdd("Button", TGLColumnTypeImage)
    .Width = 60
    .AllowResize = False
    .MouseCursor = IDC_HAND
    .ConstantValue = "monbouton"
End With
' Couleur de fond
oGrid.BackColor = RGB(230, 230, 255)
' Couleur de sélection (aucune couleur)
oGrid.SelectionColor = -1
' Sélection multiple acceptée (touche CTRL)
oGrid.MultipleSelection = True
' Les deux premières colonnes sont fixes
oGrid.FixedColumns = 2
' Ajout de l'image du bouton à partir d'une image de menu
' Référence "Microsoft Office XX Object Library" requise
Dim o As CommandBarControl
oGrid.ImageListAddFromPicture "monbouton", CommandBars("Database").Controls(1).Picture, _
        CommandBars("Database").Controls(1).Mask
' Hauteur des lignes
oGrid.RowHeight = 40
' Dessine la grille
oGrid.Refresh
End Sub

'Avant affichage d'un cellule
Private Sub oGrid_BeforeDrawCell(pRow As CtrlGridRowBeforeDraw, pColonne As CtrlGridColumnBeforeDraw)
Select Case pColonne.Name
    Case "nb" ' Nombre à afficher en rouge ou vert
        If pRow.Value(pColonne.Name) < 300 Then pColonne.FillColor = vbRed Else pColonne.FillColor = vbGreen
    Case "sel" ' Case coché si ligne sélectionnée
        pRow.Value("sel") = pRow.Selected
End Select
End Sub

' Sur click souris
Private Sub oGrid_MouseDown(pRow As CtrlGridRow, pCol As CtrlGridColumn, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not pCol Is Nothing Then
    If pCol.Name = "Button" Then
        ' Si click sur bouton => affiche un message avec le nom de la ligne cliquée
        MsgBox pRow.Value("Nom")
    End If
End If
End Sub
				

Résultat obtenu :






               Version PDF (Miroir)   Version hors-ligne (Miroir)

Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.

Responsables bénévoles de la rubrique Access : Pierre Fauconnier - Arkham46 -