IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Le contrôle Grille - CtrlGrid

Image non disponible

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

Retour à la page d'accueil.

29 commentaires Donner une note à l´article (5)  

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Préparation du contrôle

Pour un formulaire qui contient un sous-formulaire ou cadre subFormGrid.

Préparation de l'objet contrôle
Sélectionnez
Option Explicit
            
Private WithEvents oGrid As CtrlGrid
            
Private Sub Form_Load() ' UserForm_Initialize pour Excel
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.
FontColorSelected X X Long Couleur de la police de caractères d’une ligne sélectionnée.
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.
LibTGLplus 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.
ActiveColumn X   CtrlGridColumn Colonne active.
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 grille.
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.

(Access uniquement)

MouseScrollStep X X Long

Pas de défilement de la molette de la souris.

(Access uniquement)

Gdi X   clGdiplus ou clGdi32 Objet de gestion du graphisme du contrôle.
ContainerControl X   Access.SubForm ou MSForms.Frame

Contrôle Container.

Cadre ou Sous-Formulaire.

Container     Access.Form ou MSForms.Frame

Container.

Cadre ou Formulaire.
Pour Excel, ContainerControl et Container sont identiques.

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

 

Pour Access.

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
Sélectionnez
With Application.CommandBars("Database").Controls(1)
    oList.ImageListAddFromPicture "monbouton", .Picture, .Mask
End With

III-P. ImageListAddFromControl

Ajoute une image à la liste d'images du contrôle.

L'image est définie par le contenu d'un contrôle.

Paramètre Type Explication
pKey String Identifiant de l'image.
pControl Control Contrôle contenant 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-Q. ImageListAddFromAttachment

A partir d’Access 2007.

Ajoute une image à la liste d'images du contrôle.

L'image est définie par le contenu d’un champ pièce-jointe.

Paramètre Type Explication
pKey String Identifiant de l'image.
pTable String Nom de la table
pField String Nom de la colonne
pWhere String Clause where
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-R. 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-S. 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-T. 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. SelectionChanged

S’exécute lorsque la sélection des lignes est modifiée.

IV-B. 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-C. 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-D. 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-E. 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-F. 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-G. 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-H. 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 ACCESS :

Pour un formulaire qui contient un sous-formulaire subFormGrid.

Avec une table TGridTable :

Image non disponible
Exemple de grille affichant les données d'une table
Sélectionnez
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 :

Image non disponible

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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 ni 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.