تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 10 از 10

نام تاپيک: تعيين مختصات ماوس از داخل usercontrol

  1. #1
    پروفشنال ULF_VB6's Avatar
    تاريخ عضويت
    Feb 2007
    پست ها
    591

    14 تعيين مختصات ماوس از داخل usercontrol

    سلام به همه دوستان عزيز
    من مي‌خوام يه ocx بنويسم كه وقتي ماوس روي اون قرار مي‌گيره شكل اون تغيير مي‌كنه و وقتي از محدوده كنترل خارج شد شكلش به حالت اول برگرده.
    حالا مشكل اينجاست كه نمي‌دونم چجوري بايد مشخص كنم كه كرسر روي كنترل قرار داره يا نه؟
    اگه راهنماييم كنيد ممنون مي‌شم.
    البته مطمئنم كه مي‌شه همچين كاري رو انجام داد ولي چجوريش رو نمي‌دونم. چون كنترل‌هايي هستن كه اين‌كار رو انجام مي‌دن.

  2. #2
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2007
    پست ها
    18

    پيش فرض

    در کد مربوط به UserControl کد زیر را وارد کنید و به جای 3شماره شکل مورد نظر خودتون رو بگذاری.
    Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    UserControl.MousePointer = 3
    End Sub
    موفق باشید.

  3. #3
    پروفشنال ULF_VB6's Avatar
    تاريخ عضويت
    Feb 2007
    پست ها
    591

    6

    lucky جان منظورم از شكل اون تغيير مي‌كنه اين بود كه شكل خود اون كنترل تغيير بكنه نه كرسر ماوس.
    در واقع مي‌خوام يه جوري تعيين كنم كه آيا ماوس توي هر لحظه روي كنترل من قرار داره يا نه؟
    مثل commandbutton ويندوز XP كه وقتي ماوس مي‌ره روش يه خط دورش كشيده مي‌شه.

  4. #4
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2007
    پست ها
    18

    پيش فرض

    ببخشید
    البته دوست عزیر ،فرق چندانی هم نداره.از MouseMove استفاده میشه.اما برای تغییر شکل دادن Command می تونید از 2 تا Pictute استفاده کنید و حتی بیشتر.
    اما برای تشخیص مکان موس هم از X,Y موجود در MouseMove استفاده کنید.
    اگر مشکل حل نشد.ایمیل بدید براتون سورس بفرستم

  5. #5
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2007
    پست ها
    18

    پيش فرض

    دوست عزیز این هم یه مثال خیلی ساده:
    یه UserControl بوجود بیارید یک Command به نام Command1 در آن قرار بدید و خاصیت Style آن را روی 1 قرار بدید.و کد زیر را در آن کپی کنید.


    Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Command1.BackColor = &H80C0FF
    End Sub
    Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Command1.BackColor = &H8000000F
    End Sub
    Private Sub UserControl_Resize()
    If (UserControl.Width < 100) Then
    UserControl.Width = 100
    End If

    If (UserControl.Height < 100) Then
    UserControl.Height = 100
    End If

    Command1.Left = 50
    Command1.Top = 50
    Command1.Width = UserControl.Width - 100
    Command1.Height = UserControl.Height - 100
    End Sub

  6. #6
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2007
    پست ها
    18

    پيش فرض

    البته برای تشخیص مکان موس غیر از حالتی که من نوشتم می شه از X,Y هم استفاده کرد.که اگه خواستید بگید براتون ایمیل کنم.
    در کد بالا که براتون نوشتم اگه موس روی Command بره رنگ Command عوض می شه.

  7. #7
    پروفشنال ULF_VB6's Avatar
    تاريخ عضويت
    Feb 2007
    پست ها
    591

    پيش فرض

    سلام، اينايي كه گفتي رو همه رو بلدم.

    به نظر شما اگه سايز UserControl با سايز Command يكي باشه بازم اين كدي كه نوشتي بازم جواب مي‌ده ؟!!
    معلومه كه جواب نمي‌ده.
    به نظر من بايد يه راهي پيدا كرد كه بدون استفاده از mousemove و اينا بشه فهميد كه ماوس كجاي صفحه هست. همين!!!

  8. #8
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2007
    پست ها
    18

    پيش فرض

    دوست عزیز.
    اولاً که بالای کدها نوشتم یه مثال ساده.و براتو ن هم نوشتم اگه می خواهید با مختصات کار کنید بگید براتون بفرستم.چون حجم سورس هایی که دارم زیاده.دوماً که این اتفاق هیچ وقت نمی افته.یعنی هیچ وقت این دوتا یه اندازه نمی شن.اگه به کد دقت کنید متوجه می شید چرا.
    سوم این که این کد یه ایراد دیگه داره.اون هم اینه که اگه دو تا کنترل کاملاً کنار هم قرار بگیرند این روش دیگه جواب نمی ده.و خودم هم از این روش فقط برای بوجود آوردن یه کنترلهای خاص استفاده می کنم.که این اتفاق توشون هرگز نیافته.در هر صورت در اولین فرصت کد مربوط به مختصات رو براتون می ذارم.چون کل Ocx حجمش زیاده.
    موفق باشید.

  9. #9
    پروفشنال ULF_VB6's Avatar
    تاريخ عضويت
    Feb 2007
    پست ها
    591

    4 بالاخره متوجه منظورم شدي!

    دوست عزیز.
    اولاً که بالای کدها نوشتم یه مثال ساده.و براتو ن هم نوشتم اگه می خواهید با مختصات کار کنید بگید براتون بفرستم.چون حجم سورس هایی که دارم زیاده.دوماً که این اتفاق هیچ وقت نمی افته.یعنی هیچ وقت این دوتا یه اندازه نمی شن.اگه به کد دقت کنید متوجه می شید چرا.
    سوم این که این کد یه ایراد دیگه داره.اون هم اینه که اگه دو تا کنترل کاملاً کنار هم قرار بگیرند این روش دیگه جواب نمی ده.و خودم هم از این روش فقط برای بوجود آوردن یه کنترلهای خاص استفاده می کنم.که این اتفاق توشون هرگز نیافته.در هر صورت در اولین فرصت کد مربوط به مختصات رو براتون می ذارم.چون کل Ocx حجمش زیاده.
    موفق باشید.
    منم دو روزه دارم همينو مي‌گم.
    اين روش هميشه جواب نمي‌ده. والا خودم بلدم اين كارو بكنم. و usercontrol رو بزرگتر از بقيه object ها بكنم.
    من دنبال يه روش اصولي هستم كه هميشه جواب بده. شما وقتي يه كامپوننت مي‌نويسي مي‌دي به بقيه ازش استفاده كنن نمي‌توني بهشون بگي كه اينا رو كنار هم نذاريد!!! پسر خوب
    اگه سورسي داري كه هميشه جواب مي‌ده منتظرم. يه جا آپ كن، لينكشو بذار. فعلا.

  10. #10
    پروفشنال ULF_VB6's Avatar
    تاريخ عضويت
    Feb 2007
    پست ها
    591

    6

    سلام
    بالاخره راه حل رو پيدا كردم.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    كلي كتابامو گشتم تا اين تابع GetCursorPos رو پيدا كردم. بعدشم با يه مقدار صرف فسفر اين راه حل به ذهنم رسيد.
    اميدوارم به درد بقيه هم بخوره.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •