OVH Cloud OVH Cloud

Couleur cellule datagrid

1 réponse
Avatar
Annie L.
Comment procéder pour avoir des couleurs dans certaines cellules d'un
"DataGrid'?

J'ai trouvé dans l'aide de VB un exemple intitulé
"DataGridTextBoxColumn.Paint, méthode" mais il ne dise pas comment appeler la
méthode ou comment s'en servir.
J'essaie diverses méthodes et cela ne fonctionne pas du tout!
Comment faire pour s'en servir? Comment l'appeler dans notre projet?
J'aimerais avoir des exemples S.V.P.!

Merci de votre aide!


Voici un exemple qui fonctionne très bien pour moi.
De M. Ghislain Proulx, MVP

http://www.syncfusion.com/faq/winforms/search/745.asp

Oui, mais comment fait-on pour s'en servir dans notre projet ? Comme je peux
voir dans cet exemple, je dois créer un nouveau projet
contenant une 'Classe' et ensuite l'appeler dans mon projet (par référence).
Mais comment fait-on pour que cela fonctionne???
J'aimerais avoir des exemples pour savoir comment s'en servir


Autre question : comment fait-on pour faire défiler un datagrid par rapport
à un autre datagrid (scrollbar vertical)
Autrement dir, si je fait défiler le datagrid no. 2, il faut que le datagrid
no. 1 suivent le 2e.
Où est-ce possible de 'geler' une colonne dans un datagrid comme dans Excel?

Merci de votre aide.

1 réponse

Avatar
Anthony MARIE
Bonjour,
Je viens de faire cela il y a deux jours sur un projet, voici la procédure
Paint que j'ai mise dans la DataClasse :
Cette procédure me permet de "colorier" la case ou le texte en fonction d'un
champ de la table qui compose le dataGrid ; ce champ est "TypeCatalog".
Je créé également des traits pour indiquer des sous éléments d'un élément
"maitre".
Cette méthode est simple et très efficace.
Bon courage,
Anthony.

Protected Overloads Overrides Sub Paint(ByVal g As System.Drawing.Graphics,
ByVal bounds As System.Drawing.Rectangle, ByVal source As
System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal
backBrush As System.Drawing.Brush, ByVal foreBrush As System.Drawing.Brush,
ByVal alignToRight As Boolean)
Dim DRV As Data.DataRowView

Dim TypeCat As String

DRV = CType(source.Current, Data.DataRowView)

Dim LigneSource As Data.DataRow = DRV.DataView.Table.Rows(rowNum)

TypeCat = Convert.ToString(LigneSource("TypeCatalog"))

backBrush = System.Drawing.Brushes.White

foreBrush = System.Drawing.Brushes.Black

'Mise en forme de la cellule en fonction du TypeCatalog

'et création des traits pour les ouvrages et sous ouvrages

Select Case TypeCat

Case "T" 'Dans une tranche

backBrush = System.Drawing.Brushes.SlateBlue

Case "O" 'Entete d'un ouvrage

Dim blackPen As New System.Drawing.Pen(System.Drawing.Color.Black, 1)

blackpen.StartCap = Drawing.Drawing2D.LineCap.RoundAnchor

' Coordonnées du trait

Dim x1 As Single = bounds.X - 5

Dim y1 As Single = bounds.Y + 10

Dim y2 As Single = bounds.Y + bounds.Height

' Dessine la ligne

g.DrawLine(blackPen, x1, y1, x1, y2)

Case "a", "f", "m", "r", "v", "x", "c" 'Dans un ouvrage

foreBrush = System.Drawing.Brushes.Gray

Dim blackPen As New System.Drawing.Pen(System.Drawing.Color.Black, 1)

' Coordonnées du trait

Dim x1 As Single = bounds.X - 5

Dim y1 As Single = bounds.Y

Dim y2 As Single = bounds.Y + bounds.Height

' Dessine la ligne

g.DrawLine(blackPen, x1, y1, x1, y2)

Case "o" 'Entête de sous ouvrage

foreBrush = System.Drawing.Brushes.Gray

Dim grisPen As New System.Drawing.Pen(System.Drawing.Color.Black, 1)

grisPen.StartCap = Drawing.Drawing2D.LineCap.RoundAnchor

' Coordonnées du trait

Dim x1 As Single = bounds.X - 5

Dim y1 As Single = bounds.Y + 10

Dim y2 As Single = bounds.Y + bounds.Height

' Dessine la ligne

g.DrawLine(grisPen, x1, y1, x1, y2)

Case "b", "g", "n", "s", "y", "d" 'Dans un sous ouvrage

foreBrush = System.Drawing.Brushes.Gray

Dim blackPen As New System.Drawing.Pen(System.Drawing.Color.Black, 1)

Dim GrisPen As New System.Drawing.Pen(System.Drawing.Color.Gray, 1)

' Coordonnées du trait

Dim x1 As Single = bounds.X - 5

Dim y1 As Single = bounds.Y

Dim y2 As Single = bounds.Y + bounds.Height

' Dessine les lignes

g.DrawLine(blackPen, x1, y1, x1, y2)

g.DrawLine(GrisPen, x1 + 3, y1, x1 + 3, y2)

End Select

'

MyBase.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight)

End Sub

"Annie L." a écrit dans le message de
news:
Comment procéder pour avoir des couleurs dans certaines cellules d'un
"DataGrid'?

J'ai trouvé dans l'aide de VB un exemple intitulé
"DataGridTextBoxColumn.Paint, méthode" mais il ne dise pas comment appeler


la
méthode ou comment s'en servir.
J'essaie diverses méthodes et cela ne fonctionne pas du tout!
Comment faire pour s'en servir? Comment l'appeler dans notre projet?
J'aimerais avoir des exemples S.V.P.!

Merci de votre aide!


Voici un exemple qui fonctionne très bien pour moi.
De M. Ghislain Proulx, MVP

http://www.syncfusion.com/faq/winforms/search/745.asp

Oui, mais comment fait-on pour s'en servir dans notre projet ? Comme je


peux
voir dans cet exemple, je dois créer un nouveau projet
contenant une 'Classe' et ensuite l'appeler dans mon projet (par


référence).
Mais comment fait-on pour que cela fonctionne???
J'aimerais avoir des exemples pour savoir comment s'en servir


Autre question : comment fait-on pour faire défiler un datagrid par


rapport
à un autre datagrid (scrollbar vertical)
Autrement dir, si je fait défiler le datagrid no. 2, il faut que le


datagrid
no. 1 suivent le 2e.
Où est-ce possible de 'geler' une colonne dans un datagrid comme dans


Excel?

Merci de votre aide.