ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
به گزارش سایت خبری تحلیلی ساعدنیوز به نقل از روزیاتو، آنی شارلوت ۲۳ ساله، اهل شهرستان ساری انگلیس، وقتی در ۱۶ سالگی برای معاینه پیش پزشک زنان رفته بود معلوم شد به دو رحمی (Uterus Didelphys) دچار است.
زنانی که به این پدیده پزشکی دچارند در صورت داشتن شرکای جنسی متعدد ممکن است همزمان از ۲ مرد مختلف باردار شوند.
۱۸ دیماه ۱۴۰۱ :
روزنامه آرمان امروز از رونق بازار اجاره کارت ملی برای معامله خودرو در بورس کالا گزارش دارد. به نوشته این روزنامه کارت های ملی تا ۱۰۰ میلیون تومان اجاره داده میشوند! .... دلالان همه جا هستند ، سکه دلار بورس کالا
Class Module Name : clsmMouseWheel
Private frm As Object
Private intCancel As Integer
Public Event MouseWheel(Cancel As Integer)
' Because Form is object use set
Public Property Set Form(frmm As Object)
Set frm=frmm
End Property
Public Property Get MouseWheelCancel() As Integer
MouseWheelCancel=intCancel
End Property
Public Sub RaiseMouseWheel()
RaiseEvent MouseWheel(intCancel)
End Sub
در استاندارد ماژول ، متغیری به صورت Public تعریف می شود که در تمام رویه ها بتوان استفاده کرد حتی در سایر استاندارد ماژول ها ( یعنی در تمام رویدادهای فرم و گزارش می توان از این متغیر استفاده کرد حتی در کنترل تکست باکس یا قسمت تکست باکس کنترل کمبو باکس مثل ایجاد TempVars .... و این متغیر به کلاس ماژول ساخته شده متصل می شود.نام استاندارد ماژول را MouseWheel می نامیم
Public cMouse As clsmMouseWheel
در قسمت ویژوال فرم مورد نظر عبارت زیر نوشته می شود.بالاتر از هر تعداد Event که در رویه وجود دارد.
Private WithEvents clsMouseWheel As MouseWheel.clsmMouseWheel
باید متغیر های WithEvents را بعنوان متغیرهای آبجکت اعلام کنید تا بتوانند نمونه های کلاس را پذیرش کنند . با این حال نمی توان آنها را بعنوان Object اعلام کرد . باید آنها را به عنوان کلاس خاصی که می تواند رویدادها را مطرح کند ، اظهار نمائید.
شئ هایی که از روی کلاس ساخته میشوند را یک نمونه (Instance) از آن کلاس مینامند.
WithEvents مشخص میکند که یک یا چند متغیر عضو اعلام شده به نمونه ای از یک کلاس اشاره می کند که می تواند رویدادها را افزایش دهد.
فرضا می خواهید رویدادهایی ( رویدادها را می دانید ) که برای کنترل webbrowser وجود دارد را اجرا کنید با WithEvents متغیری را تعریف می کنید که به آن کلاس ماژول متصل شود و بعد یک رویه می نویسید.
در رویداد لود فرم باید متغیر تعریف شده بالا را به کلاس ماژول نوشته شده تنظیم کرد
Set clsMouseWheel=New MouseWheel.clsmMouseWheel
Set clsMouseWheel.Form=Me
در اینجا می توان تابعی که در استاندارد ماژول تعریف کردید را اجرا کنید مثل
clsMouseWheel.SubMsgForm
در رویداد کلوز فرم :
فرضا اجرای تابعی از استاندارد ماژول مثلا برای قطع زنجیره ارتباطی
Set clsMouseWheel.Form=nothing
Set clsMouseWheel=Nothing
Private Sub clsMouseWheel_MouseWheel(Cancel As Integer)
Msgbox " Hello"
Cancel=True
End Sub
hook کردن یا به زنجیر کشیدن پنجره برای ارسال پیام های ویندوزی
برای hook کردن پنجره از تابع SetWindowLongPtrA استفاده کنید
HookForm :
SetWindowLongPtrA
oldWndProc
frm.hwnd GWL_WNDPROC AddressOf WndProc
Set Mouse=Me
برای قطع اتصال به پنجره باید Unhook کرد با استفاده از همان تابع ( البته از توابع SetWindowsHookA برای تنظیم این زنجیره و قطع آن با UnHookWindowsHookEx استفاده می کنند.) که در پارامتر lparam تابع oldWndProc جایگزین می شود.
تابعی هم برای پارامتر دوم تابع SetWindowLongPtrA می نویسید که اینجا wndProc نامیده شده یا می توانید نام آنرا WindowsHook بگذارید . که شامل چهار آرگومان hwnd Msg wParam lParam است.اولی هندل پنجره را مشخص میکند که دیتاتایپ آن در ویندوز 64 بیت LongPtr است
Public Function WndHookProc(ByVal hWnd As LongPtr,ByVal wParam As LongPtr,ByVal lParam As LongPtr) As Long
Select Case Msg
Case WM_MOUSEWHEEL
WndHookProc=CallWindowProc(oldWndProc,hWnd,Msg,wParam,lParam)
Case Else
WndHookProc=CallWindowProc(oldWndProc,hWnd,Msg,wParam,lParam)
End Function
MouseWheel ( Page , Count ) در اکسس
آرگومان 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 شود.
ولی همانطور که گفته شد کلیدهای میانبر همین کار را انجام می دهند.
تنها کمی فکر کافیست !!!