واضح آرشیو وب فارسی:سایت ریسک: ULF_VB 618-07-2007, 07:06 PMسلام به همه دوستان عزيز من ميخوام يه ocx بنويسم كه وقتي ماوس روي اون قرار ميگيره شكل اون تغيير ميكنه و وقتي از محدوده كنترل خارج شد شكلش به حالت اول برگرده. حالا مشكل اينجاست كه نميدونم چجوري بايد مشخص كنم كه كرسر روي كنترل قرار داره يا نه؟ اگه راهنماييم كنيد ممنون ميشم. البته مطمئنم كه ميشه همچين كاري رو انجام داد ولي چجوريش رو نميدونم. چون كنترلهايي هستن كه اينكار رو انجام ميدن. lucky_002020-07-2007, 02:10 AMدر کد مربوط به UserControl کد زیر را وارد کنید و به جای 3شماره شکل مورد نظر خودتون رو بگذاری. Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) UserControl.MousePointer = 3 End Sub موفق باشید. ULF_VB 620-07-2007, 12:05 PMlucky جان منظورم از شكل اون تغيير ميكنه اين بود كه شكل خود اون كنترل تغيير بكنه نه كرسر ماوس. در واقع ميخوام يه جوري تعيين كنم كه آيا ماوس توي هر لحظه روي كنترل من قرار داره يا نه؟ مثل commandbutton ويندوز XP كه وقتي ماوس ميره روش يه خط دورش كشيده ميشه. lucky_002020-07-2007, 05:43 PMببخشید:31: البته دوست عزیر ،فرق چندانی هم نداره.از MouseMove استفاده میشه.اما برای تغییر شکل دادن Command می تونید از 2 تا Pictute استفاده کنید و حتی بیشتر. اما برای تشخیص مکان موس هم از X,Y موجود در MouseMove استفاده کنید. اگر مشکل حل نشد.ایمیل بدید براتون سورس بفرستم lucky_002020-07-2007, 06:05 PMدوست عزیز این هم یه مثال خیلی ساده: یه UserControl بوجود بیارید یک Command به نام Command 1 در آن قرار بدید و خاصیت Style آن را روی 1 قرار بدید.و کد زیر را در آن کپی کنید. Private Sub Command 1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Command 1.BackColor = &H80C0FF End Sub Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Command 1.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 Command 1.Left = 50 Command 1.Top = 50 Command 1.Width = UserControl.Width - 100 Command 1.Height = UserControl.Height - 100 End Sub lucky_002020-07-2007, 06:08 PMالبته برای تشخیص مکان موس غیر از حالتی که من نوشتم می شه از X,Y هم استفاده کرد.که اگه خواستید بگید براتون ایمیل کنم. در کد بالا که براتون نوشتم اگه موس روی Command بره رنگ Command عوض می شه. ULF_VB 621-07-2007, 08:55 AMسلام، اينايي كه گفتي رو همه رو بلدم. به نظر شما اگه سايز UserControl با سايز Command يكي باشه بازم اين كدي كه نوشتي بازم جواب ميده ؟!! معلومه كه جواب نميده. به نظر من بايد يه راهي پيدا كرد كه بدون استفاده از mousemove و اينا بشه فهميد كه ماوس كجاي صفحه هست. همين!!! lucky_002021-07-2007, 05:53 PMدوست عزیز. اولاً که بالای کدها نوشتم یه مثال ساده.و براتو ن هم نوشتم اگه می خواهید با مختصات کار کنید بگید براتون بفرستم.چون حجم سورس هایی که دارم زیاده.دوماً که این اتفاق هیچ وقت نمی افته.یعنی هیچ وقت این دوتا یه اندازه نمی شن.اگه به کد دقت کنید متوجه می شید چرا. سوم این که این کد یه ایراد دیگه داره.اون هم اینه که اگه دو تا کنترل کاملاً کنار هم قرار بگیرند این روش دیگه جواب نمی ده.و خودم هم از این روش فقط برای بوجود آوردن یه کنترلهای خاص استفاده می کنم.که این اتفاق توشون هرگز نیافته.در هر صورت در اولین فرصت کد مربوط به مختصات رو براتون می ذارم.چون کل Ocx حجمش زیاده. موفق باشید. ULF_VB 621-07-2007, 07:22 PMدوست عزیز. اولاً که بالای کدها نوشتم یه مثال ساده.و براتو ن هم نوشتم اگه می خواهید با مختصات کار کنید بگید براتون بفرستم.چون حجم سورس هایی که دارم زیاده.دوماً که این اتفاق هیچ وقت نمی افته.یعنی هیچ وقت این دوتا یه اندازه نمی شن.اگه به کد دقت کنید متوجه می شید چرا. سوم این که این کد یه ایراد دیگه داره.اون هم اینه که اگه دو تا کنترل کاملاً کنار هم قرار بگیرند این روش دیگه جواب نمی ده.و خودم هم از این روش فقط برای بوجود آوردن یه کنترلهای خاص استفاده می کنم.که این اتفاق توشون هرگز نیافته.در هر صورت در اولین فرصت کد مربوط به مختصات رو براتون می ذارم.چون کل Ocx حجمش زیاده. موفق باشید. منم دو روزه دارم همينو ميگم. اين روش هميشه جواب نميده. والا خودم بلدم اين كارو بكنم. و usercontrol رو بزرگتر از بقيه object ها بكنم. من دنبال يه روش اصولي هستم كه هميشه جواب بده. شما وقتي يه كامپوننت مينويسي ميدي به بقيه ازش استفاده كنن نميتوني بهشون بگي كه اينا رو كنار هم نذاريد!!! پسر خوب اگه سورسي داري كه هميشه جواب ميده منتظرم. يه جا آپ كن، لينكشو بذار. فعلا. ULF_VB 624-07-2007, 11:47 AMسلام بالاخره راه حل رو پيدا كردم. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! كلي كتابامو گشتم تا اين تابع GetCursorPos رو پيدا كردم. بعدشم با يه مقدار صرف فسفر اين راه حل به ذهنم رسيد. اميدوارم به درد بقيه هم بخوره. :11: سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 442]