Bonjour à tous,
Est il possible de fermer la fenêtre des propriétés lorsque le formulaire est en mode View?
Si oui comment faire par le code?
Merci d'avance pour votre aide
Bonjour à tous,
Est il possible de fermer la fenêtre des propriétés lorsque le formulaire est en mode View?
Si oui comment faire par le code?
Merci d'avance pour votre aide
Bonjour,
Ce code permet de fermer/ouvrir (alternativement) la fenêtre des propriétés.
(testé avec Access 2000, mais la compatibilité ascendante est assurée).
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.RunCommand acCmdProperties
Bonsoir,
voici une tentative de code pour le cas où on ne sait pas si la fenêtre propriétés est ouverte ou pas.
Il cherche la présence d'une fenêtre de classe "OArgDlg" crée par le même PID que celui qui a créé la fenêtre d'Access.
La sub a utiliser est ClosePropWind
A+
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
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 Option Compare Database Option Explicit Declare Function EnumWindows Lib "User32.dll" _ (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Declare Function GetClassName Lib "User32.dll" Alias "GetClassNameA" _ (ByVal Hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Integer) As Integer Declare Function GetWindowThreadProcessId Lib "User32.dll" _ (ByVal Hwnd As Long, ByRef lpdwProcessId As Long) As Long Declare Function IsWindowVisible Lib "User32.dll" (ByVal Hwnd As Long) As Boolean Type strucFindWndByPIDClass lngPID As Long strClass As String lngFoundHWnd As Long End Type Dim paramFindWndByPIDClass As strucFindWndByPIDClass ' EnumWindowsProc call-back function for FindWindowByPIDandClass ' Enumère toutes les fenêtres Private Function FindWndByPIDClassEnum(ByVal Hwnd As Long, ByVal lParam As Long) As Long Dim strSrchClass As String, lngSrchPID As Long Dim lngThread As Long, lngPID As Long Dim strBuff As String, strClass As String Dim RetVal As Long ' PID et Classe recherchés lngSrchPID = paramFindWndByPIDClass.lngPID strSrchClass = paramFindWndByPIDClass.strClass ' Par défaut on contunie l'énumération FindWndByPIDClassEnum = 1 ' On ne s'interesse qu'aux fenêtres visibles If IsWindowVisible(Hwnd) Then lngThread = GetWindowThreadProcessId(Hwnd, lngPID) strClass = String(256, vbNullChar) RetVal = GetClassName(Hwnd, strClass, 255) strClass = Left(strClass, RetVal) ' Si fenêtre est de la classe recherchée ' et a été créée par le PID recherché, on la ferme If lngPID = lngSrchPID And strClass = strSrchClass Then ' on arrête l'énumération FindWndByPIDClassEnum = 0 paramFindWndByPIDClass.lngFoundHWnd = Hwnd End If End If End Function '____________________________________________ Private Sub FindWndByPIDClass(lngCreatorPID As Long, strWndClass As String) paramFindWndByPIDClass.lngPID = lngCreatorPID paramFindWndByPIDClass.strClass = strWndClass paramFindWndByPIDClass.lngFoundHWnd = 0 EnumWindows AddressOf FindWndByPIDClassEnum, 0 End Sub '____________________________________________ Sub ClosePropWind() Dim lngAccessPID As Long ' Récupère le PID de cette instance d'Access GetWindowThreadProcessId Application.hWndAccessApp, lngAccessPID ' Cherche fenêtre propriétés FindWndByPIDClass lngAccessPID, "OArgDlg" ' Ferme la fenêtre If paramFindWndByPIDClass.lngFoundHWnd <> 0 Then DoCmd.RunCommand acCmdProperties End Sub
Evidemment... vu comme ça...
C'est trop beau ! C'est trop fort ! TRRROOOOOPPPPPPP.....Envoyé par LedZeppII
Bravo
P.S. Du coup j'ai noté cette discussion 5 étoiles (je voulais en mettre 10, mais je n'ai pas trouvé... )
Merci =JBO=
Un grand chapeau bas à toi aussi pour cette solution que je viens de (re)trouver.
Il me semblait bien avoir déjà vu quelque chose comme ça, mais impossible de le retrouver.
Du coup j'ai cherché autre chose, inspiré par tout ce que j'ai déjà pû voir sur ce forum.
J'ai quand même peiné pour trouver le nom de la classe de la fenêtre.
A+
Wow je me connecte et 3 solutions différentes!
Merci beaucoup Je pensais que je demandais l'impossible comme c'est souvent le cas
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager