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

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

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

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

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

Form.MouseWheel Event




آرگومان  Count در رویداد MouseWheel اگر غلطک ماوس به سمت جلو بچرخد یا Roll شود مثبت است و اگر به عقب رول شود عدد Count منفی است 


کد زیر تابعی نوشته شده با نام DoMouseWheel که دو آرگومان تعریف کرده یکی گرفتن Form و دیگری lngCount که بین رکوردها جابجا میشود اگر lngCount منفی باشد به رکورد قبلی و اگر مثبت شد به رکورد بعدی میرود با اکشن کامندها.



RunCommand acCmdSaveRecord
'Move back a record if Count is negative, otherwise forward.
RunCommand IIf(lngCount < 0&, acCmdRecordsGoToPrevious, acCmdRecordsGoToNext)
DoMouseWheel = Sgn(lngCount)



  [COLOR="Red"][B] End If[/B][/COLOR] 


رویداد KeyPress ، تبدیل کاراکتر به Upper Case یا حروف بزرگ : 


Private Sub ShipRegion_KeyPress(KeyAscii As Integer) 

 Dim strCharacter As String 

 ' Convert ANSI value to character string. 

 strCharacter = Chr(KeyAscii) 

 ' Convert character to upper case, then to ANSI value. 

 KeyAscii = Asc(UCase(strCharacter)) 

End Sub


KeyAscii For ArrowKeys : 

Left: 20

Down: 18

Right: 19

Up: 17


 : TabControl.KeyDown


در رویداد KeyDown تب کنترل میخواهید جابجاشدن در تب ها را با کد انجام دهید هرچند کلید میانبر Ctrl+Tab یا PageDown و  PageUp هم این کار را انجام میدهد و احتیاجی به نوشتن کدهای زیر نیست 


فرضا با استفاده از کلید ترکیبی Ctrl و Arrow Right یا  Arrow Lefr 


If (Shift And acCtrlMask) > 0 Then
Select Case KeyCode

    Case vbKeyRight

    KeyCode =0


اگر تب کنترل با نام TabCtl0 ساخته باشید ( می توانید از پراپرتی شیت کنترل در نمای دیزاین Name را تغییر دهید). 


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

TabMax=Tabctl0.Pages.Count

دوم متغیری تعریف می کنید که Value تب کنترل که فوکس گرفته را باضافه یک کند یعنی فرضا اگر روی تب 3 باشید به تب 4 سلکت شود ( Value کار انتخاب تب را انجام میدهد ) .

TabConut=TabCtl0+1

برای سلکت یا انتخاب تب پیج می نویسید

TabCtl0=TabCount

عدد صحیح فقط !!! پیج ایندکس تب اول را ملاحظه کنید از صفر شروع شده  ( برای لوپ زدن در تب پیج های باید بگوئید از صفر تا Pages.Count منهای یک ) 


حال تصور کنید فوکس روی تب اول با ایندکس صفر است شما کلید ترکیبی Ctrl و فلش سمت راست را می فشرید شروع به پیمایش میکند رو به جلو ( چون Value +1 میشود ) و به متغیر TabCount نیز اضافه میشود فرض کنید آخرین عدد پیج ایندکس یا Value برای این کنترل 6 باشد ، وقتی Value را برابر 7 قرار میدهد  ( TabConut=TabCtl0+1 ) اروری به شما داده میشود چرا چون ماکزیمم Value در تب 6 است پس برای فرار از این خطا می بایست بگوئید تا زمانی پیش برود که TabCount بزرگتر از TabMax باشد.


در کد زیر اگر TabCount بزرگتر از آخرین Value تب شد Reset یا صفر میشود و به اولین تب پرش میکند و از صفر شروع میکند و هر زمان به آخرین تب رسید و دوباره فلش راست را فشردید به تب اول میرود و ......


If  TabCount > TabMax Then
TabCount = 0
End If
TabCtl0 =TabCount


در Case VbKeyLeft باید بدین شکل تصور کنید که اگر Value کوچکتر از صفر شدمقدار TabCount  به TabMax تغییر کند و در نتیجه بعد از انتخاب تب صفر زمان فشردن دوباره فلش چپ تب آخر را انتخاب میکند 

در VbKeyRight شما Value را باضافه یک میکردید که انتخاب رو به جلو باشد در VbKeyLeft شما منهای یک میکنید تا رو به عقب تب انتخاب شود.

TabConut=TabCtl0-1


اگر بخواهید زمان رسیدن به انتخاب تب آخر همچنان با فشردن کنترل و فلش راست ، تب صفر را انتخاب نکند می توانید بگوئید TabCount=TabMax شود و در VbKeyLeft مقدار متغیر TabCount=0 شود.


ولی همانطور که گفته شد کلیدهای میانبر همین کار را انجام می دهند.


تنها کمی فکر کافیست !!!