Нихто |
Возможно эта апишка подойдёт:
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long С её помощью можно сделать кнопку неактивной MF_GRAYED (пробовал) или спрятать MF_DISABLED (не пробовал) |
Не получилось.... :(
Я делаю что-то не правильно?
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&
Const MF_BYCOMMAND As Integer = &H0
Const MF_GRAYED As Integer = &H1
Const MF_ENABLED As Integer = &H0
Sub DisableSysMenuClose()
Dim hwnd As Long
Dim hSysMenu As Long
Dim retVal As Long
Dim Count As Long
Dim wCaption As String
wCaption = String$(256, 0)
hwnd = GetActiveWindow
retVal = GetWindowText(hwnd, wCaption, 255)
wCaption = Left$(wCaption, retVal)
If InStr(1, wCaption, "Microsoft Excel", vbTextCompare) = 0 Then
Exit Sub
End If
hSysMenu = GetSystemMenu(hwnd, 0)
Count = GetMenuItemCount(hSysMenu)
Call RemoveMenu(hSysMenu, Count - 1, MF_REMOVE Or MF_BYPOSITION)
Call RemoveMenu(hSysMenu, Count - 2, MF_REMOVE Or MF_BYPOSITION)
End Sub
Private Sub Form_Load()
DoCmd.Maximize
DisableSysMenuClose
End Sub
автор |
А помойму самый лучший вариант.... |
Мне кажется, это не решает проблему. Допустим, главную форму я так и открываю. Затем, отурываю другую форму и максисизирую ее, затем, перехожу опять на главную. Вижу кнопку в меню и тыкаю в нее. Главная схлопывается... :(
В А2007 похоже, та же трабла, хотя, пока глубоко не копал. Просто, переход на 2007 потребует дополнительных временных затрат