با عرض سلام
چطور در vba می توان دکمه وسط mouse را کنترل کرد
از توجه شما سپاسگزارم
Printable View
با عرض سلام
چطور در vba می توان دکمه وسط mouse را کنترل کرد
از توجه شما سپاسگزارم
در اکسس 2002 XP رخداد ماوس اسکرول وجود دارد
متشکرم از توجه شما
در اکسس 97 چطور ؟
اگر نه - آیا اکتیو ایکسی سراغ دارید که scroll در دکمه وسط موس را کنترل کند ؟
موفق باشید .
در VB6 امتحان کرده ام ولی جوابی نگرفته ام، فکر هم نمی کنم اکتیو ایکسی بتوانی پیدا کنی، ولی حال چرا حتماً اکسس 97 و همین طور چگونه استفاده ای برای دکمه وسط ماوس دارید!
چون در فرمهای اکسس 97 وقتی اسکرول موس (دکمه وسط) حرکت میکند رکوردهای روی فرم هم به حرکت در می آیند ومن می خواهم که اسکرول را کنترل نمایم
چون در فرمهای اکسس 97 وقتی اسکرول موس (دکمه وسط) حرکت میکند رکوردهای روی فرم هم به حرکت در می آیند ومن می خواهم که اسکرول را کنترل نمایم
سلام
من در اکسس 2003 نیز به این مورد برخورد کرده ام و نتوانستم مشکل را حل کنیم چون با دکمه وسط موس اسکرول بر روی رکوردها اتفاق می افتد در صورتی که در برنامه نمی خواهم این اتفاق بیفتد لطفا اگر کسی در این مورد اطلاعاتی دارد مرا یاری نماید
من هم همین مشکل رو دارم
این رخداد کجا هست؟نقل قول:
نوشته شده توسط منصور بزرگمهر
اسم دقیق پروپرتی مورد اشاره On Mouse Wheel هستش.
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long) 8
End Sub 8
چطور میشه غیر فعالش کرد؟؟
من یه راه مسخزه پیدا کردم ببینید شاید به دردتون خورد
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)8
8 If Count = -3 Then
8 DoCmd.GoToRecord , , acNext
8 ElseIf Count = 3 Then
8 DoCmd.GoToRecord , , acPrevious
8 End If
End Sub8
راه دیگه ای نیست؟
اینم راه حلش
در مورد این فایل نظری ندارید ؟
سلامنقل قول:
نوشته شده توسط شاپرک
از فایلتون واقعا خوشم اومد خیلی جالب بود .میشه لطف کنید توضیح بدید بعد از اینکه فایل DLL رو در پوشه windows کپی کردم چکار کنم؟
با تشکر فراوان و آرزوی موفقیت روزافزون
شاپرک جان بهترین روش اینه که برنامه هاتو unbound بنویسی تا هم کنترل بیشتری روش داشته باشی و هم اینکه کمک کنی اطلاعات درست و بصورت کامل وارد بشه منظورم اینه وقتی bound کار میکنی وقتی کاربر یه فیلد رو وارد کنه براحتی میتونه به رکورد بعدی بره و این یعنی اضافه شدن یه عالمه رکورد ناقص و به همین علت گزارش های پر ایراد.
اول بگم که این برنامه من نبود من خودمم گشتم و از سایت دیگه پیداش کردم اما برام جالب بود آخه هیچ کس جوابی براش نداشت .
جناب Zardros : میتونی تو همون مسیری که برنامه ات هست کپی کنی من امتحان کردم
ممنونم از راهنمایی شما آقای صارمی بله کاملا درسته من دقیقا به همین نتیجه رسیدم امیدواریم بتونیم در این زمینه از تجربیات شما استفاده کنیم *** مثل همیشه ***
می شه یه بزرگوار در مورد unbound یه توضیحی بده . آیا منظور اینه که یه فرم از روی جدولمون بسازیم اما اجزای توی فرم رو controlSource ش رو تعین نکنیم و وقتی فرم کامل شد توی یه دگمه save اول recordsource رو تعیین کنیم و ....نقل قول:
نوشته شده توسط sarami
اگه برداشت من غلطِ لطفا واضحتر یکی عنایت بکنه ممنون می شم .
خسته نباشید .لطفا کمکم کنید
خوب پس آخرش چی شد ؟برای این پروپرتی On Mouse Wheel چیکار کنیم؟
شاپرک جان من روش شما رو متوجه نشدم.میتونی راحت تر توضیح بدی
شاید با استفاده از رخداد On Mouse Wheel بتونی مشکلت رو حل کنی.
اگر راهش رو پیدا کردی به منم بگو!
من روش شاپرک رو تست کردم اما جواب نداد
اگه دوستانم راهی بلدن ممنون میشم
تو این سایتها توضیحاتی داده :
http://www.databasedev.co.uk/disable_mousewheel.html
http://www.lebans.com/mousewheelonof...MouseWheelHook
سرانجام با مطالعه همون سایتهایی که تو پست قبلی گفتم موفق شدم :
فایل ضمیمه را دانلود کنید ( یا می توانید فایل جناب شاپرک را از پست 14 دانلود کنید )
فایل MouseHook.dll را به مسیر C:\WINDOWS\system (یا به همان جایی که فایل برنامه تان قرار دارد) کپی کنید
فایل برنامه خود را باز کنید و ماژول modMouseHook را از فایل اکسس ضمیمه شده ، به فایل خودتان import کنید
این هم کدهای مربوط به Load و Unload فرمی که می خواهید دکمه وسط موس در آن فرم غیر فعال شود :
Private Sub Form_Load()
Dim blRet As Boolean
blRet = MouseWheelOFF(False)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim blRet As Boolean
blRet = MouseWheelON
End Sub
ساده ترين روشي كه پيدا كردم..........يك كد بر روي رخداد open فرم...و چند تا ماژول
من راهها بالا رو امتحان کردم
روشهایی که به api ها مربوط می شه توی همه ورژن ها کار نمی کنه
ولی روشی که توی پست 12 ارائه شده عالیترین و راحت ترین روشه حتی توی office 2013 اونم 64 بیتی.
من با کمی اصلاح دوباره می ذارمش
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
If Count >= 1 Then
DoCmd.GoToRecord , , acNext
ElseIf Count <= -1 Then
DoCmd.GoToRecord , , acPrevious
End If
End Sub
در روش فوق مقدار count رو از تعداد wheel mouse که توی کنترل پنل قایل دسترس هست گرفته می شه که من اون رو به 1 و 1- تغییر دادم تا حتی اگه کسی اومد مقدار رو کم و زیاد هم کرد (برای تغییر حساسیت) بازم کد کار کنه
در ضمن با عوض کردن - و بی علامت 1 در حقیقت با بالا و پایین بردن اسکرول موس فرم به رکورد بعدی و قبلی می رود
که من بنابر نیاز خودم کد رو در پست 12 برعکس کردم
ممنون از فرستنده با درایت پست 12