Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Thủ Thuật] Disables or Enabled close button (x) Access
#1
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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan
#2
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ì?
Chữ ký của ndthanh29 Xin chào, mình là ndthanh29, Tham gia http://thuthuataccess.com/forum từ ngày 08-10 -12.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Thủ Thuật] Demo Dọn rác 1 tháng 1 lần (Mọi phiên bản Access) maidinhdan 15 2,852 31-03-17, 12:20 AM
Bài mới nhất: kieu manh
  nén file Access bằng VBA Noname 17 6,888 30-03-17, 05:51 PM
Bài mới nhất: maidinhdan
  Ngăn chặn không cho Access tự động lưu record Xuân Thanh 17 6,460 22-03-17, 01:12 PM
Bài mới nhất: trangdv.pchg
  [Thủ Thuật] Hỏi_Xác định phiên bản Access đang dùng maidinhdan 2 606 10-03-17, 10:11 AM
Bài mới nhất: vulhu06
  Lấy về số seri CPU, ổ cứng MainBoard trong Access Noname 33 13,368 08-06-16, 11:23 PM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