راهنمای در مورد حرکت دادن يک shape

saman999

New Member
راهنمای در مورد حرکت دادن يک _ VB shape

سلام به دوستان گل

چطوری ميتونم فرمی طراحی کنم که وقتی يه shape رو فرم باشه اونهارو با کيليد های مکان نما به اينور اونور ببررم؟ ميشه راهنمايی کنيد
 

the_king

مدیرکل انجمن
سلام به دوستان گل

چطوری ميتونم فرمی طراحی کنم که وقتی يه shape رو فرم باشه اونهارو با کيليد های مکان نما به اينور اونور ببررم؟ ميشه راهنمايی کنيد

ابتدا یک Shape روی فرم قرار دهید، مثلا Shape1

کد زیر را قرار دهید( و یا مستقیما مشخصه KeyPreview فرم را True نمایید) تا اگر کنترلی مثل TextBox هم
روی فرم قرار دادید، همچنان کلید های مکان نما Shape را جابجا کنند :
کد:
Private Sub Form_Load()
    KeyPreview = True
End Sub

کد زیر هم چهار کلید مکان نما را برای حرکت دادن Shape1 تعریف می کند :
کد:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
    Case vbKeyLeft
        Shape1.Move Shape1.Left - 30
    Case vbKeyRight
        Shape1.Move Shape1.Left + 30
    Case vbKeyUp
        Shape1.Move Shape1.Left, Shape1.Top - 30
    Case vbKeyDown
        Shape1.Move Shape1.Left, Shape1.Top + 30
    End Select
End Sub
 

saman999

New Member
ممنون از دوست گرامی واسه کمک حالا ميشه کاری کرد که به ديوار فرم خورد بيشتر نره اونور تر؟ ممنون بازم
 

the_king

مدیرکل انجمن
ممنون از دوست گرامی واسه کمک حالا ميشه کاری کرد که به ديوار فرم خورد بيشتر نره اونور تر؟ ممنون بازم

صد البته، طول و عرض فرم با Width و Height مشخص میشه، اما چون این طول و عرض شامل کادر دور فرم
هم میشه، بایستی قسمت حاشیه دور فرم را از این ابعاد کسر کرد. برای بدست آوردن ابعاد دقیق فرم،
یک PictureBox را بصورت مخفی در گوشه پایین-راست فرم نگه می داریم. موقعیت این PictureBox می تواند
ابعاد واقعی فرم را نشان دهد.

برای آنکه موقعیت Shape از مقدار هایی کمتر یا بیشتر نشود، دو تابع Min و Max را تعریف کردم تا مقدار دهی
ساده تر شود.

کد:
Dim PicBox As PictureBox

Private Sub Form_Load()
    Set PicBox = Controls.Add("VB.PictureBox", "PicBox")
    KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
    Case vbKeyLeft
        Shape1.Move Max(Shape1.Left - 30, 0)
    Case vbKeyRight
        Shape1.Move Min(Shape1.Left + 30, PicBox.Left + PicBox.Width - Shape1.Width)
    Case vbKeyUp
        Shape1.Move Shape1.Left, Max(Shape1.Top - 30, 0)
    Case vbKeyDown
        Shape1.Move Shape1.Left, Min(Shape1.Top + 30, PicBox.Top + PicBox.Height - Shape1.Height)
    End Select
End Sub

Private Function Min(a As Single, b As Single) As Single
    Min = IIf(a < b, a, b)
End Function

Private Function Max(a As Single, b As Single) As Single
    Max = IIf(a > b, a, b)
End Function

Private Sub Form_Resize()
    PicBox.Align = vbAlignBottom
    PicBox.Align = vbAlignRight
End Sub
 

saman999

New Member
ممنون از دوست عزيز بابت پاسخگويی سريع:rose:

اما دوست گرامی اين کد وقتی اجرا ميکنه اون shap که گزاشته بودم نا پديد ميشه و نيست ديگه روی فرم و وقتی از دکمه های مکان نما استفاده ميکنه eror ميده شايد من بد متوجه شدم ميشه پرژه رو ضميمه کنيد ممنون
 

saman999

New Member
دوست گرامی آقای king ميشه برنامرو جوری تغيير بديد که اگه shape بخوره به ديواره فرم يه msg box بياد ممنون از شما
 

the_king

مدیرکل انجمن
ممنون از دوست عزيز بابت پاسخگويی سريع:rose:

اما دوست گرامی اين کد وقتی اجرا ميکنه اون shap که گزاشته بودم نا پديد ميشه و نيست ديگه روی فرم و وقتی از دکمه های مکان نما استفاده ميکنه eror ميده شايد من بد متوجه شدم ميشه پرژه رو ضميمه کنيد ممنون
نمی دونم کجای کار اشتباه کردید، به هر حال پروژه رو ضمیمه کردم.

دوست گرامی آقای king ميشه برنامرو جوری تغيير بديد که اگه shape بخوره به ديواره فرم يه msg box بياد ممنون از شما

اون بخش Min و Max رو با یک روتین به اسم MoveShape تعویض کردم که اگه محدودیت X و Y رعایت نشده باشه،
بجای تصحیح مقادیر، پیغامی رو نمایش بده.

کد کامل برنامه به همراه فایل اجرایی exe ضمیمه این پست می باشد.
 

پیوست ها

  • Move Shape.zip
    5 کیلوبایت · بازدیدها: 3

saman999

New Member
سلام دوست گرامی من يه پرژه دانلود کردم که به شکل زير ضميمه کردم

ميخواستم چندتا چيز بهش اضافه کنم

1. بشه اگه فرم هم muximize بشه توپ بخوره بهش و پيغام بده

2. سرعت توپ رو بشه با دوتا دکمه کمو زياد کرد

3. مختصات که توپ ميره نشون بده



ممنون از شما
 

پیوست ها

  • Project.rar
    2.4 کیلوبایت · بازدیدها: 5

the_king

مدیرکل انجمن
سلام دوست گرامی من يه پرژه دانلود کردم که به شکل زير ضميمه کردم

ميخواستم چندتا چيز بهش اضافه کنم

1. بشه اگه فرم هم muximize بشه توپ بخوره بهش و پيغام بده

2. سرعت توپ رو بشه با دوتا دکمه کمو زياد کرد

3. مختصات که توپ ميره نشون بده



ممنون از شما

کد اش زیاد اصولی نبود، ویرایش کردم اش و تکمیل شد.

کد کامل پروژه به همراه فایل اجرایی ضمیمه این پست گردید.
 

پیوست ها

  • Project1.zip
    8.9 کیلوبایت · بازدیدها: 3

saman999

New Member
ممنون از دوست عزيز واقعاً ممنون کارم را افتاد نهايت تشکر را دارم :rose::rose::rose::oops::oops:
 

ebiiiii_600

New Member
salam be doostane aziz agha ye soale : mikham ye shape 4 gush ruye zele ye 4 gushe bozorgtar harkat kone va dar hale charkhesh taghire rang ham bede, mamnun age rahnamaiim konid
 

جدیدترین ارسال ها

بالا