ביטול כפתור סגירה (X) באקסס
-
מי מאיתנו כתב לא פעם אחת תוכנה באקסס ובטעות במקום לסגור טופס הוא סגר "בטעות" את כל התוכנה?
או שיותר גרוע שכבר נתת את התוכנה שכתבת ללקוח אך המזכירה בטעות לחצה על כפתור הסגור (X) של התוכנה במקום ב (X) של הטופס.
אז זהו גם לבקשתו של ClickOne אני מעלה את הקוד הבא:יש לבנות את הפונקציות הבאות:
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 Long, ByVal wEnable As Long) As Long Const MF_GRAYED = &H1& Const MF_BYCOMMAND = &H0& Const SC_CLOSE = &HF060& ' Public Function SetEnabledState(blnState As Boolean) Call CloseButtonState(blnState) Call ExitMenuState(blnState) End Function 'Disable the Menu Option Sub ExitMenuState(blnExitState As Boolean) ' Application.CommandBars("File").Controls("Exit").Enabled = blnExitState End Sub 'Disable the Close Button Option Sub CloseButtonState(boolClose As Boolean) Dim hWnd As Long Dim wFlags As Long Dim hMenu As Long Dim result As Long hWnd = Application.hWndAccessApp hMenu = GetSystemMenu(hWnd, 0) If Not boolClose Then wFlags = MF_BYCOMMAND Or MF_GRAYED Else wFlags = MF_BYCOMMAND And Not MF_GRAYED End If result = EnableMenuItem(hMenu, SC_CLOSE, wFlags) End Sub
את השגרה הבאה יש לכתוב בעת הפעלת התוכנה :
Call SetEnabledState(False)
פורסם במקור בפורום CODE613 ב04/11/2015 18:31 (+02:00)
-
קוד ל 64 ו 32 ביט כולל התניה
Option Compare Database 'התניה ל64 ביט #If VBA7 Then 'אם 64 ביט, הוספת המילה PtrSafe Private Declare PtrSafe Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _ ByVal bRevert As Long) As Long Private Declare PtrSafe Function EnableMenuItem Lib "user32" (ByVal hMenu As _ Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long #Else 'ל32 ביט 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 Long, ByVal wEnable As Long) As Long #End If Const MF_GRAYED = &H1& Const MF_BYCOMMAND = &H0& Const SC_CLOSE = &HF060& ' Public Function SetEnabledState(blnState As Boolean) Call CloseButtonState(blnState) Call ExitMenuState(blnState) End Function 'Disable the Menu Option Sub ExitMenuState(blnExitState As Boolean) ' Application.CommandBars("File").Controls("Exit").Enabled = blnExitState End Sub 'Disable the Close Button Option Sub CloseButtonState(boolClose As Boolean) Dim hWnd As Long Dim wFlags As Long Dim hMenu As Long Dim result As Long hWnd = Application.hWndAccessApp hMenu = GetSystemMenu(hWnd, 0) If Not boolClose Then wFlags = MF_BYCOMMAND Or MF_GRAYED Else wFlags = MF_BYCOMMAND And Not MF_GRAYED End If result = EnableMenuItem(hMenu, SC_CLOSE, wFlags) End Subוינברג
פורסם במקור בפורום CODE613 ב07/11/2015 22:59 (+02:00)
-
קיים גם אפשרות לבקש אישור ליציאה לפני כל ניסיון יציאה מהתוכנה,
מישהו יודע איך עושים את זה?on open:
Application.TempVars.Add "blnEnableClose", False
on unload: (כשמנסה לסגור)
Private Sub Form_Unload(Cancel As Integer) Dim toclose As String If Application.TempVars!blnEnableClose = False Then Cancel = True toclose = MsgBox("האם לסיים ולצאת", vbYesNo, "יציאה") If toclose = 6 Then Application.TempVars.Add "blnEnableClose", True DoCmd.Quit End If End If End Sub
פורסם במקור בפורום CODE613 ב19/09/2016 14:42 (+03:00)