ecannelora
Programmer
okay, I researched turning off the close button for reports, and here's what I have:
I think the key elements are in the Get and Let Property statements when I set hWnd = Application.Screen.ActiveReport.hWnd
My problem now is that it only turns off the Close button if the report is restored or minimized. If it's maximized, the button is still enabled. How can I turn it off when the Report is maximized?
please, please let me know if you have ideas or if you know how I can do it. I'm pretty frustrated.
thanks a lot!
eric
Code:
Option Compare Database
Option Explicit
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
ByVal bRevert As Long) As Long
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As _
Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Private Declare Function GetMenuItemInfo Lib "user32" Alias _
"GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As _
Long, lpMenuItemInfo As MENUITEMINFO) As Long
Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type
Const MF_GRAYED = &H1&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060&
[b]Public Property Get Enabled() As Boolean[/b]
Dim hWnd As Long
Dim hMenu As Long
Dim result As Long
Dim MI As MENUITEMINFO
MI.cbSize = Len(MI)
MI.dwTypeData = String(80, 0)
MI.cch = Len(MI.dwTypeData)
MI.fMask = MF_GRAYED
MI.wID = SC_CLOSE
[b] hWnd = Application.Screen.ActiveReport.hWnd[/b]
hMenu = GetSystemMenu(hWnd, 0)
result = GetMenuItemInfo(hMenu, MI.wID, 0, MI)
Enabled = (MI.fState And MF_GRAYED) = 0
End Property
[b]Public Property Let Enabled(boolClose As Boolean)[/b]
Dim hWnd As Long
Dim wFlags As Long
Dim hMenu As Long
Dim result As Long
[b] hWnd = Application.Screen.ActiveReport.hWnd[/b]
hMenu = GetSystemMenu(hWnd, 0)
If Not boolClose Then
wFlags = MF_BYCOMMAND Or MF_GRAYED
Else
wFlags = MF_BYCOMMAND And Not MF_GRAYED
End If
result = EnableMenuItem(hMenu, SC_CLOSE, wFlags)
End Property
I think the key elements are in the Get and Let Property statements when I set hWnd = Application.Screen.ActiveReport.hWnd
My problem now is that it only turns off the Close button if the report is restored or minimized. If it's maximized, the button is still enabled. How can I turn it off when the Report is maximized?
please, please let me know if you have ideas or if you know how I can do it. I'm pretty frustrated.
thanks a lot!
eric