Спрятать или нейтрализовать кнопку restore window на maximized форме

Rivkin Dmitry
Дата: 28.02.2008 12:07:47
Собственно, сабж
А2003 adp.

Главная форма без рамки и всех кнопок (controlbox - no, MinMaxButton - 0, closebutton - no), MenuBar = "MyMenu". Открываю maximize. В правом верхнем углу появляется кнопка "restore window". Достаточно было бы нейтрализовать событие на ней, но пока ничего не получается. Ничего толкового и не нашел в и-те. Предложения не пользовться maximize, а расскрывать форту максимально мне не очень подходят.
Странно, что в А97 такой проблемы не было.
Видел предложение открыть форму поп-ап, но она на maximize перекрывает весь тулбар. И, главное, перекрывает отчеты. Ее надо прятать и вновь открывать при закрытии отчета. Это тоже меня не устраивает.
Наверное, API можно убить кнопку, но что-то не нашел пока код
CtrlAlt
Дата: 28.02.2008 12:13:53
Это особенность MDE.
Если любое дочернее окно открыто в Maximize, все остальные окна автоматически раскрываются (даже если у них закрыто это свойство, например Dialog).
Так что дело не в Access а в Windows. Совет - сделать popup - делает окно не типа Child, поэтому оно может распахиваться независимо (но зато на полный экран).
Kreol2009
Дата: 28.02.2008 12:21:19
а почему просто сделать ширину и длину заданой? зачем махимизед делать
Rivkin Dmitry
Дата: 28.02.2008 12:25:16
Со всем уважением к ответившим, я что-то неточно или непонятно написал в топике?
Kreol2009
Дата: 28.02.2008 12:43:26
вообще-то махсимизед подразумевает открытие на всю видимость окна. а ты ее хочешь сделать чтоб она не закрывала что-то. Вообще переходи на 2007 офис, там есть свойство которое убирает все кнопки. пример:
Нихто
Дата: 28.02.2008 12:45:42
Возможно эта апишка подойдёт:
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

С её помощью можно сделать кнопку неактивной MF_GRAYED (пробовал) или спрятать MF_DISABLED (не пробовал)
бухой бык
Дата: 28.02.2008 12:56:43
Rivkin Dmitry
Предложения не пользовться maximize, а расскрывать форту максимально мне не очень подходят.
А помойму самый лучший вариант....
Rivkin Dmitry
Дата: 28.02.2008 14:13:35
Нихто
Возможно эта апишка подойдёт:
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 потребует дополнительных временных затрат
бухой бык
Дата: 28.02.2008 14:16:37
>Вижу кнопку в меню и тыкаю в нее.
какую кнопку??
Rivkin Dmitry
Дата: 28.02.2008 14:31:47
бухой бык
>Вижу кнопку в меню и тыкаю в нее.
какую кнопку??

Вот енту: