Bonjour,
Dans une application réaliséeavec ACCESS 2013, 32 bits, j'ai un état qui comprend différents éléments dont des graphiques générés avec une fonction , et un autre qui est un objet MSGRPH8. Suivant le paramètrage d'affichage écran du PC utilisé (100% ou 150%) mon graphique ne s'affiche pas dans la totalité de la zone du contrôle, les autres objects de l'état ne sont pas affecté par ce paramètrage. J'ai recherché le facteur d'échelle en l'appliquant au contrôle je change aussi les dimensions du contrôle. J'ai donc essayé de l'affecté au graphique avec le code suivant :
Mon graphique ne s'affiche plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub Report_Load() Dim hdc As LongPtr Dim dpi As Long Dim scaleFactor As Double ' Obtenir le contexte de l'appareil hdc = GetDC(0) ' Récupérer le DPI dpi = GetDeviceCaps(hdc, LOGPIXELSX) ' Libérer le contexte de l'appareil ReleaseDC 0, hdc ' Calculer le facteur d'échelle (par exemple, pour un DPI de 96 = 100% d'échelle) scaleFactor = dpi / 96 MsgBox (scaleFactor) ' Définir les dimensions du contrôle contenant le graphique Dim ctlGraph As Object Set ctlGraph = Me!Graphique47 'affecte le controle contenant le graphique ' Définir les dimensions du graphique à l'intérieur du contrôle ctlGraph.Object.Width = ctlGraph.Width * 1.5 ' Ajuste la largeur du graphique ctlGraph.Object.Height = ctlGraph.Height * 1.5 ' Ajuste la hauteur du graphique End Sub
J'ai aussi mis le code suivant :Je n'arrive pas à savoir si j'ai une erreur de syntaxe ou plutôt de méthode pour traiter le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Option Compare Database Option Explicit Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hdc As LongPtr, ByVal nIndex As Long) As Long Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As LongPtr, ByVal hdc As LongPtr) As Long Private Const LOGPIXELSX As Long = 88 ' DPI horizontal Private Const LOGPIXELSY As Long = 90 ' DPI vertical
Merci pour toute aide




Répondre avec citation



Partager