• Disables or Enabled close button (x) Access
  • Disables or Enabled close button (x) Access

    Xuân Thanh > 03-07-12, 05:11 PM

    Theo yêu cầu của bạn ledangvan, toi gửi các bạn cách Disables hoặc Ennabled nút Close (dấu x) của Access

    1/ Bạn tạo một Class Modul, đặt tên là CloseCommand và chép đoạn code này vào

    Mã PHP:
    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 LongByVal wEnable As Long) As Long

    Private Declare Function GetMenuItemInfo Lib "user32" Alias _
       
    "GetMenuItemInfoA" (ByVal hMenu As LongByVal un As LongByVal 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&

    Public 
    Property Get Enabled() As Boolean
        Dim hwnd 
    As Long
        Dim hMenu 
    As Long
        Dim Result 
    As Long
        Dim MI 
    As MENUITEMINFO
        
        MI
    .cbSize Len(MI)
        
    MI.dwTypeData String(800)
        
    MI.cch Len(MI.dwTypeData)
        
    MI.fMask MF_GRAYED
        MI
    .wID SC_CLOSE
        hwnd 
    Application.hWndAccessApp
        hMenu 
    GetSystemMenu(hwnd0)
        
    Result GetMenuItemInfo(hMenuMI.wID0MI)
        
    Enabled = (MI.fState And MF_GRAYED) = 0
    End Property

    Public Property Let Enabled(boolClose As Boolean)
        
    Dim hwnd As Long
        Dim wFlags 
    As Long
        Dim hMenu 
    As Long
        Dim Result 
    As Long
        
        hwnd 
    Application.hWndAccessApp
        hMenu 
    GetSystemMenu(hwnd0)
        If 
    Not boolClose Then
            wFlags 
    MF_BYCOMMAND Or MF_GRAYED
        
    Else
            
    wFlags MF_BYCOMMAND And Not MF_GRAYED
        End 
    If
        
    Result EnableMenuItem(hMenuSC_CLOSEwFlags)
    End Property 

    2/ Tạo một modul mới và chép doạn code này vào

    Mã PHP:
    Option Compare Database
    Option Explicit

    Function InitApplication(intEnab As Boolean)
    On Error GoTo err_proc
    'Enabled or disables the MS application close (X) button - Dependant on state of intEnab
    '
    Uses Class Module 'Close Command'
    Const C_PROC_NAME "InitApplication"

       
    Dim C As CloseCommand
       Set C 
    = New CloseCommand
      
       C
    .Enabled intEnab
      
    exit_proc
    :
        Exit Function

    err_proc:
        
    MsgBox "Error in Function: '" C_PROC_NAME "'" Chr(13) & Err.Description
        Resume exit_proc

    End 
    Function 

    Khi sử dụng gọi InitApplication(False) để Enable và ngược lại

    Thân mến
  • RE: Disables or Enabled close button (x) Access

    ndthanh29 > 09-10-12, 10:55 PM

    Bạn có thể hướng dẫn kỹ hơn ko bạn? Đoạn code Module thứ 2 mình ko biết đặt tên gì?