Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Vba Добавлено: 30.05.09 19:40  

Автор вопроса:  Tolik-ezhik
Програмисты помогите. Как сделать кнопку закрыть на форме неактивной?

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #1
Добавлено: 30.05.09 20:53
Совсем надежного способа нет (в случае открытия этого же документа возникнут проблемы), а так вот
  1.        Option Explicit
  2.       Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, _
  3.       ByVal wFlags As Long) As Long
  4.       Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
  5.       Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, _
  6.       ByVal lpWindowName As String) As Long
  7.       Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
  8. Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
  9.       Private Const MF_BYPOSITION = &H400&
  10.       Const MF_REMOVE = &H1000&
  11.        
  12.       Private Sub UserForm_Initialize()
  13.           Dim lHwnd As Long, hSysMenu As Long, nCnt As Integer
  14.           lHwnd = FindWindow("ThunderDFrame", UserForm1.Caption)
  15.           Do While lHwnd = 0
  16.               lHwnd = FindWindow("ThunderDFrame", UserForm1.Caption)
  17.               DoEvents
  18.           Loop
  19.         hSysMenu = GetSystemMenu(lHwnd, False)
  20.         If hSysMenu Then
  21.             nCnt = GetMenuItemCount(hSysMenu)
  22.             If nCnt Then
  23.                 RemoveMenu hSysMenu, nCnt - 1, MF_BYPOSITION Or MF_REMOVE
  24.                 RemoveMenu hSysMenu, nCnt - 2, MF_BYPOSITION Or MF_REMOVE
  25.             End If
  26.         End If
  27.       End Sub


Или более просто способ, но не такой красивый))
  1. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  2.     If CloseMode = vbFormControlMenu Then
  3.         Cancel = 1
  4.         MsgBox "Òàê çàêðûòü íåëüçÿ"
  5.     End If
  6. End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам