Apprendre à Ecrire et Dessiner dans les états Access
Date de publication : 01/11/2007 , Date de mise à jour : 07/11/2007
Par
Philippe JOCHMANS (home page de Starec)
Ce tutorial a pour but de vous apprendre les différentes méthodes
pour écrire et dessiner dans les états Access.
I. INTRODUCTION
II. LES INSTRUCTIONS POUR ECRIRE ET DESSINER.
II-A. Les procédures évènementielles dans les états.
II-B. Suite logique des procedures
II-C. Les Sections
II-C-1. Détail
II-C-2. Entête et Pied de pages
II-C-3. Entête et Pied d'Etat
II-C-4. Entête et Pied de Groupe
II-D. Les évènements
II-D-1. Page
II-D-2. Format
II-D-3. Print
II-D-4. Retreat
II-E. Les coordonnées dans un Etat
II-E-1. Origine
II-E-2. Unités
II-E-3. Les dimensions : ScaleWidth et ScaleHeight
II-E-4. ScaleTop et ScaleLeft
II-F. Ecrire
II-F-1. Print
II-F-2. Police
II-F-3. Positionnement : CurrentX, CurrentY
II-F-4. Récupérer la taille du texte : TextWidth et TextHeight
II-G. Dessiner
II-G-1. Largeur des traits : DrawWidth
II-G-2. Type de traits : DrawStyle
II-G-3. Remplissage : Fillstyle
II-G-4. Les couleurs : FillColor
II-G-5. Le mode de dessin : DrawMode
II-G-6. Line
II-G-7. Circle
II-G-8. PSet
III. EXEMPLES
III-A. Rectangles au coin arrondi.
III-A-1. Le rectangle simple
III-A-2. Le rectangle générique
III-B. Mettre en évidence une donnée.
III-B-1. En le mettant en surbrillance
III-B-2. En l'entourant d'une ellipse
III-C. Dégradés
III-D. La carte de France
III-E. Les champs auto extensibles
IV. CONCLUSION
V. REMERCIEMENTS
I. INTRODUCTION
Le but de cet article est de vous expliquer comment écrire et dessiner dans les Etats Access sans utiliser
les contrôles classiques (zones de texte, rectangles, etc.).
Cet article sera divisé en deux parties :
- Initiation sur les propriétés, méthodes et procédures évènementielles pour écrire et dessiner.
- Présentation d'exemples.
 |
Toutes les méthodes qui seront évoquées ici ne sont applicables qu'aux états.
Si vous voulez dessiner sur des formulaires il faudra utiliser des API.
Pour cela, je vous conseille d'aller visiter :
|
 |
Les utilisateurs de VB6 ne seront pas dépaysés, ils reconnaîtront les fonctions utilisées.
|
 |
