Bonjour,
Je cherche un moyen pour tester la présence ou non des scrollbars de la fenêtre Access.
Merci de votre aide.
Bonjour,
Je cherche un moyen pour tester la présence ou non des scrollbars de la fenêtre Access.
Merci de votre aide.
[Access] Les bases du débogage => ici
Dans la contribution http://www.developpez.net/forums/d35...registrements/ tu trouveras le code qui applique des scrollbars quand la hauteur du form dépasse la hauteur de la fenetre.
Bonne pêche
![]()
Bonjour,
As-tu un besoin particulier nécessitant le test des scrollbars ?
Sinon, il serait (peut-être) mieux de les afficher ou non en fonction d'une condition
Généralement, l'utilisation d'un scrollbar répond à un besoin....
Bonsoir,
Si tu parles des barre de défilement de la fenêtre de l'application Access,
voila ce que j'ai trouvé, qui fonctionne avec 2003 mais pas avec 2007 et + :
[correction]Fonctionne dans 2007. Merci micniv pour avoir testé.[/correction]
A+
Code vb : 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Option Compare Database Option Explicit ' == début déclarations =================================== ' Trouver Handler d'une fenêtre fille par sa classe Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _ ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _ ByVal lpszClass As String, ByVal lpszWindow As String) As Long ' --- Style Fenêtre --------------------------------------- Private Const WS_HSCROLL As Long = &H100000 Private Const WS_VSCROLL As Long = &H200000 ' --- Get/Set WindowLong ---------------------------------- Private Const GWL_STYLE As Long = -16 ' --- GetWindowLong --------------------------------------- Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Integer) As Long ' == fin déclarations ===================================== ' --- La fenêtre client MDI a-t-elle une barre de défilement ' verticale ? Function MDIhasVtlSB() As Boolean Dim lgMDIProp As Long, hWndMDIClientWindow As Long hWndMDIClientWindow = FindWindowEx(Application.hWndAccessApp, 0, "MDIClient", "") lgMDIProp = GetWindowLong(hWndMDIClientWindow, GWL_STYLE) MDIhasVtlSB = CBool(lgMDIProp And WS_VSCROLL) End Function ' --- La fenêtre client MDI a-t-elle une barre de défilement ' horizontale ? Function MDIhasHrzSB() As Boolean Dim lgMDIProp As Long, hWndMDIClientWindow As Long hWndMDIClientWindow = FindWindowEx(Application.hWndAccessApp, 0, "MDIClient", "") lgMDIProp = GetWindowLong(hWndMDIClientWindow, GWL_STYLE) MDIhasHrzSB = CBool(lgMDIProp And WS_HSCROLL) End Function
Merci pour vos réponses, mais il ne s'agit pas des scrollbars d'un formulaire ou d'un état mais des scrollbars de la fenêtre Access.
J'arrive à dimensionner mon formulaire (créé dynamiquement, selon le résultat d'un recordset) presque comme je veux :
1 - je dimensionne les colonnes en fonction de la largeur des données et de l'entête
2 - je dimensionne le formulaire selon la largeur et la hauteur totale des données (avec les scrollbars du formulaire si besoin)
3 - je centre le formulaire sur la fenêtre Access
4 - enfin, je retaille si ça ne rentre pas dans la fenêtre Access.
Mais si les scrollbars d'Access sont présents, la zone d'affichage est plus petite que ce qui est calculé. Il faudrait donc que je sache si les scrollbars sont présentes ou non afin d'en tenir compte dans mon calcul de taille de mon formulaire.
Voilà, voilà.
Edit : Le bout de code de LedZepp II m'a l'air pas mal. A tester demain ...
(mais dommage que ça ne fonctionne pas avec Acc07 ...)
[Access] Les bases du débogage => ici
Apparemment, bonne nouvelle : le code de Ledzep marche sous ACC2007 !
Pour infos : on a des scrollbars seulement si on affiche les formulaires en mode superposés mais il n'y en en pas en mode Onglet (configurerable dans les options -base active)
![]()
Testé et approuvé.
C'est nickel.![]()
[Access] Les bases du débogage => ici
Bonsoir,
Ah ben oui, tiens, ça fonctionne avec 2007.
J'ai fait une mauvaise supposition.
Il y a deux type de barres de défilement (cf About Scroll Bars).
Celles qui font partie du style de la fenêtre et celles qui sont créées en tant que contrôles (=fenêtre enfant).
Quand j'ai listé les fenêtres enfants (ça peut être de vrais fenêtres ou bien des contrôles) de la fenêtre client MDI,
j'ai trouvé deux fenêtres enfants de classe NUIScrollbar.
L'une avait comme titre Horizontal et l'autre Vertical.
J'étais persuadé que dans Access 2007 c'étaient elles les barre de défilement de l'application.
Et comme mon code teste les attributs de style, je me suis dit que ce n'était pas applicable à Access 2007.
ErreurJ'aurais du essayer quand même, comme micniv.
A+
Partager