ביטול כפתור סגירה (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)
-
לבקשתו של ClickOne אני מוסיף את קישור המקור
פורסם במקור בפורום CODE613 ב04/11/2015 18:37 (+02:00)
-
המודול נותן לי שגיאה (2 הפסקאות הראשונות של שם הפונקציה)
64 ביט - קשור?פורסם במקור בפורום CODE613 ב06/11/2015 09:15 (+02:00)
-
כן,
יש קשר
תצטרך להוסיך התניה בקוד שיבדוק אם האקסס הוא בגרסת 32Bit או 64Bit.
אני מצרף לך קישור שמראה איך לבדוק אם זה 32Bit או 64Bit.פורסם במקור בפורום CODE613 ב06/11/2015 14:25 (+02:00)
-
מצאתי שם את ההתאמה ל64 אבל לא את ההתניה
פורסם במקור בפורום CODE613 ב07/11/2015 21:50 (+02:00)
-
צריך לכתוב את ההתניה
לא היה זמן ביום שיש ואין לי אקסס 64Bit לכן אין לי גם איך לבדוק את זהפורסם במקור בפורום CODE613 ב07/11/2015 22:15 (+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)
1/9