Home
Home

--- Soumis par Dev Ashish---

Enlever le bouton de fermeture (X) des formulaires maximisés.

(Q)    Quand on maximise un formulaire, son bouton Close apparaît, même si on a expressément assigné la propriété voulue à Faux. Comment s'en débarasser?

(A)    L'apparence de ce bouton Close sur les formulaires maximisés est un comportement standard des fenêtres maximisées. Une solution est alors de soit ne pas maximiser le formulaire, soit, au lieu d'utiliser DoCmd.Maximize, utiliser la fonction fournie par Terry Kreft.

'*************************** Code Start ************************
'This code was originally written by Terry Kreft. 
'It is not to be altered or distributed, 
'except as part of an application. 
'You are free to use it in any application,  
'provided the copyright notice is left unchanged.
'Ce code fut originalement écrit par Terry Kreft. 
'Il ne doit être ni altéré, ni distribué
'sauf comme partie intégrée à une application.
'Vous êtes libre d'utiliser ce code 
'à la condition de laisser cette note, sans modification.
'
'Code courtesy of
'Terry Kreft
'
Type Rect
    x1 As Long
    y1 As Long
    x2 As Long
    y2 As Long
End Type
Declare Function IsZoomed Lib "user32" (ByVal hWnd As Long) As Long
Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal _
    nCmdShow As Long) As Long
Declare Function MoveWindow Lib "user32" (ByVal hWnd As Long, ByVal _
    X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight _
    As Long, ByVal bRepaint As Long) As Long
Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
'à utiliser plutôt que GetWindowRect
Declare Function GetClientRect Lib "user32" (ByVal hWnd As Long, lpRect _
    As Rect) As Long

Public Const SW_MAXIMIZE = 3
Public Const SW_SHOWNORMAL = 1

Sub MaximizeRestoredForm(F As Form)
    Dim MDIRect As Rect
    ' Si le formulaire est maximisé, le rapatrier
    If IsZoomed(F.hWnd) <> 0 Then
        ShowWindow F.hWnd, SW_SHOWNORMAL
    End If
    ' Obtient les coordonnée à l'écran et les dimensions de la fenêtre
    ' MDIClient.
    'Voici la ligne où on diffère
    GetClientRect GetParent(F.hWnd), MDIRect
    ' Déplace le formulaire au coin supérieur gauche de la fenêtre MDIClient,
    ' en  (0,0) et le redimensionne pour recouvrir exactement la fenêtre
    ' MDIClient.
    MoveWindow F.hWnd, 0, 0, MDIRect.x2 - MDIRect.x1, MDIRect.y2 - MDIRect.y1, True
End Sub
'*************************** Code End ************************