Les instructions que nous allons étudier ne s'écrivent qu'en VBA (il n'existe pas
d'assistant). Une bonne connaissance de celui-ci est indispensable pour comprendre certains
exemples.
De plus l'utilisation de la touche F1 est indispensable en cas du moindre doute.
|
II. LES INSTRUCTIONS POUR ECRIRE ET DESSINER.
Nous allons dans ce paragraphe énumérer les procédures évènementielles,
les méthodes et les propriétés pour écrire et dessiner dans un Etat.
II-A. Les procédures évènementielles dans les états.
Les états comportent comme les formulaires des procédures évènementielles,
cependant celles-ci ne permettent pas une interaction avec l'utilisateur,
car en effet un état n'est pas interactif contrairement à un formulaire.
Les procédures ne concernent que les différentes phases de l'élaboration d'un Etat
(Formatage, Impression) et d'autres procédures comme l'ouverture, etc.
Un état se compose de plusieurs sections
- L'état en lui-même ou Report
- La zone de détail où seront affichées la plupart de vos données
- Les zones d'Entête et de Pied de pages
- Les zones d'Entête et de Pied d'Etat
- Les entêtes et pieds de groupes
Dans le tableau suivant vous allez trouver les procédures évènementielles
et à quelle section elles peuvent s'appliquer.
| Procédure |
Report |
Détail |
Entête et Pied de Pages |
Entête et Pied d'Etat |
Entête et Pied de Groupe |
| Activate |
X |
|
|
|
|
| Close |
X |
|
|
|
|
| Deactivate |
X |
|
|
|
|
| Error |
X |
|
|
|
|
| NoData |
X |
|
|
|
|
| Open |
X |
|
|
|
|
| Page |
X |
|
|
|
|
| Format |
|
X |
X |
X |
X |
| Print |
|
X |
X |
X |
X |
| Retreat |
|
X |
|
X |
X |
II-B. Suite logique des procedures
Vous trouverez ci-dessous la suite logique des procédures évènementielles les plus utilisées.
- Report_Open
- Report_Activate
- ZoneEntêtePage_Format
- ZoneEntêtePage_Print
- Détail_Format
- Détail_Print
- ZonePiedPage_Format
- ZonePiedPage_Print
- Report_Page
- Report_Close
- Report_Deactivate
II-C. Les Sections
Un Etat est divisée en différentes sections, nous allons expliquer à quoi elles servent,
cela permettra de mieux appréhender la construction d'un Etat et de savoir où doivent se
positionner les éléments pour écrire et dessiner. Notez que cela est également valable
lorsque vous voulez positionner des contrôles (zones de textes, etc.).
II-C-1. Détail
C'est dans cette zone que vous retrouverez le détail de vos enregistrements, visuellement
c'est un peu comme si vous aviez copier-coller votre requête dans une feuille.
II-C-2. Entête et Pied de pages
Les données des entêtes et pied de pages concernent toutes les informations qui
doivent se trouver sur chacune de vos pages (ex : SIRET, Numéro de pages, etc…). Comme
leur nom l'indique, vous avez une zone pour l'entête de la page et une pour le pied de la page,
par analogie, cela correspond aux entêtes et pied de pages d'un document Word.
II-C-3. Entête et Pied d'Etat
Contrairement aux zones de pages ci-dessus, ici vous afficherez une information sur
l'entête de la première page et une sur le pied de la dernière page de l'Etat.
Utiliser l'Entête pour afficher par exemple le logo d'une société dans une facture,
et le pied d'Etat pour un total final.
II-C-4. Entête et Pied de Groupe
Ces deux zones n'existent pas par défaut, elles sont crées automatiquement lorsque vous
regroupez des données, par exemple lorsque vous décider d'éditer une liste de personnes
et que vous voulez les regrouper par rapport à l'initial de leur Nom. En général on se sert
de l'Entête pour indiquer à quoi correspond le groupe et le pied pour faire des totaux,
mais les informations à visualiser peuvent être différentes.
II-D. Les évènements
Nous allons uniquement lister les procédures intéressantes pour le sujet de cet article,
je vous renvoie sur l'aide Access pour les autres.
II-D-1. Page
Cet évènement se produit lors de la mise en forme de la page avant son impression,
c'est sur cet évènement que l'on s'appuiera si on veut effectuer une action d'écriture
ou de dessin sur l'ensemble de la page.
 |
Mais attention, tout ce que vous ferez sur cet évènement se fera par-dessus tout
ce qui a été fait avant, donc vous risquez de cacher des écritures.
|
II-D-2. Format
Cet évènement se produit lors de la mise en forme d'une section d'un Etat, chaque section peut avoir
un formatage différent, contrairement à l'évènement Page du rapport.
II-D-3. Print
Cet évènement se produit pour préparer l'Etat à l'impression. Il se produit après l'évènement
formatage d'une section.
II-D-4. Retreat
Cet évènement se produit lorsque Microsoft Access retourne à une section d'état
précédente pendant sa mise en forme (copie de l'aide Access).
Cet évènement se produit donc lorsque qu'il y'a des re-calcules sur une section.
II-E. Les coordonnées dans un Etat
Pour pouvoir écrire ou dessiner dans un Etat, il faut d'abord savoir
comment fonctionnent les coordonnées dans celui-ci, en effet il faudra positionner
les écritures et les dessins.
II-E-1. Origine
L'origine du repère se trouve en haut à gauche, que se soit pour un état ou une section
de celui-ci.
La convention veut que l'on nomme les axes comme en mathématiques
- X pour les coordonnées par rapport à un axe horizontal
- Y pour les coordonnées par rapport à un axe vertical
Ce qui veut dire que lorsque vous allez sur la droite le chiffre des x augmente,
et donc lorsque vous allez vers le bas le chiffre des y augmente
(l'axe des y est donc inversé par rapport aux axes en mathématique).
L'origine est propre à la section dans laquelle vous effectuer le code, en effet,
si celui-ci se trouve dans l'état (Report), l'origine sera en haut à gauche de la feuille,
si vous êtes dans le pied de page, l'origine se trouve en haut et à gauche de cette section.
II-E-2. Unités
On peut utiliser plusieurs unités dans les Etats Access.
L'unité peut être modifiée grâce à la propriété ScaleMode.
Voici les différentes unités possibles :
| Paramètre |
Unité |
| 1 |
Twips |
| 2 |
Points |
| 3 |
Pixels |
| 4 |
Caractères (horizontal = 120 twips par unité ; vertical = 240 twips par unité |
| 5 |
Pouces |
| 6 |
Millimètres |
| 7 |
Centimètres |
Il existe un autre paramètre qui est 0 que nous n'aborderons pas.
Pour information : 1 cm = 567 twips.
Pour connaître la dimension de la section dans laquelle vous effectuez des opérations, vous devez
utiliser les propriétés ScaleWidth (largeur), ScaleHeight (la hauteur),
ScaleLeft(Limite gauche) et ScaleTop (limite haute).
II-E-3. Les dimensions : ScaleWidth et ScaleHeight
Il existe plusieurs propriétés pour récupérer les dimensions d'un état ou d'une section :
- ScaleWidth : Indique la largeur de la zone de traçage dans un état ou d'une section.
- ScaleHeight : Indique la hauteur de la zone de traçage dans un état ou d'une section.
 |
Mais attention, suivant l'endroit où vous placez le code, l'effet ne sera pas le même.
|
Le code suivant dessine un cadre autour de la page
| VBA |
Private Sub Report_Page()
Me.Line (0, 0)-(Me.ScaleWidth, Me.ScaleHeight), vbBlack, B
End Sub
|
Le code suivant dessine un cadre autour de la section entête de page
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Me.Line (0, 0)-(Me.ScaleWidth, Me.ScaleHeight), vbBlack, B
End Sub
|
Pourtant comme vous le constatez l'instruction de dessin est la même,
mais la procédure où vous placez le code a son importance.
II-E-4. ScaleTop et ScaleLeft
Ces deux propriétés permettent de re déterminer l'origine de votre zone de dessin.
Ainsi avec les instructions suivantes :
| VBA |
Me.ScaleTop = -2000
Me.ScaleLeft = -2000
|
L'origine sera décalée de 2000 unités vers le bas (ScaleTop) et de 2000
unités vers la droite (ScaleLeft).
Ainsi si vous voulez tracer un rectangle dont le point d'origine est (0,0) sur une page.
Dans le cas normal, le rectangle commencera en haut à gauche de la feuille
En utilisant les instructions ci-dessous, celui-ci commencera aux coordonnées (2000,2000) alors que
dans l'instruction de dessin on aura (0,0).
II-F. Ecrire
Nous pouvons écrire du texte dans un état, ce chapitre à pour but de vous montrer
les différentes méthodes pour écrire.
II-F-1. Print
La méthode Print va permettre d'écrire du texte dans un état
(à ne pas confondre avec l'évènement Print).
L'exemple suivant va écrire : Bienvenue sur DVP dans la section entête de page :
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Me.Print "Bienvenue sur DVP"
End Sub
|
Vous pouvez utiliser plusieurs fois cette méthode pour imprimer différents textes.
Cette méthode peut être agrémentée de deux paramètres, la virgule et le point virgule.
Si vous mettez une virgule la deuxième partie du texte sera décalée vers la droite
dans une autre zone d'impression.
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Me.Print "Bienvenue ",
Me.Print "sur DVP"
End Sub
|
Si vous mettez un point virgule la deuxième partie du texte sera accolée à la première.
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Me.Print "Bienvenue ";
Me.Print "sur DVP"
End Sub.
|
Si vous ne mettez rien, la deuxième partie du texte sera décalée vers le bas.
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Me.Print "Bienvenue "
Me.Print "sur DVP"
End Sub
|
II-F-2. Police
Vous pouvez également agrémenter votre texte des attributs classiques d'une police.
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
With Me
.FontName = "Courrier New"
.FontBold = True
.FontItalic = True
.FontSize = 12
.FontUnderline = True
.ForeColor = vbRed
.Print "Bonjour"
End With
End Sub
|
Ce code écrira Bonjour en rouge avec la police Courrier New d'une taille de 12, en gras, en italique et souligné.
 |
Tant que vous ne changez pas les attributs d'une police, les précédents seront
pris en compte.
|
II-F-3. Positionnement : CurrentX, CurrentY
Vous pouvez également positionner votre texte où vous voulez grâce aux propriétés CurrentX pour un positionnement
horizontal et CurrentY pour un positionnement vertical.
L'unité employée est celle définie par la propriété ScaleMode.
Le code suivant positionnera le mot Bonjour dans la section entête de page à 1000 twips du bord haut de cette section
et à 1000 twips par rapport au bord gauche de celle-ci.
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
With Me
.ScaleMode = 1
.CurrentX = 1000
.CurrentY = 1000
.Print "Bonjour"
End With
End Sub
|
II-F-4. Récupérer la taille du texte : TextWidth et TextHeight
Ces deux méthodes permettent de récupérer la largeur (TextWidth) et la hauteur (TextHeight) d'un texte qui
doit être imprimé dans un état.
L'unité de la valeur récupérée est celle qui a été déterminée par la propriété ScaleMode.
Il est important de bien déterminer les attributs de la police avant de récupérer par ces fonctions la largeur et
la hauteur de la chaîne à écrire, car celles-ci sont calculées en fonction de ces attributs.
L'exemple suivant va nous permettre de centrer en hauteur et en largeur le mot " Bonjour "
dans la section entête de page de notre état, et de réaliser un cadre autour.
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
With Me
.FontName = "Arial"
.FontSize = 48
.FontBold = True
.CurrentX = (Me.ScaleWidth - Me.TextWidth("Bonjour")) / 2
.CurrentY = (Me.ScaleHeight - Me.TextHeight("Bonjour")) / 2
End With
Me.Print "Bonjour"
Me.Line (0, 0)-(Me.ScaleWidth, Me.ScaleHeight), vbBlack, B
End Sub
|
Et voilà un beau titre parfaitement centré sur votre page, sans aucun calcul ou
de manipulation d'un contrôle dans l'état en mode conception.
II-G. Dessiner
Avant d'apprendre à dessiner, nous allons déterminer comment nous allons dessiner
(largeur de trait, type de trait, remplissage, couleurs).
II-G-1. Largeur des traits : DrawWidth
Cette propriété va permettre de déterminer la largeur des traits des dessins (pour le dessin de lignes,
de cercles, et de points).
L'unité de cette propriété est le pixel, il faudra donc faire une conversion pour utiliser une autre unité.
II-G-2. Type de traits : DrawStyle
Cette propriété va permettre de déterminer le type de ligne, elle s'appliquera uniquement aux méthodes
permettant de dessiner des lignes (Line) et des cercles (Circle).
Les paramètres sont :
- 0 - (Valeur par défaut) Ligne pleine, intérieur transparent
- 1 - Tiret, intérieur transparent
- 2 - Point, intérieur transparent
- 3 - Tiret-point, intérieur transparent
- 4 - Tiret-point-point, intérieur transparent
- 5 - Trait invisible, intérieur transparent
- 6 - Trait invisible, intérieur plein
Le code ci-dessous va vous permettre de visualiser sur un état les différents types de traits.
| VBA |
Private Sub Report_Page()
Dim i As Byte
Me.CurrentY = 0
For i = 0 To 6
Me.DrawStyle = i
Me.Line (0, Me.CurrentY)-(Me.ScaleWidth, Me.CurrentY)
Me.CurrentY = Me.CurrentY + 500
Next i
End Sub
|
II-G-3. Remplissage : Fillstyle
Cette propriété va vous permettre de déterminer le type de remplissage, elle s'appliquera uniquement
aux méthodes permettant de dessiner des lignes (Line) et des cercles (Circle).
- 0 - Opaque
- 1 - (Valeur par défaut) Transparent
- 2 - Trait horizontal
- 3 - Trait vertical
- 4 - Diagonale montante
- 5 - Diagonale descendante
- 6 - Croix
- 7- Diagonales croisées
Le code ci-dessous va vous permettre de visualiser sur un état les différents types de remplissage.
| VBA |
Private Sub Report_Page()
Dim i As Byte
Me.CurrentY = 1000
For i = 0 To 3
Me.FillStyle = i
Me.Circle (1000, Me.CurrentY), 500, vbBlack
Me.CurrentY = Me.CurrentY + 1500
Next i
Me.CurrentY = 1000
For i = 4 To 7
Me.FillStyle = i
Me.Circle (4000, Me.CurrentY), 500, vbBlack
Me.CurrentY = Me.CurrentY + 1500
Next i
End Sub
|
II-G-4. Les couleurs : FillColor
Cette propriété va vous permettre de déterminer la couleur de remplissage, elle s'appliquera
uniquement aux méthodes permettant de dessiner des lignes (Line) et des cercles (Circle).
La valeur de cette couleur sera un entier de type Long ou une constante de couleur
(VbWhite, VbRes, etc.) ou bien un code RGB.
Nous allons reprendre le code précédent et changer la couleur de la trame.
| VBA |
Private Sub Report_Page()
Dim i As Byte
Me.CurrentY = 1000
Me.FillColor = vbRed
For i = 0 To 3
Me.FillStyle = i
Me.Circle (1000, Me.CurrentY), 500, vbYellow
Me.CurrentY = Me.CurrentY + 1500
Next i
Me.CurrentY = 1000
Me.FillColor = vbGreen
For i = 4 To 7
Me.FillStyle = i
Me.Circle (4000, Me.CurrentY), 500, vbBlue
Me.CurrentY = Me.CurrentY + 1500
Next i
End Sub
|
II-G-5. Le mode de dessin : DrawMode
Ce concept est un peu difficile à appréhender, en fait il s'agit de connaître
l'interaction entre les éléments qui composent un dessin, comment se superposent les différents éléments.
Voici la liste des paramètres, mais pour mieux appréhender graphiquement ce qui se passe,
nous allons faire un exemple pour chaque.
Pour cela nous allons utiliser le code suivant : Celui-ci crée 2 cercles (un rouge et un bleu), et écrit un texte en noir.
Ce qui nous permettra de voir comment agit la méthode DrawMode
| VBA |
Private Sub Report_Page()
With Me
.CurrentY = 1000
.FillStyle = 0
.DrawMode = 1
.FontSize = 12
.ForeColor = vbBlack
End With
Me.Print "Utilisation de DrawMode (10) avec des graphiques"
Me.FillColor = vbRed
Me.Circle (2000, Me.CurrentY), 900, vbBlack
Me.FillColor = vbBlue
Me.Circle (2500, Me.CurrentY), 900, vbBlack
Me.CurrentY = Me.CurrentY + 1500
End Sub
|
1 - Crayon noir.
2 - Inverse du paramètre 15 (NotMergePen).
3 - Combinaison des couleurs communes à l'arrière-plan et à l'inversion du crayon (MaskNotPen).
4 - Inverse du paramètre 13 (NotCopyPen).
5 - Combinaison des couleurs communes au crayon et à l'inverse de l'affichage (MaskPenNot).
6 - Inverse de la couleur de l'affichage (Invert).
7 - Combinaison des couleurs du crayon et de la couleur de l'affichage, à l'exclusion des couleurs communes aux deux (XorPen).
8 - Inverse du paramètre 9 (NotMaskPen).
9 - Combinaison des couleurs communes au crayon et à l'affichage (MaskPen).
10 - Inverse du paramètre 7 (NotXorPen).
11 - Aucun effet - la sortie reste inchangée. En fait, ce paramètre désactive le dessin (Nop).
12 - Combinaison de la couleur de l'affichage et de l'inverse de la couleur du crayon (MergeNotPen).
13 - (Valeur par défaut) Couleur spécifiée par la propriété ForeColor (CopyPen).
14 - Combinaison de la couleur du crayon et de l'inverse de la couleur de l'affichage (MergePenNot).
15 - Combinaison de la couleur du crayon et de la couleur de l'affichage (MergePen).
16 - Crayon blanc
Malgré les exemples, cette propriété est loin d'être parlante. Son utilisation est très
marginale.
 |
Vous ne pouvez pas déterminer des modes de dessin différents dans une section d'un état, par contre vous pouvez tout
à fait mettre un mode de dessin différent d'une section à l'autre.
|
II-G-6. Line
Cette méthode va permettre de dessiner une ligne, un rectangle vide ou un rectangle plein.
Syntaxe :
Line [Step] (xD, yD) [Step] - (xF, yF), [couleur], [B][F]
- Step : ce mot va préciser si les coordonnées qui suivent sont à prendre par rapport à l'origine de la section (coordonnées absolues) ou par rapport à la position actuelle du curseur (coordonnées relatives).
- xD : Coordonnée horizontale du point de départ du tracé .
- yD : Coordonnée verticale du point de départ du tracé.
- xF : Coordonnée horizontale du point d'arrivée du tracé.
- yF : Coordonnée verticale du point d'arrivée du tracé.
- Couleur : Couleur du tracé de type entier long. Vous pouvez utiliser une couleur définie à l'aide de la fonction RGB(), un entier long ou bien une constance VB (vbBlack, vbRed, etc..).
- B : Indique que vous allez tracer un rectangle, sans cette lettre, vous allez tracer une ligne dont le début sera en xD et yD et la fin en xF et yF (cela correspond donc à la diagonale de ce rectangle).
- F : Indique si le rectangle est rempli de la couleur définie en paramètre. Cette propriété n'est pas à utilisée en case de l'utilisation de FillStyle et FillColor
 |
Pour dessiner un rectangle avec un bord d'une couleur différente vous pouvez :
|
- Créer un rectangle plein avec la couleur en paramètre, et un rectangle vide (sans le paramètre F) avec une autre couleur en paramètre.
- Utiliser les propriétés FillColor et FillStyle.
Voici quelques exemples, il s'agit d'une copie d'écran d'un état qui a été
entièrement créé par du code VBA.
 |
Vous noterez que dans les deux dernières instructions il n'y a pas de coordonnées de départ,
c'est donc la position du curseur à la fin de la ligne précédente qui est prise en compte.
|
II-G-7. Circle
Cette méthode va vous permettre de dessiner un cercle ou une ellipse.
Syntaxe :
Circle [Step] (x, y), rayon, [couleur, début, fin, aspect]
- Step : Cela indique que les coordonnées du centre du cercle (x,y) seront relatives par rapport à la position du curseur.
- x : Coordonnées horizontale du centre du cercle ou de l'ellipse (Obligatoire).
- y : Coordonnées verticale du centre du cercle ou de l'ellipse (Obligatoire).
- Rayon : Rayon du cercle ou de l'ellipse (Obligatoire).
- Couleur : Couleur de tracé du cercle ou de l'ellipse. Vous pouvez utiliser une couleur définie à l'aide de la fonction RGB(), un entier long ou bien une constance VB (vbBlack, vbRed, etc..) (Facultatif).
- Début : Il s'agit du point de départ du cercle. Cette valeur est un nombre réel simple, allant de -2 PI Radians à 2 PI Radians (Facultatif en cas de cercle entier).
- Fin : Il s'agit du point de fin du cercle. Cette valeur est un nombre réel simple, allant de -2 PI Radians à 2 PI Radians (Facultatif en cas de cercle entier).
- Aspect : Il s'agit du rapport entre largeur/hauteur qui permet de déterminer la forme de l'ellipse.
Voici un exemple de code :
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Me.Line (0, 0)-(Me.ScaleWidth, Me.ScaleHeight), vbBlack, B
Me.Circle (Me.ScaleWidth / 2, Me.ScaleHeight / 2), Me.ScaleWidth / 2, vbBlack, , , Me.ScaleHeight / Me.ScaleWidth
End Sub
|
Voici un autre exemple, ce code dessine le très connu PacMan :
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Const Pi = 3.14159265359
Me.FillColor = vbYellow
Me.FillStyle = 0
Me.Circle (1000, 1000), 500, vbWhite
Me.FillColor = vbWhite
Me.FillStyle = 0
Me.Circle (1000, 1000), 500, vbWhite, -(2 * Pi - Pi / 5), -Pi / 5
Me.Circle (1100, 700), 50, vbWhite
End Sub
|
II-G-8. PSet
Cette méthode va tracer un point à un endroit précis d'un état.
Syntaxe :
Pset [Step](x,y),[couleur]
- Step : Cela indique que les coordonnées du point (x,y) seront relatives par rapport à la position du curseur.
- X : Position du point sur l'axe horizontal (Obligatoire).
- Y : Position du point sur l'axe vertical (Obligatoire).
- Couleur : Couleur du point
Exemple de code :
| VBA |
Private Sub Report_Page()
Me.DrawWidth = 20
Dim i As Integer
For i = 0 To 5000 Step 1
PSet (i, 5000 + (Sin(i * 3.14) * 1000)), vbBlack
Next i
End Sub
|
III. EXEMPLES
Cette partie a pour but de vous montrer différents types d'utilisations possibles de méthodes de dessin et
d'écriture dans les états Access.
III-A. Rectangles au coin arrondi.
Les rectangles et zones de texte des états Access ont des coins à angles droits. Ce que nous allons voir
ici c'est comment réaliser un rectangle avec des coins arrondis.
III-A-1. Le rectangle simple
En fait un rectangle aux coins arrondis est composé de 4 droites et de 4 quarts de cercles.
Le code suivant va vous permettre de créer un rectangle arrondi sur l'entête d'un état, dont le rayon sera de 200 twips,
et en plus on va mettre un titre à l'intérieur en le centrant.
| VBA |
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Dim strTexte As String
Const Pi = 3.14159265359
Me.ScaleMode = 1
Me.Circle (200, 200), 200, vbBlack, Pi / 2, Pi
Me.Line (200, 0)-(Me.ScaleWidth - 200, 0), vbBlack
Me.Circle (Me.ScaleWidth - 200, 200), 200, vbBlack, 0, Pi / 2
Me.Line (Me.ScaleWidth, 200)-(Me.ScaleWidth, Me.ScaleHeight - 200), vbBlack
Me.Circle (Me.ScaleWidth - 200, Me.ScaleHeight - 200), 200, vbBlack, Pi + Pi / 2,
|