|
APIs: Manipuler la fenêtre d'Access |
Author(s) Dev Ashish |
|
(Q) Comment peut-on maximiser ou minimiser la fenêtre Access, depuis
le code?
(A) Fournir une des constantes déclarées à la fonction
fSetAccessWindow.
On peut utiliser cette fonction pour cacher la fenêtre Access et ne laisser que la fenêtre de votre application: s'assurer que cette dernière, votre formulaire, est
en mode PopUp et, dans sa procédure événementielle Open, appeler fSetAccessWindow
avec l'argument SW_HIDE.
Avertissement: Si vous
cachez la fenêtre maîtresse d'Access, s'assurer de bien gérer les codes d'erreur: la
fenêtre Access étant cachée, l'instruction END en cas d'erreur, dans le formulaire reportant
l'erreur, ne vous ramène pas sous Access, mais vous laisse bêtement devant votre propre
formulaire. On vous recommande d'utiliser fSetAccessWindow avec
SW_SHOWNORMAL comme étape finale lors de vos traitements d'erreur, dans ce cas. Si, pour
quelque raison que ce soit, la fenêtre Access ne se montre pas, vous pouvez toujours
fermer l'application depuis le "Task List" (Liste de tâches), disponible si
vous effectuez un (1) Control-Alt-Delete (sous NT, cliquer avec le bouton de droite sur
la Taskbar et choisissez le Task Manager), puis, sélection de la base de données et
cliquer sur le bouton pour terminer la tâche sélectionnée (End Task).
Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3
Private Declare Function apiShowWindow Lib "user32" _
Alias "ShowWindow" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Function fSetAccessWindow(nCmdShow As Long)
Dim loX As Long
Dim loForm As Form
On Error Resume Next
Set loForm = Screen.ActiveForm
If Err <> 0 Then
If nCmdShow = SW_HIDE Then
MsgBox "Cannot hide Access unless " _
& "a form is on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
Err.Clear
End If
Else
If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
MsgBox "Cannot minimize Access with " _
& (loForm.Caption + " ") _
& "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "Cannot hide Access with " _
& (loForm.Caption + " ") _
& "form on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
End If
End If
fSetAccessWindow = (loX <> 0)
End Function
|