# Native Code > برنامه نویسی در 6 VB > کامپوننت ها و ابزارهای کاربردی در VB6 >  آموزش ساخت Button

## hossein71

سلام دوستان عزیز
می خواستم بیبنم چطوری میشه یک button ساخت که وقتی موس روی قسمتی از اون میره عکس button عوض بشه و وقتی موس روی button نیست عکسش به حالت اولیه برگرده؟(سرچ کردم اما بدردم نخورد)

----------


## parselearn

كنترلي كه در اينجا هست
https://barnamenevis.org/showpo...&postcount=379

كنترلي داره به نام Mouse Out كه مي تونيد ازش استفاده كنيد

----------


## aryasoft2872

با اکتیوایکس sonic clickultra:
پست مربوطه

----------


## hossein71

> كنترلي كه در اينجا هست
> https://barnamenevis.org/showpo...&postcount=379
> 
> كنترلي داره به نام Mouse Out كه مي تونيد ازش استفاده كنيد


اگر درباره کد های نوشته در بخش Mouse Out توضیحاتی بدید خیلی ممنون میشم.

----------


## parselearn

شما با كدهاي داخل كنترل كاري نداشته باشيد

براي نسبت دادن يك كنترل و زير نظر گرفتنش اين طوري عمل كنيد
مثلا PictureBox   (كنترل بايد داراي Hwnd باشه)


Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
MOut.LookFor Picture1
End Sub


بعد از نسبت دادن مي تونيد با رويدادهاي كنترل كار كنيد


Private Sub MOut_Click()
Caption = "Click"
End Sub

Private Sub MOut_MouseOut()
Caption = "Mouse Out"
End Sub

Private Sub MOut_MouseOver()
Caption = "Mouse Over"
End Sub

----------


## hossein71

ضمن تشکر از parselearn.
من می خوام خودم یک کنترل بسازم که ویژگی های پست 1 رو داشته باشه و داخل فرم نیازی به تحت نظر گرفتنش نباشه.

----------


## parselearn

كنترل Mouse Out رو شما در User Control استفاده مي كنيد
و كاربر اونو نمي بينه

در ضمن كنترلهاي VB6 خصوصيتي براي Mouse Out ندارند و بايد شبيه سازي بشوند
خصوصيت Public كنترل MO رو تغيير بديد
خروجي هم ocx باشه كاربر كنترل ديگري رو نمي بينه

موفق باشيد

----------


## hossein71

من دوتا Image دارم که که روی همدیگه قرار دارند.حالا من می خوام وقتی موس رفت روی Image ،عکس اولی ناپدید و عکس دومی ظاهر بشه و اگر موس کنار رفت به حالت اولیه برگرده.
من با کد زیر این کارو کردم اما کنترل هاشوری میشه و ارور میده.اگر اینم جواب بدید شرمندتون میشم.

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
MouseOut1.LookFor Image1
End Sub

Private Sub MouseOut1_MouseOver()
Image1.Visible = False
Image2.Visible = True
End Sub

----------


## parselearn

(كنترل بايد داراي Hwnd باشه)

----------


## hossein71

Hwnd چیه؟کجاست؟

----------


## parselearn

منظورم هندل هست
كه كنترلهايي مانند PictureBox يا ComandButton داره
و كنترل ImageBox نداره

البته اين به خاطر اينه كه اين كد با اين خاصيت كار مي كنه

Command1.Hwnd

----------


## hossein71

آخه این عکسی می خوام برای دکمم انتخاب کنم دایره ای شکله و دورش نامرئی هست و این خصوصیت فقط با Image قابل انجامه.(در PictureBox دور عکس سفید میشه)
در تاپیک دیگری یکی از دوستان گفته بودن که از Lavolpe Alpha Image Control استفاده کنم اما پیداش نکردم.

----------


## earse+erse

> ...اما پیداش نکردم.


بیا عزیز دل برادر
بهترین نوع اکتیواکس برای کار با PNG هستش و امکان حرکت دادن هم داره و هندل هم داره

اگه به دردت خورد برام دعا کن امتحان ها خراب نکرده باشم!

با تشکر

----------


## parselearn

https://barnamenevis.org/showth...png#post594839
https://barnamenevis.org/showth...png#post740004
https://barnamenevis.org/showth...png#post865848
https://barnamenevis.org/showth...png#post995529

----------


## hossein71

این کنترل رو چگونه وارد کنترل خودم بکنم.(AlphaImageControl.ocx رو نمیزاره وارد کنترل خودم بکنم ارور میده)

----------


## earse+erse

این ته کمکیه که می تونم بهت بکنم

----------


## hossein71

یک سوال بسیار بسیار مبتدیانه:وقتی فایل ctl رو وارد پروژه ام میکنم وقتی میخوام ازش فایل ocx درست کنم به جای اون فایل exe درست میکنه و هنگام سیو کردن پروژه هم به خطی خاص گیر میده.

----------


## earse+erse

> یک سوال بسیار بسیار مبتدیانه:وقتی فایل ctl رو وارد پروژه ام میکنم وقتی میخوام ازش فایل ocx درست کنم به جای اون فایل exe درست میکنه و هنگام سیو کردن پروژه هم به خطی خاص گیر میده.


 تو باید Project Type پروژه ات رو از Standard EXE به  ActiveX Control تغییر بدی

رو آیکون پروژه از درون ابزار Project کلیک راست کن و Project Properties رو انتخاب کن و کار های بالا رو انجام بده.
 :بوس:

----------


## hossein71

وقتی می خوام خروجی ocx بگیرم.ارورمیده میگه F1 رو بزن.وقتی F1 رو میزنم ارور MSDN میده.

----------


## parselearn

خصوصيت Public را تغيير دهيد.
(اين يكي از مشكلات در اين مواقع است، ممكنه اشكال از جاي ديگه اي باشه)

----------


## hossein71

وقتی خاصیت public رو True کردم دیگه ارور بالا رو نمیده اما یه پیغام دیگه میده و به خط 268(Implements ICrossComm) گیر میده.

----------


## parselearn

بعضي خصوصيات هستند كه نمي تونند Public باشند

(فكر مي كنم شما از LaVolpe AlphaImage Control.zip‏ استفاده ميكنيد. قبلا چنين مشكلي رو من داشتم)

----------


## hossein71

راه حلش چیه؟

----------


## parselearn

من راه حلي براي اين مساله ندارم  :ناراحت:

----------


## hossein71

شما در پست های بالا فرمودین قبلا این مشکلو داشتین،مشکلتون چطوری حل شد؟

----------


## parselearn

من مجبور شدم از پايه كنترلم رو خودم بنويسم
كه نمونش اينجا هست
https://barnamenevis.org/showpo...&postcount=379

----------


## amir200h

> سلام دوستان عزیز
> می خواستم بیبنم چطوری میشه یک button ساخت که وقتی موس روی قسمتی از اون میره عکس button عوض بشه و وقتی موس روی button نیست عکسش به حالت اولیه برگرده؟(سرچ کردم اما بدردم نخورد)


امیدوارم به کارت بیاد


تشکر یادت نره :قلب:

----------


## hossein71

ضمن تشکر بسیار از دوستان عزیز،جناب 
amir200h,aryasoft2872,parselearn,earse+erse

با راهنمایی هایی که دوستان فرمودن من امتحان کردم و با شی Picture جواب داد اما انگار شی LaVolpe AlphaImage Control‏ خاصیت Hwnd نداره چون ارور میداد و کامپوننت رو هاشوری می کرد.

----------


## hossein71

بالاخره مشکلم حل شد. :لبخند: 
در لینک زیر(بخش ابزارهای اکتیوایکس کاربردی و زیبا) که براتون گذاشتم همه خصوصیاتی که می خواستم داره.
ویژگی ها:
1-خاصیت Hwnd
2-خاصیت Streatch
3-محو کردن اطراف عکس(ساخت دکمه با اشکال متفاوت)
نام کنترل:hbAniGIF.ocx

http://www.barnamenevis.org/sh...ht=gif&page=26

----------

