کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

غیرفعال کردن کلوز باتن پنجره ی اکسس ( Disable Close In Access Window )

User31.dll


اکسس برای فرم ها و گزارشات خاصیتی رو اعمال کرده ولی برای  باتن کلوز اپلیکیشن اکسس تابعی وجود ندارد و با توابع API  اینکار امکانپذیر است که باید تابعی نوشت و زمان لود شدن فرم اصلی آنرا فراخوانی نمود .


WM_SYSCOMMAND message


یک پنجره وقتی که یوزر کامند را از پنجره ی منو انتخاب میکند این پیام را دریافت میکند 


 

SC_CLOSE=&HF060&  ' Close The Window

SC_MAXIMIZE=&HF030&  ' Maximize The Window 

SC_MINIMIZE=&HF020& ' Minimize The Window

MF_BYCOMMAND=&H0&      ' Indicates that the uPositi

parameter gives the identifier of the menu item

غیرفعال کردن آیتم منو و خاکستری کردن آن بطوریکه نشود انتخاب کرد 

MF_GRAYED=&H1&   ' Disables the menu item and grays it so that it cannot be selected.


Window Styles

WS_MAXIMIZEBOX=&10000

WS_MINIMIZEBOX=&20000

پنجره در نوار عنوان منودارد که میتوان با این آیتم آنرا برداشت هم کلوز هم باکس Min و Max

WS_SYSMENU=&80000  ' The window has a windomenu

on its title bar.

WS_BORDER=&800000


GetSystemMenu hWnd(A handle to the window that

will own a copy of the window menu.),bRevet(it can be 

modified. If this parameter is TRUE)


تابع بالا برنامه را برای دسترسی به منوی پنجره (همچنین به عنوان منوی سیستم یا منوی کنترل) برای کپی کردن و اصلاح، فعال می کند.

  نام فرم یا اپلیکیشن اکسس  =hWnd

تابع بالا= hMenu


تابع زیر آیتم منوی مشخص شده را فعال یا غیرفعال می کند.


EnableMenuItem hMenu,uIDEnableItem(The menu

item to be enabled, disabled, or grayed : Like )

(SC_CLOSE),uEnable(MF_GRAYED)



FORM.hWnd

شما می توانید از ویژگی hWnd برای تعیین دسته (یک مقدار Integer Long Integrated) که مایکروسافت ویندوز را به پنجره فعلی اختصاص داده است، استفاده کنید.


مثال زیر از ویژگی hWnd با عملکرد API و تابع IsZoomed برای تعیین اینکه آیا یک پنجره Maximize می شود استفاده می شود.


Declare Function IsZoomed Lib "user32" (ByVal hWnd

As Long) As Long


()Sub Form_Activate

Dim intWindowHandle As Long

intWindowHandle = Screen.ActiveForm.hWnd

If Not IsZoomed(intWindowHandle) Then DoCmd.Maximize 
End If 
End Sub


تغییر رنگ پس زمینه رکوردهای اکسس ( Alternate Back Color )


باز کردن فرم یا گزارش در نمای دیزاین باز کردن پراپرتی سکشن Detail رفتن به تب Format و انتخاب گزینه های انتخابی  خاصیت  AlterNate Back Color  که اگر None شود رنگ پیش زمینه برداشته میشود .


راهنمای انجام کار سایت آفیس به آدرس ذیل  .... و سطرهای آخر


 https://support.office.com/en-us/article/change-the-appearance-of-a-control-by-using-conditional-formatting-6ba9e9fa-4347-4183-b335-44e43b05e22ff

مخفی کردن پنجره ی اکسس ( Hide Access Window )


استفاده از توابع ویندوز API 

در اکسس تابعی برای این موضوع در نظر گرفته نشده ولی میشود با این توابع و هندل کردن ویندو پنجره ای را بست کامند باتن هایی که در Title Bar هست را برداشت مثل خاصیت MinMax Button =No در پراپرتی شیت فرم اکسس  ، یا تغییر پوزیشن نمایش Msgbox  سیستمی  و یا Icon را در Title Bar فرم انداخت ویا پوزیشن پنجره را تغییر داد و خیلی کارهای دیگر یا حتی گرفتن تکست در Title Bar که همان Caption هست و یا تغییر 


Declare Function ShowWindow Lib "User32" ( Byval Hwnd As Long , Byval ncmdShow As Long ) As Long 



نحوه ی نگارش تابع در ( Win64 و Win32 )  فرق میکند و باید  در Win64 قبل از فانکشن Ptrsafe را قرار داد و کل دیتا تایپ Long در تابع به LongPtr تبدیل  شوند  اگر باید در هر دو 32 بیت و 64 کار کند باید از if Win64 Then # و Else .. End If استفاده کرد که قبل از Else با PtrSafe و LongPtr طبق روش بالا و برای بعد از  Else همان تابع بدون PtrSafe و Long قرار می گیرد 


Hwnd نام کنترل مثلا  فرم یا اپلیکیشن اکسس ؛ مثلا در اکسس  


 نکته : قبل از گذاشتن تابع زیر جهت مخفی شدن پنجره ی اصلی اکسس حواستان باشد در رویداد کلوز فرم حتما دستور خروج از اپلیکیشن که Quit هست با Docmd را بدهید وگرنه برای بستن باید از Task Manager ویندوز استفاده کنید چون برنامه ی شما هنوز باز است و ویندوز تنها با دریافت مسیج حاصل از زدن دکمه ی کلوز پنجره ی اصلی اپلیکیشن اکسس را خواهد بست !!!


ShowWindow Application.hWndaccessApp , 0 


Hide  0 

Normal 1

Minimized 2

Maximized 3