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

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

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

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

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

مخفی کردن پنجره ی اکسس ( 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 


استفاده از پراپرتی ActiveControl با آبجکت Screen جهت مشخص کردن یا ارجاع به کنترلی که فوکس دارد Screen.ActiveConteol


مثال زیر اکتیو کنترل را به متغیر ctlCurrentControl تخصیص میدهد و اعمال خاصی را بسته به  Value ی خاصیت Name  کنترل  فوکس داده شده انجام میدهد.


 Dim ctlCurrentControl As Control

Set ctlCurrentControl=Screen.ActiveControl

If ctlCurrentControl.Name="txtCustomerId" Then

انجام عمل خاصی  وقتی فوکس به تی اکس تی کاستمرآیدی برسد

"ElseIf ctlCurrentControl.Name="btnCustomerDetail

 Then 

انجام عمل خاصی وقتی فوکس به باتن کاستمر دیتیل برسد 

End If


تذکر :  اگر فوکس  به کنترلی انجام نشود در حال استفاده از   ActiveControl یا  اگر تمام کنترل های فرم هاید یا  غیرفعال  شوند  خطا اتفاق می افتد