[VB.NET] Création de composant
Bonjours,
j'ai créer un composant mais j'ai un message d'erreur lorsque je le pose en mode design : La référence d'objet n'est pas définie à une instance d'un objet.
Je n'ai pas de probleme de compil
Le probleme viendrait de l'appel de la variable Grid.NbreColonne dans OnPaint
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.ComponentModel
Imports System.Drawing.Drawing2D 'cette bibliothèque sert à faire les pointillés
'Imports System.Windows.Forms.UserControl 'pour gérer la transparence
Public Class AgendaGrid
Inherits Control
Public MyGrid As ClassGrid 'variable pour la prpriété Grid
Public Sub New()
End Sub 'New
Protected Overrides Sub OnPaint(e As PaintEventArgs) 'dessine le composant (s'active automatiquement)
Dim i As int16
Dim BrushBackColor As New SolidBrush(Color.White) 'défini la couleur de fond
For i=0 To Grid.NbreColonne'Grid.NbreColonne - 1
' Dim Rect As New Rectangle(Grid.OffsetX + i*Grid.X, Grid.OffsetY, Grid.OffsetX + i*Grid.X + Grid.CaseX, Grid.OffsetY + Grid.TempMaxColonne)
'
' e.Graphics.FillRectangle(BrushBackColor, Rect) 'colorie le fond du rectangle
' BrushBackColor.Dispose() 'efface la mémoire
Next i
End Sub
<Category("Grid"), Description("Définition de la Grille Du Tableau")> _
Public Property Grid() As ClassGrid
Get
Return MyGrid
End Get
Set
MyGrid = value
End Set
End Property
End Class
Public Class ClassGrid
Private Xtemp As Int16 = 120 'pas de la grille en X
Private Ytemp As Int16 = 30 'pas de la grille en Y
Private CaseXtemp As Int16 = 96 'largeur d'une case tache par defaut
Private OffsetXtemp As Int16 = 50 'offset de la position du tableau en X
Private OffsetYtemp As Int16 = 50 'offset de la position du tableau en Y
Private NbreColonneTemp As int16 = 7 'Nombre de colonne dans le tableau
Private TempMaxColonneTemp As int16 = 700 'Nombre de minutes dans la journée
Private GridMoveTemp As Boolean = True 'Deplacement de la tache au pas de la grille
'<Category("Grid"), Description("Définition du Pas de la Grille en X"), DefaultValue(30)> _
Public Property X As Int16
Get
Return Xtemp
End Get
Set
Xtemp = value
End Set
End Property
Public Property Y As Int16
Get
Return Ytemp
End Get
Set
Ytemp = value
End Set
End Property
Public Property CaseX As Int16 'largeur d'une case
Get
Return CaseXtemp
End Get
Set
CaseXtemp = value
End Set
End Property
Public Property OffsetX As Int16 'offset de l'origine en X
Get
Return OffsetXtemp
End Get
Set
OffsetXtemp = value
End Set
End Property
Public Property OffsetY As Int16 'offset de l'origine en Y
Get
Return OffsetYtemp
End Get
Set
OffsetYtemp = value
End Set
End Property
Public Property NbreColonne As Int16 'Nbre de colonne dans le tableau
Get
Return NbreColonneTemp
End Get
Set
NbreColonneTemp = value
End Set
End Property
Public Property TempMaxColonne As Int16 'Durée Max qu'il y a dans une colonne
Get
Return TempMaxColonneTemp
End Get
Set
TempMaxColonneTemp = value
End Set
End Property
Public Property GridMove As Boolean 'Deplacement de la tache sur la grille
Get
Return GridMoveTemp
End Get
Set
GridMoveTemp = value
End Set
End Property
End Class |
Tag [VB.NET] rajouté par Morpheus
Merci d'y penser à l'avenir :wink: